pax_global_header00006660000000000000000000000064145127453360014524gustar00rootroot0000000000000052 comment=d766e761ff8f99d97927159f28686d88371d9c9e lomiri-music-app-v3.0.3/000077500000000000000000000000001451274533600151045ustar00rootroot00000000000000lomiri-music-app-v3.0.3/.gitignore000066400000000000000000000004031451274533600170710ustar00rootroot00000000000000*.qmlproject.user* debian/files debian/tmp debian/music-app* debian/app-template/ debian/*.debhelper.log debian/*.substvars .build Makefile CMakeCache.txt CMakeFiles/ *.cmake *.gmo *.mo *.desktop *.desktop.in *.desktop.in.in.h .excludes music-app.json build/ lomiri-music-app-v3.0.3/.gitlab-ci.yml000066400000000000000000000007331451274533600175430ustar00rootroot00000000000000build: artifacts: expire_in: 1 week paths: - build/all/app/*.click image: "clickable/ci-20.04-armhf" rules: - if: $CI_COMMIT_TAG == null script: - clickable build --clean --accept-review-errors publish: artifacts: expire_in: 1 week paths: - build/all/app/*.click image: "clickable/ci-20.04-armhf" rules: - if: $CI_COMMIT_TAG script: - clickable build --clean --accept-review-errors - clickable publish "$CI_COMMIT_MESSAGE" lomiri-music-app-v3.0.3/AUTHORS000066400000000000000000000041461451274533600161610ustar00rootroot00000000000000Abdullah AL Shohag Abidin Toumi Adolfo Jayme Barrientos Adria Adrià Advocatux Aitzol Berasategi Akiva Avraham Alan Pope Alexey Balmashnov Allan Nordhøy Anastopoulos Theocharis Andrew Hayzen Anne Onyme Anonymous Anthony Wong ArashiHino Arda Canbolat Arvid Brodin Asahi 95 Aurelio Cilia Bartosz Kosiorek Benjamin Zeller Beton Bill Filler Bittin1ddc447d824349b2 Bjarne Roß Boren Zhang Brian Douglass Brînzariu Cristian Carla Sella Chris Gagnon Dalton Durst Dan Danfro Daniel Frańczak Daniel Frost Daniel Holm DanielHolm Daniel Kessel Dano6 DarkEye David Planella Dimitri John Ledkov Dmitriy Pushkov Efstathios Iosifidis Ennio Lavagnini Enolp Eran Ettore Atalan Florian Boucault Florian Leeber Francisco Molinero Francis Ginther Gallegonovato Ghostranger Gianmarco Girish Rawat Gnu-ewm Guenter Schwann Guido Berhoerster Heimen Stoffels Henrik Holm Hensip Hosted Weblate HSN80 Hussain Hashem Aljafri Iarla Ȯ'Riada Ierihon Ivan Semkin Ivo Xavier Jamie Strandboge Jason Gerlowski Jaume Angrill Jeff Jim Hodapp Jiri Grönroos J Lavoie Joan CiberSheep Joeke De Graaf Jonatan Hatakeyama Zeidler Jozef Mlich Ken VanDine Leo Arias Lionel Duboeuf Loïc Minier Louies Louies0623 Luna Jernberg Lundrin Lxdb Maor26 Mappack Owner Marius Gripsgard Mateosalta Mevlüt Erdem Güven Mhall119 Michael Spencer Mike Mike Gabriel Milan Korecký Moo M Sugahara Muhammad Mutse Young Nekhelesh Ramananthan Nelly Simkova Neutrum N Nicholas Skaggs Noock Nskaggs Oi Suomi On! Øjvind Fritjof Arnfred Olli Ries Omer Akram Pablo Foche Pavel Borecki Pawel Stolowski Peter Nerlich Peter Valachovič P -H Lin Phlostically Pietre Raphaël Fery RedXXIII Rekols Riccardo Riccio Rondy Andersson Rúben Carneiro Rüdiger Kupper Rudra Harsh V Singh Ryan Argente Samer Masterson Sam Hewitt Sami Törmänen Samson Sander Sergii Horichenko Sergio Reyes Sergio Schvezov SongInseo Stefano-2 Stefano Melchior Stefano Verzegnassi Stoian Minaiev Suntron Sylke Vicious Taka Turgut Tamer Dab Ted Gould Temuri Doghonadze Terence Sambo Timothy G Tim Peeters Tom Dom Tom Rausner Twinkybot Ubports_arabic Víctor R Ruiz Victor Thompson Vinícius F Walter Garcia-Fontes Weblate Yasser Lotfy Young Kim lomiri-music-app-v3.0.3/CMakeLists.txt000066400000000000000000000063141451274533600176500ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.5) project(lomiri-music-app VERSION 3.0.3 LANGUAGES CXX) include(FindGettext) if(NOT GETTEXT_FOUND) message(FATAL_ERROR "Could not find gettext") endif(NOT GETTEXT_FOUND) # Standard install paths include(GNUInstallDirs) option(INSTALL_TESTS "Install the tests on make install" off) option(CLICK_MODE "Installs to a contained location" on) set(CLICK_NAME music.ubports) set(APP_NAME music) set(DESKTOP_FILE "${PROJECT_NAME}.desktop") set(URLS_FILE "${CLICK_NAME}_${APP_NAME}.url-dispatcher") set(APP_HARDCODE lomiri-music-app) set(MAIN_QML app/music-app.qml) set(ICON_FILE app/graphics/music-app.svg) set(SPLASH_FILE app/graphics/music-app-splash.svg) set(AUTOPILOT_DIR lomiri_music_app) set(MANIFEST_PATH "manifest.json.in" CACHE INTERNAL "Tell QtCreator location and name of the manifest file") if(CLICK_MODE) set(CMAKE_INSTALL_PREFIX /) set(CMAKE_INSTALL_BINDIR /) set(DATA_DIR /) set(ICON ${ICON_FILE}) set(SPLASH ${SPLASH_FILE}) set(EXEC "lomiri-music-app-migrate.py qmlscene -qt5 ${MAIN_QML} --url=%u -I ./plugins") set(DESKTOP_DIR ${DATA_DIR}) set(URLS_DIR ${DATA_DIR}) configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json apparmor.json music-app-content.json DESTINATION ${CMAKE_INSTALL_PREFIX}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE} DESTINATION ${DESKTOP_DIR}) install(FILES ${URLS_FILE} DESTINATION ${URLS_DIR}) else(CLICK_MODE) set(DATA_DIR ${CMAKE_INSTALL_DATADIR}/${APP_HARDCODE}) set(EXEC ${APP_HARDCODE}) set(ICON ${CMAKE_INSTALL_PREFIX}/${DATA_DIR}/${ICON_FILE}) configure_file(${APP_HARDCODE}.in ${CMAKE_CURRENT_BINARY_DIR}/${APP_HARDCODE}) install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${APP_HARDCODE} DESTINATION ${CMAKE_INSTALL_BINDIR}) set(DESKTOP_DIR ${CMAKE_INSTALL_DATADIR}/applications) set(URLS_DIR ${CMAKE_INSTALL_DATADIR}/lomiri-url-dispatcher/urls) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE} DESTINATION ${DESKTOP_DIR}) install(FILES music-app-content.json DESTINATION ${CMAKE_INSTALL_DATADIR}/content-hub/peers/ RENAME music-app) install(FILES ${URLS_FILE} DESTINATION ${URLS_DIR}) endif(CLICK_MODE) file(GLOB SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml *.js *.png *.js) install(DIRECTORY app DESTINATION ${DATA_DIR}) install(FILES ${SRC_FILES} ${ICON_FILE} DESTINATION ${DATA_DIR}) install(PROGRAMS lomiri-music-app-migrate.py DESTINATION ${DATA_DIR}) configure_file(${DESKTOP_FILE}.in.in ${DESKTOP_FILE}.in) add_custom_target(${DESKTOP_FILE} ALL COMMENT "Merging translations into ${DESKTOP_FILE}..." COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --desktop --template=${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}.in -o ${DESKTOP_FILE} -d ${CMAKE_SOURCE_DIR}/po ) # Tests enable_testing() add_subdirectory(app) add_subdirectory(po) add_subdirectory(tests) # make the qml files visible on qtcreator file(GLOB QML_JS_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml *.js README* *.url-dispatcher *.txt) add_custom_target(music_ubports_QMLFiles DEPENDS music-app.qml SOURCES ${QML_JS_FILES}) lomiri-music-app-v3.0.3/ChangeLog000066400000000000000000014514001451274533600166630ustar00rootroot000000000000002023-10-15 Mike Gabriel * Release 3.0.3 (HEAD -> main, tag: v3.0.3) 2023-09-06 bittin1ddc447d824349b2 * Translated using Weblate (Swedish) (02adb7e8) 2023-07-17 Lionel Duboeuf * Do not override default flick velocity when QT AUTO Scale is ON fixes https://gitlab.com/ubports/development/apps/lomiri-music-app/-/issues/96 (e277baeb) 2023-08-13 Abdullah AL Shohag * Translated using Weblate (Bengali (Bangladesh)) (24c7a498) 2023-07-21 abidin toumi * Translated using Weblate (Arabic) (35f15143) 2023-06-30 Rudra Harsh V.Singh * Translated using Weblate (Sanskrit) (7d158d7c) * Added translation using Weblate (Sanskrit) (e3d7ae9a) 2023-06-27 Rudra Harsh V.Singh * Translated using Weblate (English (Canada)) (6a75ae15) 2023-06-26 Rudra Harsh V.Singh * Translated using Weblate (Hindi) (4827060b) 2023-06-28 J. Lavoie * Translated using Weblate (French) (de642205) * Translated using Weblate (German) (e73a34bc) 2023-06-06 Guido Berhoerster * Merge branch 'add_ignore_review' into 'main' (301a8ada) 2023-03-30 Danfro * add ignore review errors to clickable.yaml to allow local building (6cf94329) 2023-04-14 Lundrin * Translated using Weblate (Hungarian) (7c6224c5) 2023-04-12 Temuri Doghonadze * Translated using Weblate (Georgian) (40ca3fad) 2023-04-11 Temuri Doghonadze * Translated using Weblate (Georgian) (f5f18263) * Translated using Weblate (Georgian) (235b32ca) 2023-04-04 gallegonovato * Translated using Weblate (Spanish) (0528fabc) 2023-03-31 Sylke Vicious * Translated using Weblate (Italian) (102e7584) 2023-03-30 Sylke Vicious * Translated using Weblate (Italian) (69c0c320) 2023-03-30 Jozef Mlich * Translated using Weblate (Czech) (526f5485) 2023-03-29 Jozef Mlich * Translated using Weblate (Czech) (70f1912d) 2023-03-22 phlostically * Translated using Weblate (Esperanto) (0652518e) 2023-03-15 Mike Gabriel * Merge branch 'personal/gberh/click-migrate' into 'main' (95498a6c) 2023-02-28 Guido Berhoerster * Use session-migration for migration in Debian (a1a27454) 2023-02-24 Guido Berhoerster * Add migrations to manifest (dba9001a) * Add migration wrapper script (7a1bec5b) 2023-03-05 Asahi 95 * Translated using Weblate (Japanese) (e6edcdd9) 2023-02-26 Luna Jernberg * Translated using Weblate (Swedish) (fb66bd84) 2023-02-27 Guido Berhoerster * Release 3.0.2 (be7dfcf6) (tag: v3.0.2) 2023-02-20 Sergii Horichenko * Translated using Weblate (Ukrainian) (51b2fdbf) * Translated using Weblate (Russian) (db022138) 2023-02-21 Heimen Stoffels * Translated using Weblate (Dutch) (41424e3b) 2023-02-16 phlostically * Translated using Weblate (Esperanto) (96481d5b) 2023-02-14 Luna Jernberg * Translated using Weblate (Swedish) (f46ed45e) 2023-02-15 Adolfo Jayme Barrientos * Translated using Weblate (Spanish) (f92a0940) 2023-02-15 Mike Gabriel * po/: Drop ku.po in favour of ckb.po/kmr.po/sdh.po as suggested by Weblate. (3a2852aa) 2023-02-04 Mike Gabriel * Translated using Weblate (German) (ecaae0d0) 2023-02-03 Guido Berhoerster * Release 3.0.1 (d9075d32) (tag: v3.0.1) 2023-02-03 Mike Gabriel * Merge branch 'personal/gberh/gettext-domain' into 'main' (2cff9ec9) 2023-02-03 Guido Berhoerster * Explicitly set gettext domain (3470cfab) 2023-01-31 Mike Gabriel * Translated using Weblate (German) (9efb321b) 2023-01-30 Ivo Xavier * Translated using Weblate (Portuguese) (5c92c360) 2023-01-24 gnu-ewm * Translated using Weblate (Polish) (5b947304) 2023-01-21 Sergii Horichenko * Translated using Weblate (Ukrainian) (f4a019c4) * Translated using Weblate (Ukrainian) (23df6335) 2023-01-20 Sergii Horichenko * Translated using Weblate (Russian) (d5146473) 2023-01-19 Hosted Weblate * Update translation files (f40ea4f2) 2023-01-18 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (76846be2) 2023-01-18 Guido Berhoerster * Release 3.0.0 (8759c338) (tag: v3.0.0) * Update .pot file (b9ef425b) 2023-01-16 Ivo Xavier * Translated using Weblate (Portuguese) (adc31ae3) 2023-01-15 Sergii Horichenko * Translated using Weblate (Ukrainian) (6b22b7bb) 2023-01-14 Dan * Translated using Weblate (Ukrainian) (046343c5) * Translated using Weblate (Ukrainian) (58a85d7f) 2023-01-13 Sergii Horichenko * Translated using Weblate (Ukrainian) (abdcfc1e) 2023-01-14 Dan * Translated using Weblate (Ukrainian) (e8fc8f5b) 2023-01-13 Sergii Horichenko * Translated using Weblate (Russian) (14356918) 2023-01-13 Ivo Xavier * Translated using Weblate (Portuguese) (49021588) 2023-01-13 Timothy G * Translated using Weblate (French) (792e63c2) 2023-01-13 Mike Gabriel * Merge branch 'main_-_chcopy' into 'main' (6d7db4d1) 2022-03-22 Lionel Duboeuf * Prevent issue with Popup on open/close (7809eeec) 2022-03-17 Lionel Duboeuf * Use copy instead of move method from content-hub (e5f0d174) 2023-01-11 Dan * Translated using Weblate (Ukrainian) (61f05b47) 2023-01-12 Mike Gabriel * Merge branch 'personal/gberh/cleanup' into 'main' (1918e64f) 2023-01-09 Guido Berhoerster * Update instructions for translators (3118d1b1) * Update README.md (78222737) * Remove obsolete BZR_REVNO and BZR_SOURCE (2b668b3c) * Update CMake requirements (6bd4fc47) 2023-01-10 Dan * Translated using Weblate (Ukrainian) (450fb280) 2023-01-04 Muhammad * Translated using Weblate (Urdu) (b953d9a1) 2023-01-06 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (003d4b67) 2023-01-06 Daniel Frost * Translated using Weblate (German) (a47dccbf) 2023-01-04 Muhammad * Translated using Weblate (Urdu) (e7208f70) 2023-01-04 Anonymous * Translated using Weblate (Urdu) (ec1ae6ec) 2023-01-04 Muhammad * Translated using Weblate (Urdu) (14d5f4b9) 2023-01-04 Anonymous * Translated using Weblate (Ido) (c0b7f986) * Translated using Weblate (Tetum) (b6d3bf16) * Translated using Weblate (Scots) (dadbb97f) * Translated using Weblate (Franco-Provençal) (e66534c7) * Translated using Weblate (Sindhi) (71fcd7c7) * Translated using Weblate (Pampanga) (b2d17822) * Translated using Weblate (Malagasy) (721082cf) * Translated using Weblate (Kabyle) (105929b1) * Translated using Weblate (Luxembourgish) (136e616e) * Translated using Weblate (French (Switzerland)) (3f66f527) * Translated using Weblate (Tajik) (07d74351) * Translated using Weblate (Lojban) (8987d689) * Translated using Weblate (Lingala) (163b4230) * Translated using Weblate (Oromo) (7e99c6ff) * Translated using Weblate (Bemba) (1f5f8540) * Translated using Weblate (Nyanja) (91204b1a) * Translated using Weblate (Turkmen) (e85d621d) * Translated using Weblate (Friulian) (52fe2b8c) * Translated using Weblate (Macedonian) (05c33672) * Translated using Weblate (Chinese (Min Nan)) (7e1f04e8) * Translated using Weblate (Kurdish (Southern)) (84078223) * Translated using Weblate (Kurdish (Northern)) (00360506) * Translated using Weblate (Dhivehi) (aba91181) * Translated using Weblate (Telugu) (29d8177e) * Translated using Weblate (Sinhala) (f0a2cd6c) * Translated using Weblate (Shan) (2f3fd877) * Translated using Weblate (Pashto) (648308f7) 2023-01-04 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (e8714492) 2023-01-04 Anonymous * Translated using Weblate (Burmese) (6e65d7d7) * Translated using Weblate (Marathi) (5430b21d) * Translated using Weblate (Malayalam) (acba011a) * Translated using Weblate (Maori) (7888c9e0) * Translated using Weblate (Lao) (2c13e8bd) * Translated using Weblate (English (United States)) (1d4e0eb3) * Translated using Weblate (Kurdish (Central)) (4f0e79e2) * Translated using Weblate (Bulgarian) (b9f4df70) 2023-01-04 Mike Gabriel * Revert "Deleted translation using Weblate (Chinese (Traditional, Hong Kong))" (47921069) * Revert "Added translation using Weblate (Chinese (Traditional, Hong Kong))" (76a39515) 2023-01-04 Weblate * Added translation using Weblate (Chinese (Traditional, Hong Kong)) (21aa0ff3) 2023-01-03 Muhammad * Translated using Weblate (Urdu) (af888605) 2023-01-04 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (3ce1d4af) 2023-01-04 Mike Gabriel * Deleted translation using Weblate (Chinese (Traditional, Hong Kong)) (d4a442e2) 2023-01-04 Hosted Weblate * Update translation files (8811604a) 2023-01-03 Weblate * Added translation using Weblate (Urdu) (9b552b16) * Added translation using Weblate (Ido) (9ef9d560) * Added translation using Weblate (Tetum) (6555a2ed) * Added translation using Weblate (Scots) (76e8ba0b) * Added translation using Weblate (Franco-Provençal) (79770129) * Added translation using Weblate (Sindhi) (b44259db) * Added translation using Weblate (Pampanga) (c7294319) * Added translation using Weblate (Malagasy) (4d8831fd) * Added translation using Weblate (Kabyle) (5099de1e) * Added translation using Weblate (Luxembourgish) (b69c38d5) * Added translation using Weblate (French (Switzerland)) (702c2a1a) * Added translation using Weblate (Tajik) (11d7207d) * Added translation using Weblate (Lojban) (b86a221d) * Added translation using Weblate (Lingala) (dffc3df8) * Added translation using Weblate (Oromo) (db8ce344) 2023-01-03 Hosted Weblate * Update translation files (184f5315) 2023-01-03 Weblate * Added translation using Weblate (Bemba) (23019878) * Added translation using Weblate (Nyanja) (45608f13) 2023-01-03 Hosted Weblate * Update translation files (28b68dca) 2023-01-02 Weblate * Added translation using Weblate (Turkmen) (86072822) * Added translation using Weblate (Friulian) (ac1070f3) * Added translation using Weblate (Macedonian) (1b714947) * Added translation using Weblate (English (Canada)) (2d664259) 2023-01-02 Mike Gabriel * Merge branch 'update_readme' into 'main' (d6f7ca0d) 2022-12-29 Danfro * drop part about building without clickable (6d68795f) * update readme and merge separate files into one readme (8dbf1b91) 2022-12-31 Hosted Weblate * Update translation files (810ad56e) 2022-12-30 Guido Berhoerster * gitlab-ci.yml: Remove fixed clickable version (4856e963) 2022-12-30 Weblate * Added translation using Weblate (Chinese (Min Nan)) (170f77ba) * Added translation using Weblate (Kurdish (Southern)) (9169c542) * Added translation using Weblate (Kurdish (Northern)) (fd069ffd) * Added translation using Weblate (Afar) (931fe0a2) * Added translation using Weblate (Dhivehi) (12382c0b) * Added translation using Weblate (Bengali (Bangladesh)) (3b639103) * Added translation using Weblate (Georgian) (daf5c9ff) * Added translation using Weblate (Hindi) (642f1f95) * Added translation using Weblate (Armenian) (30e07fb0) * Added translation using Weblate (Gujarati) (ec38b3c3) 2022-11-22 Mike Gabriel * Merge branch 'focal' into 'main' (b33089c1) 2022-08-23 Guido Berhoerster * CI: Do not fail builds on warnings and errors (a7980fe4) 2022-07-28 Guido Berhoerster * Update GitLab CI configuration (0a5c13ad) * Update click packaging (7a4aeca3) 2022-07-18 Guido Berhoerster * Move Jenkinsfile to debian/ (9b3fde73) * Update debian packaging (6ed213f0) 2022-10-10 Guido Berhoerster * Add .pot file (b476c9b8) * Modernize i18n (b150b2f1) * Remove obsolete snap packaging (d3a2d3bf) * Rename application (980f268f) 2022-07-18 Guido Berhoerster * Port to lomiri-url-dispatcher (16a3c01d) * Port autopilot tests to lomiri-ui-toolkit (59869e4a) 2022-06-20 Danfro * bump framework to 20.04 (f46e2211) * rename Ubuntu to Lomiri in desktop file (727c162d) * rename Ubuntu to Lomiri for imports+components to allow build for focal (7c84478c) 2022-04-25 Weblate * Translated by creepen123 using Weblate (Russian) - 100.0% (80 of 80 strings) (a378d00b) 2022-03-24 Weblate * Translated by HEROBRINE7GAMER using Weblate (Arabic) - 86.2% (69 of 80 strings) (134f3375) 2022-03-10 Weblate * Translated by Carlod using Weblate (Polish) - 100.0% (80 of 80 strings) (1678114c) 2022-03-05 Joan CiberSheep * Fix media key detection (7a0498b4) 2022-03-04 Joan CiberSheep * Update version (7c52662b) * Merge branch 'fix_filenamewithspecialchars' into 'master' (1d52cf2e) * Merge branch 'mateosalta-master-patch-34801' into 'master' (75b1061d) * Merge branch 'fixhardcodeddbversion' into 'master' (5edef79e) * Merge branch 'selectall_selectnone' into 'master' (c0a6000a) * Merge branch 'fix_album_cover_widht' into 'master' (f9e58cb4) * Fix copy paste error (035d7ab2) * Merge branch 'UpdateClickable7' into 'master' (b4304a35) * Update CI and project for Clickable 7, thanks Jonny (7c88a3c3) * Merge branch 'repeatsingle' into 'master' (68dadf9e) 2022-02-15 Weblate * Translated by Allan Nordhøy using Weblate (Norwegian Bokmål) - 100.0% (80 of 80 strings) (e39691c0) 2022-02-05 Weblate * Translated by Lundrin using Weblate (Hungarian) - 100.0% (80 of 80 strings) (b7ba7d21) 2022-01-28 Weblate * Translated by c4pp4 using Weblate (Czech) - 100.0% (80 of 80 strings) (874fecd1) 2022-01-03 Danfro * change the select-all icon to select-none if all songs are selected (0c63fb4e) 2021-12-19 Danfro * fix #82 by removing the hardcoded db version (e0878e92) 2021-11-21 Weblate * Translated by Adria using Weblate (Sardinian) - 100.0% (80 of 80 strings) (b365584f) 2021-11-08 Danfro * fix #81 by adding some conditional width setting for album cover (e2e6a3af) * Merge branch 'master' of gitlab.com:ubports/apps/music-app (a12d626b) 2021-10-19 Weblate * Translated by Jakob Fridesjö using Weblate (Swedish) - 100.0% (80 of 80 strings) (09622254) 2021-10-12 Weblate * Translated by HEROBRINE7GAMER using Weblate (Arabic) - 86.2% (69 of 80 strings) (95097881) 2021-10-04 Weblate * Translated by Adolfo Jayme Barrientos using Weblate (Spanish) - 100.0% (80 of 80 strings) (5b35c224) 2021-09-09 Lionel Duboeuf * handle filename with special chars (bab191d6) 2021-08-21 Weblate * Translated by Milan Korecký using Weblate (Czech) - 100.0% (80 of 80 strings) (ddb037dc) 2021-08-12 Weblate * Translated by Peter Nerlich using Weblate (German) - 100.0% (80 of 80 strings) (c5a31030) 2021-07-26 Weblate * Translated by Rondy Andersson using Weblate (Swedish) - 98.7% (79 of 80 strings) (f87f46ce) 2021-06-30 Weblate * Translated by Герман Семенов using Weblate (Russian) - 100.0% (80 of 80 strings) (eabedb3a) 2021-06-13 Weblate * Translated by Ito Rimai using Weblate (Chinese (Simplified)) - 100.0% (80 of 80 strings) (fbc44d20) 2021-06-01 mateosalta * attempt to cherry pick https://code.launchpad.net/~vthompson/music-app/use-media-keys but fix brackets? needs testing (9a47310f) 2021-05-29 Weblate * Translated by Heimen Stoffels using Weblate (Dutch) - 100.0% (80 of 80 strings) (388a0690) 2021-05-22 Weblate * Translated by Wannaphong Phatthiyaphaibun using Weblate (Thai) - 12.0% (10 of 83 strings) (e7fdcd69) 2021-05-03 Weblate * Translated by Enceka using Weblate (Chinese (Simplified)) - 100.0% (80 of 80 strings) (d72ffa43) 2021-04-28 Danfro * rework repeat button to use 3-step mode none->single->album repeat->none (e1aa0f9b) 2021-04-23 Danfro * add repeat-single button to toolbar (e9103dd8) 2021-04-22 Weblate * Translated by Adria using Weblate (Sardinian) - 100.0% (80 of 80 strings) (531f29b1) 2021-04-15 Danfro * Merge branch 'master' of gitlab.com:ubports/apps/music-app (470c86a4) 2021-04-12 Weblate * Translated by Florian Leeber using Weblate (German) - 100.0% (80 of 80 strings) (e8988f34) 2021-03-25 Weblate * Translated by vokaliz using Weblate (Russian) - 100.0% (80 of 80 strings) (11d27add) 2021-03-12 Weblate * Translated by Jan Christian Sherdahl using Weblate (Norwegian Bokmål) - 100.0% (80 of 80 strings) (950a5cbf) 2021-03-10 Brian Douglass * v2.9.22 - Translation update, thank you translators! (027c8820) (tag: v2.9.22) 2021-03-05 Weblate * Translated by Sam Zhang using Weblate (Chinese (Simplified)) - 100.0% (80 of 80 strings) (3f82f117) 2021-02-17 Weblate * Translated by Max Libre using Weblate (French) - 100.0% (80 of 80 strings) (17daee9d) 2021-02-04 Brian Douglass * v2.9.21 - Translation update, thank you translators! (95d82cc8) (tag: v2.9.21) 2021-01-30 Weblate * Translated by imrufbd using Weblate (Bengali) - 11.2% (9 of 80 strings) (06faae13) 2021-01-16 Weblate * Translated by ierihon using Weblate (Russian) - 100.0% (80 of 80 strings) (d4a67dff) 2021-01-08 Weblate * Translated by Mike using Weblate (Italian) - 100.0% (80 of 80 strings) (c021374c) 2021-01-02 Weblate * Translated by GK using Weblate (Tamil) - 42.5% (34 of 80 strings) (d4d8880d) 2020-12-25 Weblate * Translated by Yaron Shahrabani using Weblate (Hebrew) - 100.0% (80 of 80 strings) (065bbfcc) 2020-12-18 Weblate * Translated by Enkli Ylli using Weblate (Albanian) - 100.0% (80 of 80 strings) (7754ea3f) 2020-12-16 Brian Douglass * v2.9.20 - Translation update, thank you translators! (257e7f07) (tag: v2.9.20) 2020-12-08 Weblate * Translated by abidin using Weblate (Arabic) - 86.2% (69 of 80 strings) (3a1876df) 2020-12-05 Weblate * Translated by abidin using Weblate (Arabic) - 86.2% (69 of 80 strings) (7fe88c93) 2020-11-27 Weblate * Translated by Zmicer using Weblate (Belarusian) - 100.0% (80 of 80 strings) (abac300e) 2020-11-23 Brian Douglass * v2.9.19 - Translation update, thank you translators! (6150fe5e) (tag: v2.9.19) 2020-11-15 Weblate * Translated by abidin using Weblate (Arabic) - 86.2% (69 of 80 strings) (478fabe6) 2020-11-12 Weblate * Translated by Heimen Stoffels using Weblate (Dutch) - 100.0% (80 of 80 strings) (6bd8c10b) 2020-11-06 Weblate * Translated by abidin using Weblate (Arabic) - 86.2% (69 of 80 strings) (a5be92e3) 2020-11-04 Brian Douglass * v2.9.18 - Translation update, thank you translators! (b0b4d6f0) (tag: v2.9.18) 2020-10-28 Anne Onyme * Translated by Anne Onyme using Weblate (French) - 100.0% (80 of 80 strings) (3e997491) 2020-10-27 Heimen Stoffels * Translated by Heimen Stoffels using Weblate (Dutch) - 100.0% (80 of 80 strings) (f18ba761) 2020-10-27 Ivo Xavier * Translated by Ivo Xavier using Weblate (Portuguese) - 100.0% (80 of 80 strings) (ceaaebeb) 2020-10-26 Joan CiberSheep * Translated by Joan CiberSheep using Weblate (Catalan) - 100.0% (80 of 80 strings) (ca6cc3cc) * Translated by Joan CiberSheep using Weblate (Catalan) - 100.0% (80 of 80 strings) (64eff34c) 2020-10-26 Adria * Translated by Adria using Weblate (Sardinian) - 100.0% (80 of 80 strings) (18fefa9e) 2020-10-26 Heimen Stoffels * Translated by Heimen Stoffels using Weblate (Dutch) - 100.0% (80 of 80 strings) (e06957d0) 2020-10-01 Brian Douglass * v2.9.17 - Translation update, thank you translators! (e65fdf56) (tag: v2.9.17) 2020-09-24 P.-H. Lin * Translated by P.-H. Lin using Weblate (Chinese (Traditional, Hong Kong)) - 46.2% (37 of 80 strings) (678d9558) * Translated by P.-H. Lin using Weblate (Chinese (Traditional)) - 100.0% (80 of 80 strings) (6e5921bf) 2020-09-18 Adria * Translated by Adria using Weblate (Sardinian) - 100.0% (80 of 80 strings) (b75810dc) 2020-09-08 Weblate * Merge branch 'origin/master' into Weblate. (32ac85a2) 2020-09-08 Brian Douglass * v2.9.16 - Translation update, thank you translators! (c3b82662) (tag: v2.9.16) 2020-09-06 Anne Onyme * Translated by Anne Onyme using Weblate (French) - 100.0% (80 of 80 strings) (c7f1726c) 2020-09-05 tamer dab * Translated by tamer dab using Weblate (Hebrew) - 100.0% (80 of 80 strings) (756198bb) 2020-09-05 Allan Nordhøy * Translated by Allan Nordhøy using Weblate (Norwegian Bokmål) - 100.0% (80 of 80 strings) (a6efca0b) 2020-09-05 Milan Korecký * Translated by Milan Korecký using Weblate (Czech) - 100.0% (80 of 80 strings) (e429088e) 2020-09-05 Heimen Stoffels * Translated by Heimen Stoffels using Weblate (Dutch) - 100.0% (80 of 80 strings) (651f42b4) 2020-09-04 tamer dab * Translated by tamer dab using Weblate (Hebrew) - 100.0% (80 of 80 strings) (3f4b0ac4) 2020-08-31 Milan Korecký * Translated by Milan Korecký using Weblate (Czech) - 100.0% (80 of 80 strings) (d17fb127) 2020-08-31 Florian Leeber * Translated by Florian Leeber using Weblate (German) - 100.0% (80 of 80 strings) (333e1877) 2020-08-31 Brian Douglass * v2.9.15 - Translation update, thank you translators! (483e6565) (tag: v2.9.15) 2020-08-25 anonymous * Translated by anonymous using Weblate (Swedish) - 98.7% (79 of 80 strings) (b52f587a) 2020-08-25 Arvid Brodin * Translated by Arvid Brodin using Weblate (Swedish) - 98.7% (79 of 80 strings) (a3c27bbd) 2020-08-24 Brian Douglass * v2.9.14 - Translation update, thank you translators! (8f414480) (tag: v2.9.14) 2020-08-17 Weblate * Merge branch 'origin/master' into Weblate. (9b3815f1) 2020-08-17 Brian Douglass * v2.9.13 - Translation update, thank you translators! (e06cceda) (tag: v2.9.13) 2020-08-16 Efstathios Iosifidis * Translated by Efstathios Iosifidis using Weblate (Greek) - 100.0% (80 of 80 strings) (3342ae7b) 2020-08-15 Efstathios Iosifidis * Translated by Efstathios Iosifidis using Weblate (Greek) - 100.0% (80 of 80 strings) (064a2665) 2020-08-11 Weblate * Merge branch 'origin/master' into Weblate. (bc48a14a) 2020-08-10 Brian Douglass * v2.9.12 - Translation update, thank you translators! (cf45e07b) (tag: v2.9.12) 2020-08-09 Rüdiger Kupper * Translated by Rüdiger Kupper using Weblate (German) - 100.0% (80 of 80 strings) (17d10745) 2020-08-09 Allan Nordhøy * Translated by Allan Nordhøy using Weblate (Norwegian Bokmål) - 98.7% (79 of 80 strings) (bd4f900f) 2020-08-08 Weblate * Merge branch 'origin/master' into Weblate. (6de05001) 2020-08-08 Brian Douglass * v2.9.11 - New splash screen (2c96cb06) (tag: v2.9.11) 2020-08-08 Weblate * Merge branch 'origin/master' into Weblate. (e420f437) 2020-08-08 Brian Douglass * Merge branch 'TweakSplash' into 'master' (62c54a26) 2020-08-08 Weblate * Merge branch 'origin/master' into Weblate. (ba25eb10) 2020-08-08 Brian Douglass * Merge branch 'tokenize' into 'master' (53b80603) 2020-08-08 Daniel Frost * remove .gitlab-ci.yml from fork to prevent automatic builds when tags are created (upstream or local) (6ebdcd1e) 2020-08-08 Joan CiberSheep * Tweak Splash to Fit the Rest of the Core Apps (a5acdf29) 2020-08-06 suntron * Translated by suntron using Weblate (Burmese) - 35.0% (28 of 80 strings) (928a3e4b) 2020-08-05 Danfro * Merge branch 'master' of gitlab.com:ubports/apps/music-app (e90b8aed) 2020-08-04 Brian Douglass * v2.9.10 - Translation update, thank you translators! (f6f2e363) (tag: v2.9.10) 2020-08-01 Samson * Translated by Samson using Weblate (Amharic) - 100.0% (80 of 80 strings) (38d166e8) 2020-07-30 Young Kim * Translated by Young Kim using Weblate (Korean) - 68.7% (55 of 80 strings) (fee9752e) * Translated by Young Kim using Weblate (Korean) - 65.0% (52 of 80 strings) (1f18e0e0) * Translated by Young Kim using Weblate (Korean) - 61.2% (49 of 80 strings) (32bb69d3) 2020-07-20 Brian Douglass * Removed master branch specification (eaaa4b05) (tag: v2.9.9c) * v2.9.9 - Translation update, thank you translators! (9e5cda20) (tag: v2.9.9b, tag: v2.9.9) * Actually fixed the gitlab ci file (98d92697) * Fixed gitlab ci file (4a24bf83) * Updated clickable and gitlab configs (43e8654c) 2020-07-16 pietre * Translated using Weblate (Spanish) (68b56ef7) 2020-07-14 Brian Douglass * v2.9.8 - Translation update, thank you translators! (cd15a82d) (tag: v2.9.8) 2020-07-11 Ivo Xavier * Translated using Weblate (Portuguese) (279de9f5) 2020-07-07 Heimen Stoffels * Translated using Weblate (Dutch) (812279d7) * Translated using Weblate (Dutch) (19f3e42e) 2020-07-07 Weblate * Merge branch 'origin/master' into Weblate. (b8720ac0) 2020-07-06 Brian Douglass * v2.9.7 - Translation update, thank you translators! (e96ea7f7) (tag: v2.9.7) 2020-07-05 Heimen Stoffels * Translated using Weblate (Dutch) (db5aa65f) 2020-07-03 Heimen Stoffels * Translated using Weblate (Dutch) (ba5a8337) 2020-07-03 Stoian Minaiev * Translated using Weblate (Ukrainian) (da09b4db) 2020-05-25 Brian Douglass * v2.9.6 - Translation update, thank you translators! (34c1c17d) (tag: v2.9.6) 2020-05-19 Pavel Borecki * Translated using Weblate (Czech) (1e308fc0) 2020-05-18 Pavel Borecki * Translated using Weblate (Czech) (ffd0475b) 2020-04-27 Brian Douglass * v2.9.5 - Translation update, thank you translators! (3c9f61ee) (tag: v2.9.5) 2020-04-22 Adrià * Translated using Weblate (Sardinian) (4b58a7e8) 2020-04-13 Brian Douglass * v2.9.4 - Translation update, thank you translators! (20d89037) (tag: v2.9.4) 2020-04-10 Neutrum N * Translated using Weblate (Galician) (57a75ea4) 2020-04-09 Neutrum N * Translated using Weblate (Galician) (1f6d5db8) 2020-03-30 Brian Douglass * v2.9.3 - Translation update, thank you translators! (25157209) (tag: v2.9.3) 2020-03-23 Neutrum N * Translated using Weblate (Galician) (c63e0112) 2020-03-10 Brian Douglass * v2.9.2 - Translation update, thank you translators! (613abc5f) (tag: v2.9.2) 2020-03-05 Neutrum N * Translated using Weblate (Galician) (52f7abd5) 2020-03-02 Pavel Borecki * Translated using Weblate (Czech) (3a2166f9) 2020-03-02 Brian Douglass * v2.9.1 - Translation update, thank you translators! (b4459349) (tag: v2.9.1) 2020-02-28 Pavel Borecki * Translated using Weblate (Czech) (f21ee1e4) 2020-02-27 Danfro * update from 'master' of gitlab.com:ubports/apps/music-app (25e33f09) 2020-02-26 Ryan Argente * Translated using Weblate (French (Canada)) (dac8dae4) 2020-02-26 Brian Douglass * v2.9.0 - Upgraded splash screen (48df799f) (tag: v2.9.0) 2020-02-26 Danfro * update from upstream 'master' of gitlab.com:ubports/apps/music-app (36bf4234) 2020-02-26 Joan CiberSheep * Merge branch 'splash' into 'master' (9d0dc0d1) 2020-02-26 Daniel Frost * change splash screen (aedce089) 2020-02-25 Danfro * Update from branch 'master' of gitlab.com:ubports/apps/music-app (50d3837e) 2020-02-25 Brian Douglass * v2.8.2 - Updated translations, thank you translators! (3e5d829f) (tag: v2.8.2) 2020-02-20 Ryan Argente * Translated using Weblate (French (Canada)) (b3200a94) 2020-02-17 Riccardo Riccio * Translated using Weblate (Slovenian) (8a7aaed9) 2020-02-17 Weblate * Merge branch 'origin/master' into Weblate. (2a042a23) 2020-02-17 Brian Douglass * v2.8.1 - Translation update, thank you translators! (6995f2c3) (tag: v2.8.1) 2020-02-16 dano6 * Translated using Weblate (Slovak) (d03b7ab6) 2020-02-15 Danfro * restore gitlab-ci.yaml so it does not accidentally get removed from upstream repo (18015165) * add .gitlab-ci.yml to .gitignore to prevent it from beeing uploaded again (5d9f9b71) * remove .gitlab-ci.yml from fork to prevent automatic builds when tags are created (upstream or local) (cbd75427) 2020-02-10 Weblate * Merge branch 'origin/master' into Weblate. (6dd90a68) 2020-02-10 HSN80 * Translated using Weblate (Persian) (f439ba01) 2020-02-10 Brian Douglass * v2.8.0 - Added option to keep display on when playing music (b4148042) (tag: v2.8.0) 2020-02-09 Oi Suomi On! * Translated using Weblate (Finnish) (84f206bd) 2020-02-10 Brian Douglass * Automatically update the pot file (634bc74a) 2020-02-09 Danfro * remove settings from multiselect view (0d4e463a) 2020-02-08 Danfro * remove settings on queue to avoid two settings icons on splitted view (4be3989a) * fix missing condition on keepDisplayOn (f2e6b528) * move settings to header button instead of tab (c783d60f) * change keepDisplayOn to work while music is playing instead of all time on (95fd15aa) * apply same layout and back button size as other pages to settings page (a04ade56) 2020-02-06 Danfro * reformat screensaver condition (f5812bcc) 2020-02-05 Danfro * remove reminder reference from copyright notice (e120e3a3) * update copyright year in (new) settings file (c733153b) * remove previous commit for theme and apply settings changes needed for keep display on here (d243dcba) 2020-02-06 Brian Douglass * Merge branch 'version' into 'master' (2887ab7b) 2020-02-06 Daniel Frost * remove log entry with in app version (35b742eb) 2020-01-29 Brian Douglass * v2.7.8 - Translation update, thank you translators! (82fc7e12) (tag: v2.7.8) 2019-12-12 Sami Törmänen * Translated using Weblate (Finnish) (ae43d2ba) 2019-11-26 Dmitriy Pushkov * Translated using Weblate (Russian) (a2087e54) 2019-12-27 Moo * Translated using Weblate (Lithuanian) (c7b73229) 2020-01-15 Joan CiberSheep * Translated using Weblate (Catalan) (e4f7f310) 2020-01-18 Brian Douglass * v2.7.7 - Use svg for cover art fallback - Color tweaks - Updated translations, thank you translators! (1c6beee5) (tag: v2.7.7) 2020-01-17 Joan CiberSheep * Merge branch 'svg-cover' into 'master' (67f796ad) 2020-01-17 Brian Douglass * Use the svg icon instead of the old png (14e5e0d0) * Merge branch 'ColorTweaks' into 'master' (408f1eeb) 2020-01-15 Joan CiberSheep * Color tweaks and initial support for Ambiance theme (0b9524d1) 2019-12-02 Sami Törmänen * Translated using Weblate (Finnish) (0e72892c) 2019-11-18 Brian Douglass * v2.7.6 - Updated translations, thank you translators! (7b06df5d) (tag: v2.7.6) 2019-11-09 M.Sugahara * Translated using Weblate (Japanese) (382dbc85) 2019-11-04 Brian Douglass * v2.7.5 - Translation update, thank you translators! (1a9dc145) (tag: v2.7.5) 2019-10-28 enolp * Translated using Weblate (Asturian) (9141849d) 2019-10-27 enolp * Translated using Weblate (Asturian) (9b804131) 2019-10-28 Brian Douglass * v2.7.4 - Translation update, thank you translators! (fb1e6f24) (tag: v2.7.4) 2019-10-22 Weblate * Merge branch 'origin/master' into Weblate. (aaff4e09) 2019-10-21 Brian Douglass * v2.7.3 - Translation update, thank you translators! (03508188) (tag: v2.7.3) 2019-10-20 Sami Törmänen * Translated using Weblate (Finnish) (20c75ff1) 2019-10-15 Tom Dom * Translated using Weblate (Dutch) (0d8efeda) 2019-10-14 Brian Douglass * v2.7.2 - Updated translations, thank you translators! (6f852c48) (tag: v2.7.2) 2019-10-12 Tom Dom * Translated using Weblate (Dutch) (764caa7d) 2019-10-06 Anne Onyme * Translated using Weblate (French) (a0fad73c) 2019-10-04 Sami Törmänen * Translated using Weblate (Finnish) (5e1f44fb) 2019-10-05 Ettore Atalan * Translated using Weblate (German) (8af7fb36) 2019-10-03 RedXXIII * Translated using Weblate (French) (ced18684) 2019-10-03 Milan Korecký * Translated using Weblate (Czech) (50794f1b) 2019-10-01 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (9cfb6b3a) 2019-09-30 Joan CiberSheep * Translated using Weblate (Catalan) (ed125177) 2019-09-29 Brian Douglass * v2.7.1 - Fixed albumns with multiple artists not grouping together (1c385ce7) (tag: v2.7.1) * Merge branch 'album-fix' into 'master' (6a7b5936) * Merge branch 'master' into album-fix (98ed7067) 2019-09-20 Moo * Translated using Weblate (Lithuanian) (e850c96b) 2019-09-13 Daniel Frańczak * Translated using Weblate (Polish) (31a1a1ca) 2019-09-13 Mike * Translated using Weblate (Italian) (0bca07ec) 2019-09-14 Ivo Xavier * Translated using Weblate (Portuguese) (1ddd079b) 2019-09-13 Milan Korecký * Translated using Weblate (Czech) (34c8c6ec) 2019-09-13 Brian Douglass * Updated to new click framework (16b78338) * Merge branch 'master' into album-fix (08b4b255) 2019-09-10 Weblate * Merge branch 'origin/master' into Weblate. (5b0c00b7) 2019-09-09 Brian Douglass * v2.7.0 - Added album name to the toolbar, now playing, queue, and track list. - UI tweaks - Use the app icon for the fallback album cover (e45af3e1) (tag: v2.7.0) 2019-09-10 Weblate * Merge branch 'origin/master' into Weblate. (b8e43a0a) 2019-09-10 Brian Douglass * Merge branch 'UiTweaks' into 'master' (93cd54a9) 2019-09-10 Weblate * Merge branch 'origin/master' into Weblate. (df9d9189) 2019-09-10 Brian Douglass * Merge branch 'ExcludeTests' into 'master' (03bced80) 2019-09-10 Joan CiberSheep * Little Graphical Tweaks and Icons (863b5f6a) * Don't include tests into the build (a599e998) 2019-09-09 Weblate * Merge branch 'origin/master' into Weblate. (210a4e82) 2019-09-09 Brian Douglass * Merge branch 'master' into 'master' (f63fc041) 2019-09-09 Weblate * Merge branch 'origin/master' into Weblate. (d4ab1f4a) 2019-09-09 Brian Douglass * Update gitlab ci for clickable v6 (bf50f38a) 2019-09-07 Moo * Translated using Weblate (Lithuanian) (2a941694) 2019-09-07 Raphaël Fery * Adding the album name in some views. (395c15e6) 2019-09-01 Raphaël Fery * Add album name of a track with artist name in the queue (1be6f6a9) 2019-08-26 Brian Douglass * v2.6.9 - Updated translations, thank you translators! (582b9f1f) (tag: v2.6.9) 2019-08-10 Moo * Translated using Weblate (Lithuanian) (b15f0137) 2019-08-05 Brian Douglass * v2.6.8 - Translation update, thank you translators! (8b31125f) (tag: v2.6.8) 2019-07-31 Moo * Translated using Weblate (Lithuanian) (0a219e1d) * Added translation using Weblate (Lithuanian) (64f604c6) 2019-07-22 Brian Douglass * v2.6.7 - Translation update, thank you translators! (3118dc54) (tag: v2.6.7) 2019-07-16 Weblate * Merge branch 'origin/master' into Weblate. (3443117a) 2019-07-16 Brian Douglass * v2.6.6 - Updated translations, thanks translators! (b9df7f43) (tag: v2.6.6) 2019-07-15 Yasser Lotfy * Translated using Weblate (Arabic) (ee40bd02) 2019-07-05 Aitzol Berasategi * Translated using Weblate (Basque) (a2c3ca5f) 2019-06-24 Brian Douglass * v2.6.5 - Translation update, thanks translators! (5b0a3e7d) (tag: v2.6.5) 2019-06-21 lxdb * Translated using Weblate (Russian) (72e0ccda) * Translated using Weblate (English (United States)) (4580a326) 2019-06-19 Joan CiberSheep * Translated using Weblate (Catalan) (4cd83b94) 2019-06-15 Brian Douglass * Show all tracks in an album regardless of artist and show Various artist (8288d93a) 2019-05-13 Brian Douglass * v2.6.4 - Updated translations, thanks translators! (75525dc9) (tag: v2.6.4) 2019-05-08 Ivo Xavier * Translated using Weblate (Portuguese) (c0ed17be) 2019-05-08 louies0623 * Translated using Weblate (Chinese (Hong Kong)) (1277b113) 2019-05-06 Brian Douglass * v2.6.3 - Translation update, thanks translators! (2bc56aff) (tag: v2.6.3) 2019-05-05 Weblate * Merge branch 'origin/master' into Weblate. (9b6ed314) 2019-05-05 Aurelio Cilia * Translated using Weblate (Italian) (39e3972f) 2019-05-01 louies0623 * Translated using Weblate (Chinese (Traditional)) (d7613390) 2019-04-29 Joan CiberSheep * Translated using Weblate (Catalan) (7578c566) 2019-04-27 Jiri Grönroos * Translated using Weblate (Finnish) (eaa2dec6) 2019-04-25 Vinícius F * Translated using Weblate (Portuguese (Brazil)) (ccc614df) 2019-04-21 M.Sugahara * Translated using Weblate (Japanese) (bd535abe) 2019-04-23 Anne Onyme * Translated using Weblate (French) (b8a66d03) 2019-04-03 Tom Dom * Translated using Weblate (Dutch) (7afe91af) 2019-03-23 maor26 * Translated using Weblate (Hebrew) (7a1282ee) 2019-03-26 Tom Dom * Translated using Weblate (Dutch) (c58aa569) 2019-03-12 Rúben Carneiro * Translated using Weblate (Portuguese) (1b89f6aa) 2019-03-12 Anne Onyme * Translated using Weblate (French) (20115172) 2019-03-08 Brian Douglass * Updated clickable.json (e09dc68e) * Updated gitlab ci to use commit messages for the changelog (b50d727c) 2019-02-17 Ivo Xavier * Translated using Weblate (Portuguese) (3172f232) 2019-02-09 Heimen Stoffels * Translated using Weblate (Dutch) (35a3aa85) 2019-01-21 louies0623 * Translated using Weblate (Japanese) (742d2b62) 2019-01-25 Anastopoulos Theocharis * Translated using Weblate (Greek) (c2521db0) 2019-01-12 Adrià * Translated using Weblate (Sardinian) (46f2bf7f) 2019-01-03 Ennio Lavagnini * Translated using Weblate (Italian) (f4125080) 2019-01-01 Jaume Angrill * Translated using Weblate (Catalan) (49463c79) 2018-12-28 Adrià * Translated using Weblate (Sardinian) (6e3b90d1) 2018-12-22 ierihon * Translated using Weblate (Belarusian) (3c749fe7) 2018-12-19 Mike * Translated using Weblate (Italian) (ae4d5b23) 2018-12-18 Louies * Translated using Weblate (Chinese (Traditional)) (7dbcea90) 2018-12-19 Hussain Hashem Aljafri * Translated using Weblate (Arabic) (af3653d2) 2018-12-18 Louies * Added translation using Weblate (English (United States)) (c1b515dd) 2018-11-22 Louies * Translated using Weblate (Chinese (Hong Kong)) (2f03d833) 2018-11-18 Joan CiberSheep * Translated using Weblate (Catalan) (51152744) 2018-11-17 Brian Douglass * Merge branch 'master' of github.com:ubports/music-app (cc29e0c9) 2018-11-18 Weblate * Merge branch 'origin/master' into Weblate (2db698ca) 2018-11-13 Louies * Translated using Weblate (Chinese (Traditional)) (ba4609e3) 2018-11-17 Samson * Translated using Weblate (Amharic) (1ce3a3ee) 2018-11-17 Brian Douglass * Merge pull request #46 from ubports-weblate/weblate-ubports-music-app (b3bf332d) 2018-11-15 Brian Douglass * Bumped version (d3851107) (tag: v2.6.2) * Added gitlab CI setup (53bb1f97) (tag: v2.6.1) 2018-11-11 Weblate * Merge branch 'origin/master' into Weblate (4a155d3e) 2018-11-10 M.Sugahara * Translated using Weblate (Japanese) (ede469f8) 2018-11-10 Sander * Translated using Weblate (Dutch) (6ff259c0) 2018-11-11 Brian Douglass * Merge pull request #45 from ubports-weblate/weblate-ubports-music-app (d3a644f4) 2018-11-08 Weblate * Merge branch 'origin/master' into Weblate (68f2f12d) 2018-11-05 Joan CiberSheep * Translated using Weblate (Catalan) (4160a3bf) 2018-11-08 Brian Douglass * Merge pull request #31 from dark-eye/cover_swipe (38c4e5cd) 2018-11-04 Florian Leeber * Merge pull request #44 from ubports-weblate/weblate-ubports-music-app (b1e28429) 2018-10-28 advocatux * Translated using Weblate (Spanish) (a2267027) 2018-10-28 Daniel Frańczak * Translated using Weblate (Polish) (7df355a4) 2018-10-28 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (8c835305) 2018-10-29 Gianmarco * Translated using Weblate (Italian) (549ee79c) 2018-10-28 Weblate * Merge branch 'origin/master' into Weblate (2f62196f) 2018-10-28 Sergio Reyes * Translated using Weblate (Spanish) (2ce1b92d) 2018-10-28 Ivo Xavier * Translated using Weblate (Portuguese) (603e6298) 2018-10-28 Florian Leeber * Translated using Weblate (German) (336fa00d) * Merge pull request #43 from ubports-weblate/weblate-ubports-music-app (426d7251) 2018-10-24 Louies * Translated using Weblate (Chinese (Traditional)) (1728420c) 2018-10-22 Louies * Translated using Weblate (漢語(正體字)) (a7e8671e) 2018-10-14 Florian Leeber * Merge pull request #42 from ubports-weblate/weblate-ubports-music-app (d3808d9d) 2018-10-14 Weblate * Merge branch 'origin/master' into Weblate (84ffd577) 2018-09-02 Rondy Andersson * Translated using Weblate (Schwedisch) (b85b51c9) 2018-09-08 SongInseo * Translated using Weblate (Koreanisch) (13b598ec) 2018-09-04 ArashiHino * Translated using Weblate (Japanisch) (a282e071) 2018-10-07 Marius Gripsgard * Merge pull request #41 from jonnius/master (5daaf72f) 2018-10-05 Jonatan Hatakeyama Zeidler * Fix compatibility to clickable 5.0 (d41f33b7) 2018-09-18 Øjvind Fritjof Arnfred * Translated using Weblate (Danish) (183712ef) 2018-09-15 Tom Rausner * Translated using Weblate (Danish) (54045808) 2018-09-02 Florian Leeber * Merge pull request #36 from ubports-weblate/weblate-ubports-music-app (18c3725e) 2018-09-01 Weblate * Merge remote-tracking branch 'origin/master' (433f6f53) 2018-08-26 Øjvind Fritjof Arnfred * Translated using Weblate (Danish) (68ce90cd) 2018-09-01 Florian Leeber * Merge pull request #35 from ubports-weblate/weblate-ubports-music-app (9618a260) 2018-09-01 Weblate * Merge branch 'master' of https://github.com/ubports/music-app (de32b181) 2018-08-24 Florian Leeber * Merge pull request #34 from jonnius/master (3cd12435) 2018-08-23 Jonatan Hatakeyama Zeidler * Update READMEs to ubports times (d45308b8) 2018-08-08 ierihon * Translated using Weblate (Belarusian) (90d78330) * Translated using Weblate (Belarusian) (417e2049) 2018-08-05 ubports-weblate * Update from Weblate. (#33) (cc0b3bb1) 2018-08-01 Tom Rausner * Translated using Weblate (Danish) (8f551848) * Translated using Weblate (Danish) (bef0d270) 2018-07-22 ubports-weblate * Translated using Weblate (Chinese (Simplified)) (#32) (b5fbe5d4) 2018-07-12 DarkEye * Intial Cover swipe implmentation (just making it give some feedback) (9ac1664e) 2018-07-09 ubports-weblate * Translated using Weblate (Spanish) (#30) (cfcf4dee) 2018-07-07 ubports-weblate * Update from Weblate. (#29) (8f496bc5) 2018-06-11 Bjarne Roß * Ready for xenial (#27) (413feac3) 2018-06-09 Marius Gripsgard * Bump version and remove bzr (89b1219e) 2018-06-05 Florian Leeber * Merge pull request #26 from ubports/maintainer (65eb254f) 2018-06-04 Dalton Durst * Update maintainer (a9ba68a1) 2018-06-01 ubports-weblate * Update from Weblate. (#24) (b0460521) 2018-06-01 Florian Leeber * Merge pull request #23 from UniversalSuperBox/gitignore (a2f15855) 2018-05-30 Dalton Durst * Add clickable.json (#22) (f8a54aa7) * Move gitignore to bzrignore and ignore build/ directory (275d194f) 2018-04-29 ubports-weblate * Update from Weblate. (#20) (d0d9dca7) 2018-03-18 ubports-weblate * Update from Weblate. (#19) (a1d58033) * Update from Weblate. (#18) (45d4283f) 2018-03-11 Marius Gripsgard * Make sure we use we use the correct scoped function (7a158f0e) 2018-03-04 ubports-weblate * Update from Weblate. (#17) (7fc9a478) 2018-02-25 ubports-weblate * Update from Weblate. (#16) (4bba9c86) 2018-02-22 Marius Gripsgard * qtdeclarative5-qtmultimedia-plugin as been renamed to qml-module-qtmultimedia (226ed966) * Update changelog (0cdc9618) * Add Jenkinsfile (b7670716) 2018-02-18 Florian Leeber * Merge pull request #15 from ubports-weblate/weblate-ubports-music-app (e65137e3) 2018-02-18 Weblate * Merge branch 'master' of https://github.com/ubports/music-app (5e71e14c) 2018-02-18 ubports-weblate * Update from Weblate. (#14) (03568058) 2018-02-18 Weblate * Merge branch 'master' of https://github.com/ubports/music-app (390bca25) 2018-02-18 ubports-weblate * Update from Weblate. (#13) (4d53aa8b) 2018-02-18 Weblate * Merge remote-tracking branch 'origin/master' (6d2a1f89) 2018-02-18 ubports-weblate * Update from Weblate. (#12) (c510d0ea) 2018-02-18 Weblate * Repair commit (c0e1bd28) * Merge branch 'master' of https://github.com/ubports/music-app (69298e91) 2018-01-03 Adrià * Translated using Weblate (Sardinian) (da94a479) 2018-01-18 Noock * Translated using Weblate (Portuguese (Brazil)) (ae8f5916) 2018-01-23 hensip * Translated using Weblate (Galician) (57b2e019) 2018-02-05 ubports_arabic * Translated using Weblate (Arabic) (d305233a) 2018-01-07 ubports-weblate * Update from Weblate. (#10) (52074113) 2018-01-03 Peter Nerlich * Translated using Weblate (German) (3220ecb3) 2018-01-02 Anne Onyme * Translated using Weblate (French) (cfac35e9) 2017-12-29 Adrià * Translated using Weblate (Sardinian) (764b8ea7) 2017-12-27 Samson * Translated using Weblate (Amharic) (88ce0323) 2017-12-22 Iarla Ȯ'Riada * Translated using Weblate (Irish) (2ae8239e) 2017-11-26 Arda Canbolat * Translated using Weblate (Turkish) (9cf7552b) 2017-11-26 advocatux * Translated using Weblate (Spanish) (bb3d4cfa) 2017-11-30 Joeke de Graaf * Translated using Weblate (Dutch) (6d029eef) 2017-11-23 Pablo Foche * Translated using Weblate (Esperanto) (810c7a7c) 2017-11-25 Taka Turgut * Translated using Weblate (Turkish) (7edd4e97) 2017-11-22 Mevlüt Erdem Güven * Translated using Weblate (Turkish) (633bfe9b) 2017-11-22 Pablo Foche * Translated using Weblate (Esperanto) (e5cae1e8) 2017-11-21 Alexey Balmashnov * Translated using Weblate (Russian) (4c6a898d) 2017-11-06 Brînzariu Cristian * Translated using Weblate (Romanian) (aa7bd606) 2017-11-06 Mutse Young * Translated using Weblate (Chinese (Simplified)) (92f556eb) 2017-11-05 Brînzariu Cristian * Translated using Weblate (Romanian) (87c1b409) 2017-10-29 Brînzariu Cristian * Translated using Weblate (Romanian) (d300405c) 2017-10-29 Anne Onyme * Translated using Weblate (French) (ea6e15d0) 2017-11-01 Terence Sambo * Translated using Weblate (Dutch) (83ca70ac) 2017-10-29 Aitzol Berasategi * Translated using Weblate (Basque) (4c133047) 2017-10-21 Mutse Young * Translated using Weblate (Chinese (Simplified)) (ecec80fd) 2017-10-18 Ivo Xavier * Translated using Weblate (Portuguese) (d4f21f08) 2017-10-17 RedXXIII * Translated using Weblate (French) (3817f1e6) 2017-09-30 Francisco Molinero * Translated using Weblate (Spanish) (64027dd0) 2017-09-30 Peter Valachovič * Translated using Weblate (Slovak) (8e0008ff) 2017-09-30 Nelly Simkova * Translated using Weblate (Russian) (c8c57e37) 2017-10-02 Mike * Translated using Weblate (Italian) (82655ca3) 2017-10-06 Twinkybot * Translated using Weblate (German) (2491824e) 2017-10-02 RedXXIII * Translated using Weblate (French) (176519e2) 2017-10-06 Milan Korecký * Translated using Weblate (Czech) (b596b7d8) 2017-09-30 Stefano Melchior * Translated using Weblate (Catalan) (a618b9a5) 2017-09-28 Ivo Xavier * Translated using Weblate (Portuguese) (ccc8411c) 2017-09-27 Daniel Frańczak * Translated using Weblate (Polish) (c3d9b8c1) 2017-09-28 Stefano Melchior * Translated using Weblate (Italian) (4c38f348) 2017-09-28 Henrik Holm * Translated using Weblate (Danish) (4e4daeb7) 2017-09-27 Rekols * Translated using Weblate (Chinese (Simplified)) (e1657bbe) 2017-09-29 Jeff * Translated using Weblate (Albanian) (afe5420e) 2017-09-20 Peter Valachovič * Translated using Weblate (Slovak) (e58a1346) 2017-09-17 Adrià * Translated using Weblate (Sardinian) (0ca00c46) 2017-09-17 Ivan Semkin * Translated using Weblate (Russian) (cf14d3c0) 2017-09-22 ghostranger * Translated using Weblate (Kannada) (a8c241a9) 2017-09-20 Mike * Translated using Weblate (Italian) (45e21eed) 2017-09-18 Eran * Translated using Weblate (Hebrew) (25388631) 2017-09-23 Twinkybot * Translated using Weblate (German) (0542644c) 2017-09-23 Mappack Owner * Translated using Weblate (Dutch) (89dd4b3d) 2017-09-18 Milan Korecký * Translated using Weblate (Czech) (618624d7) 2017-09-24 Mutse Young * Translated using Weblate (Chinese (Simplified)) (f2608295) 2017-09-18 Jeff * Translated using Weblate (Albanian) (f2adcd45) 2017-09-16 Beton * Translated using Weblate (Polish) (5a4f7958) 2017-09-11 Francisco Molinero * Translated using Weblate (Spanish) (8bab8b63) 2017-09-15 Eran * Translated using Weblate (Hebrew) (e775a2ac) 2017-09-07 advocatux * Translated using Weblate (Spanish) (d69c7b6c) 2017-09-07 Peter Valachovič * Translated using Weblate (Slovak) (3353410e) 2017-09-07 Florian Leeber * Translated using Weblate (German) (582e82e3) 2017-09-07 Anne Onyme * Translated using Weblate (French) (c7ec888f) 2017-09-07 Milan Korecký * Translated using Weblate (Czech) (78c4015e) 2017-09-07 Walter Garcia-Fontes * Translated using Weblate (Catalan) (8d046552) 2017-09-08 Jeff * Translated using Weblate (Albanian) (cd6f610f) * Translated using Weblate (Albanian) (45860db0) 2017-09-07 Milan Korecký * Translated using Weblate (Czech) (530c3ac5) 2017-04-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1fc2bb06) 2017-04-04 Andrew Hayzen * Add snap packaging for the music-app to run in devmode (it assumes mediascanner is running on the host). (66096dc7) * Be more explicit about gstreamer plugins (d9e5a658) * Add (66b4fd3a) * Remove desktop_file_hint (0987bcbf) * Remove -libav for now, we have most common codecs (mp3, m4a, flac) with -base, -good, -bad-faad, -mp3 (edf6dae3) * Use specifically -bad-faad (b3486cac) 2017-04-03 Andrew Hayzen * Further priming (6d7a08c7) * Improve prime of libav (8de03090) * Add libav to depends and prime (bc4a8396) * Add some more plugins (c5cb9d66) * Add mp3 decoder (16d6f338) 2017-03-29 Andrew Hayzen * Only link symlink if there isn't one and set APP_ID (a1240693) * Add stage packages to use pulse; Add wrapper for setting up mediascanner symlink (e181bb4f) * Add snap support in devmode (777037e0) 2017-01-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (79f663f0) 2016-12-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c8655bc7) 2016-12-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e456b985) 2016-12-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6dcecf8c) 2016-11-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d53ce064) 2016-11-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (38c8084f) 2016-10-25 Florian Boucault * Improve startup time (by around 900ms on BQ E4.5): - load Icons asynchronously. - load Images asynchronously. - load Tabs on demand. (9bcf754e) * Fixed autopilot failures due to disappearing popovers (f79b2a77) 2016-10-19 Florian Boucault * Nicer tabs transition by fading in art (c8dea68d) * Use image scaling adequately for music-app-cover.png (611997b8) * Reduce flicker by loading tabs synchronously (c6650e66) * Fixed double loading of artists page (64a28530) * Merged from trunk (8fac1251) 2016-09-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2fab8624) 2016-08-31 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (5d683c8c) 2016-08-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e539fc90) 2016-08-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c24f374e) 2016-08-19 Andrew Hayzen * Fix for autopilot using switch_to_tab instead of leadingActionBar * Fix for duplicate Toolbars being created, confusing autopilot. Fixes: https://bugs.launchpad.net/bugs/1613328. (ca7bf8e7) 2016-08-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (cbcc8a7c) 2016-08-16 Andrew Hayzen * Fix for flaky test (a2127192) * Fix for some console errors (2a8afa68) 2016-08-15 Andrew Hayzen * Update changelog (cedd195a) * Fix for loading not unloading when using active, instead set source to empty string as per docs (45b9d6b3) * Further fixes for ActionBar changes (cec4072e) * Fix for autopilot using switch_to_tab instead of leadingActionBar (755f463e) 2016-08-09 Andrew Hayzen * * Remove gstreamer0.10-fluendo-mp3 plugin from control as 1.0 should instead be used. Fixes: https://bugs.launchpad.net/bugs/1599902. (41440ba6) 2016-08-03 Andrew Hayzen * * Remove gstreamer0.10-fluendo-mp3 plugin from control as 1.0 should instead be used (98d0c45c) 2016-07-25 Florian Boucault * Load Tabs on demand and asynchronously. (ab8310c0) * Images to load asynchronously. (19aaed64) * Icons to load asynchronously. (46f19803) 2016-07-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4f21d456) 2016-07-12 Florian Boucault * Crossbuild fix. (9c53093a) 2016-07-07 Florian Boucault * Crossbuild fix (2e228761) 2016-06-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (51186927) 2016-05-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (71edb6c7) 2016-05-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1700318e) 2016-05-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c6e8c0ff) 2016-05-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (443bd072) 2016-04-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e145c145) 2016-04-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (03caad77) 2016-04-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (5be3f8ef) 2016-04-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (28e57efd) 2016-04-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (cb793960) 2016-04-06 Victor Thompson * Fix the Search TextField component color so the text is not invisible when field is not in focus. Fixes: https://bugs.launchpad.net/bugs/1550096. (396505d5) 2016-04-05 Victor Thompson * Merge and resolve conflict (2985149a) 2016-04-06 Andrew Hayzen * Implement convergent mode with now playing and queue as a sidebar. Fixes: https://bugs.launchpad.net/bugs/1253761, https://bugs.launchpad.net/bugs/1320252. (f58a49ec) * Create a separate page head state for FullView to get around flickable changing causing header to disappear (f4211d8c) 2016-04-05 Victor Thompson * Fix the Search TextField component color so the text is not invisible when field is not in focus (ce433cd5) 2016-03-28 Andrew Hayzen * Removal of the last PageHeadState to PageHeader (9d5a4f74) * Merge of trunk; Fixes for SongView to use PageHeader instead of PageHeadState (91c67a8c) * Switch to using extension: Sections {} rather than sections: {} as that is deprecated (839d3b64) 2016-03-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a0bbcd1a) 2016-03-23 Victor Thompson * Resolve issues related to SDK changes in OTA10. Fixes: https://bugs.launchpad.net/bugs/1550096. (91ff60bd) 2016-03-22 Victor Thompson * merge of trunk and resolve conflict (9cda3bcc) 2016-03-23 Victor Thompson * Fix fallback art when the it is linked to the Player's currentMeta. Fixes: https://bugs.launchpad.net/bugs/1549557. (14e8f420) 2016-03-23 Ken VanDine * Bump Ubuntu.Content import to 1.3 to prevent mixed version imports . Fixes: https://bugs.launchpad.net/bugs/1554621. (1635e288) 2016-03-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d953cbd6) 2016-03-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9ff05393) 2016-03-19 Victor Thompson * Make actions invisible when not enabled (e54b49bb) * Update changelog (6a0a86fe) * Merge of trunk. (86371243) * Use darker cancel button color in Dialogs. (a42fdc1a) 2016-03-16 Ken VanDine * updated changelog (4bed1df9) * Bump Ubuntu.Content import to 1.3 to prevent mixed version imports (d043b4d1) 2016-03-14 Victor Thompson * Update code style (82e0a59b) 2016-03-13 Victor Thompson * Fix spacing (b99ab242) * Fix fallback art when the it is linked to the Player's currentMeta (b6d07070) 2016-03-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ff352d05) 2016-03-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (59490ed5) 2016-03-09 Victor Thompson * Fix topMargin of the Playlists empty state so title is not obscurred. Fixes: https://bugs.launchpad.net/bugs/1538829. (694e4d17) 2016-03-08 Victor Thompson * Merge of trunk and resolve conflicts. (2cd8aa0b) 2016-03-07 Andrew Hayzen * Various fixes (0385d898) 2016-03-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bb36d205) 2016-03-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c1111257) 2016-03-04 nskaggs * add jenkins info to mp readme. (cf53cc59) * add jenkins info to mp readme (dd5dbdaa) 2016-03-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (080bd86c) 2016-03-04 Andrew Hayzen * Set flickable on fallback PageHeader (2b4d31d7) * Set divider to be darker not lighter (384954eb) * Add missing file and set dividor colour (bf11f313) 2016-03-03 Victor Thompson * Add SliderStyle.qml (776b014f) * Resolve issue #2 and #3 (for 3 this will just use the style that is in the OTA10 SDK silo for some degree of backwards compatibility for now. (b8c8a50b) 2016-03-04 Andrew Hayzen * Add changelog :-) (6f1a17c0) * Merge of trunk (ff333cae) * Migrate all head -> PageHeader and fix search focus issue (aebe8a4a) 2016-03-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4e1e7d67) 2016-03-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b457171f) 2016-02-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9a43901d) 2016-02-29 Victor Thompson * Remove offset from the top of AddToPlaylist.qml. Fixes: https://bugs.launchpad.net/bugs/1538832. (253870c5) 2016-02-28 Victor Thompson * Fix topMargin of the Playlists empty state so title is not obscurred (a90c8904) 2016-02-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f628938a) 2016-02-27 Victor Thompson * merge of trunk and resolve conflict. (cb65b56d) * remove newline (5a7067d8) 2016-02-28 Victor Thompson * Fix regression where AddToPlaylist.qml no long supports plural track counts. Fixes: https://bugs.launchpad.net/bugs/1550832. (25d36493) 2016-02-27 Victor Thompson * Remove offset from the top of AddToPlaylist.qml (f481c3b3) * Fix regression where AddToPlaylist.qml no long supports plural track counts (609f161d) 2016-02-26 Victor Thompson * Resolve item #1 from list in bug report. (b1e1def3) 2016-02-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0ba7a053) 2016-02-26 Andrew Hayzen * Fix for bug 1538838 so that a press and hold cannot disable selection in the ContentHubExport.qml. Fixes: https://bugs.launchpad.net/bugs/1538838. (8e19bea6) * Update changelog (b8c97c3c) * Fix for bug 1538838 so that a press and hold cannot disable selection in the ContentHubExport.qml (a28b11e2) 2016-02-26 Victor Thompson * Fix fallback image path in MusicListItem. Fixes: https://bugs.launchpad.net/bugs/1549580. (1d046061) 2016-02-25 Victor Thompson * Fix fallback image path in MusicListItem (173f3c5d) 2016-02-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1f2892e1) 2016-02-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d217db0e) 2016-02-21 Victor Thompson * Ensure that only one ContentHubExport page is open. Fixes: https://bugs.launchpad.net/bugs/1538863. (fdb7e5de) * Change translation strings to use the word track, rather than song. Fixes: https://bugs.launchpad.net/bugs/1378143. (1deb4556) * Merge of trunk and resolve conflict (fb022b90) 2016-02-19 Andrew Hayzen * Initial work to style sidebar correctly (needs cleaning up) (738da84c) 2016-02-18 Andrew Hayzen * Fix for tab bar reappearing; Make sidebar wider to improve usability on tablet (bc754b23) 2016-02-16 Andrew Hayzen * Use 95GU as point of change to wideAspect (3614349c) * Implement convergent mode with now playing and queue as a sidebar (173df290) 2016-02-16 Victor Thompson * Remove repeater for getting album titles in Artists.qml. Fixes: https://bugs.launchpad.net/bugs/1515067. (0755f402) 2016-02-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (50642707) 2016-02-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4f92d6f8) 2016-01-31 Victor Thompson * Merge trunk and update changelog (434371f0) * Mention bug # in changelog (6bc259e6) 2016-01-30 Victor Thompson * Fix changelog (044a06ca) * Merge trunk and test. (1dba19bf) 2016-01-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (47985f71) 2016-01-29 Victor Thompson * Release 2.3 and start 2.4. (35790baf) 2016-01-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (589bf24f) 2016-01-28 Victor Thompson * Ensure that only one ContentHubExport page is open (67ee0af3) * Update pot. (aefc8569) * Change translation strings to use the word track, rather than song. (6f1e9f21) 2016-01-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b2f32c1f) 2016-01-27 Victor Thompson * Release 2.3 and start 2.4 (85689212) 2016-01-26 Victor Thompson * Add support for media-hub background playlists; Bump framework to 15.04.3-qml; Bump QtMultimedia import to 5.6. Fixes: https://bugs.launchpad.net/bugs/1251624, https://bugs.launchpad.net/bugs/1480280, https://bugs.launchpad.net/bugs/1500457, https://bugs.launchpad.net/bugs/1534172, https://bugs.launchpad.net/bugs/1534840, https://bugs.launchpad.net/bugs/1535530. (840de210) 2016-01-26 Andrew Hayzen * Remove play + pause in test_next_previous that are now redundant due to how bgplaylists works (587ed728) 2016-01-25 Andrew Hayzen * Protect against null filenames when retrieving the queue (e50d4336) 2016-01-21 Andrew Hayzen * Fix for usermetrics (3a047c67) 2016-01-18 Andrew Hayzen * Wait for dialog to be visible in autopilot (bb79a778) 2016-01-16 Andrew Hayzen * Ensure that now playing page is shown when a single track is played via uri-handler (2c7d42ca) * Fix for toolbar progress hint breaking (3c3442e1) * Fix for Shuffle All and Queue All not working with playlists due to them using LibraryListModel (2f31d352) * Fix Play All/Shuffle All/Queue All so that they only perform their action when the model.count > 0 (5a79c9a2) * Update copyright dates (4311acd5) * Add qml-module-qtmultimedia (>=5.5.1-1ubuntu2) to control (259c7a63) 2016-01-15 Andrew Hayzen * Fix for ContentHubExport.qml missing migration to listitem layout * Fix for ContentHubHelper.qml referencing queue worker and not pushing now playing page (b5f41eed) * Fix for mediascanner2 not accepting files starting with file:/// causing the whole queue to be removed when it says the model has changed (92fa3d9c) 2016-01-12 Andrew Hayzen * Fix for positionAt not working (0df0e6ea) * Fixes for code comments (cc04d045) 2016-01-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (8548c6ba) 2016-01-12 Andrew Hayzen * Merge of trunk (22b3a35f) * Switch to using Qt GridView instead of custom CardView. Fixes: https://bugs.launchpad.net/bugs/1480269. (dde4b1fa) * Merge of trunk (50678608) * Update copyright years for modified files (941dfe34) * Merge of trunk (846aed4e) 2016-01-11 Andrew Hayzen * Use ListItemLayout for listitems to improve performance and match design guidelines. Fixes: https://bugs.launchpad.net/bugs/1480269, https://bugs.launchpad.net/bugs/1526247. (845e37b6) 2016-01-09 Andrew Hayzen * Fix for extra margin on BlurredHeader; Fix for missing margin at top of Page due to the unset of anchors.fill when the header is locked (1ba220f6) * Ensure properties are order alphabetically (5566e2ba) 2016-01-07 Andrew Hayzen * Bump QtMultimedia import to 5.6 and remove unused ones (f70a99be) 2016-01-06 Andrew Hayzen * Fix for margins around gridview (0a307e38) * Adjust padding so it is the same as before (0fd60acb) * Make the fontSize match what it was before for the title and subtitle (5c9b6e2e) * Fix for missed property (4b2234ea) * Use ListItemLayout for listitems to improve performance and match design guidelines (LP: #1526247). (e7695960) * Merge of trunk (fe1f2176) * Workaround for pad.lv/1531016 (gridview juddery) (e9664440) * When entering the stop state, if there is other media in the playlist instead enter the pause state so that position and duration can be retrieved (1fb051ed) 2016-01-05 Andrew Hayzen * Set timer to 48ms and repeat to false (0039f728) * Workaround for bug 1494031 by querying gst for the position and duration after the source has been set (6fff98ce) 2016-01-05 Vamshi Balanaga vamrocks602@gmail.com * Add test to make sure that the LibraryEmptyState page is visible when no music is detected on the device. Fixes: https://bugs.launchpad.net/bugs/1261587. (3b228767) 2016-01-04 Vamshi Balanaga vamrocks602@gmail.com * changed location of files to delete, added error message if failed to delete (76295a95) * added myself to the list of authors (1bacd2d8) 2016-01-04 nskaggs * Add manual tests in checkbox format to repo. (83899b4b) 2016-01-04 Andrew Hayzen * Fix typos and bump framework to 15.04.3-qml (1a0ab480) 2016-01-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f7292d1d) 2016-01-02 Andrew Hayzen * Use Item for currentMeta as var cannot be 'seen' by autopilot and add aliases for others that cannot be reached; Change the test_shuffle as shuffle now works :-); Artist should now be author (1cd23770) 2015-12-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (59c3f48b) 2015-12-24 Andrew Hayzen * Rename NewPlayer.qml to Player.qml as old player has now been totally removed (a6c9ceb5) 2015-12-23 Andrew Hayzen * Fix for currentIndex becoming 1 not 0 after stopping from EndOfMedia (0c943621) * Merge of trunk (83b6fa5c) * Fixes to code commentary in NewPlayer.qml (48c6461a) * Various fixes from code review and extra code commentary (4bab3fd0) * Various fixes from code review (c2ba0c1e) 2015-12-22 Vamshi Balanaga vamrocks602@gmail.com * Add test to make sure that the LibraryEmptyState page is visible when no audio is detected on the device (LP: #1261587). [ Girish Rawat ]; Expanded and updated READMEs (dfefc702) * changed method name to actual method name (d23ab59f) * changed method name to actual name defined in tests/autopilot/music_app/__init__.py (5aa8e2ea) 2015-12-22 Girish Rawat * Expanded and updated READMEs. (85b3f61b) * Updated design section in README.md (76c023f1) 2015-12-21 Andrew Hayzen * Revert flip of start and end (a576c2fe) * Flip removeItems start and end around (f6be893b) * Bump QtMultimedia import to 5.6 and remove unused ones (7f94ea8c) 2015-12-19 Vamshi Balanaga vamrocks602@gmail.com * Made coding convention changes as recommended by ahayzen. (3bd5df70) 2015-12-18 Vamshi Balanaga vamrocks602@gmail.com * modified audio file removal parameters and changed schemaVersion to 10 (09330112) 2015-12-18 Girish Rawat * Edited READMEs (d4dbc3ef) 2015-12-17 Vamshi Balanaga vamrocks602@gmail.com * moved changelog information to correct location (3d7ce39c) * modified code to follow pep8 guidelines (91c19c50) * [ Vamshi Balanaga ] Add test to make sure that the LibraryEmptyState page is visible when no audio is detected on the device (LP: #1261587). (de8a8889) * modified code to follow pep8 and pyflake guidlines (ab0630e9) 2015-12-18 Girish Rawat * Fixed typos and improved READMEs (80e4c78c) 2015-12-17 Vamshi Balanaga vamrocks602@gmail.com * added try-catch clause while removing files. (b232f70d) * appended to _create_music_library() : added code to remove music files from local music dir if test concerns an empty database (50085558) * cleaned up code. (ce80da13) * made another change requested by nskaggs. (60b275c7) * Made the changes that nskaggs requested. (486cf083) 2015-12-18 Girish Rawat * Expanded and fixed READMEs (e66ff3fe) 2015-12-16 Vamshi Balanaga vamrocks602@gmail.com * cleaned up code (7d0ec410) * added visible attribute to LibraryEmptyState and accessed it in test_display_message_when_no_music (f903024a) 2015-12-17 Andrew Hayzen * Use the new removeItems(start, end) and rename clear_wrapper to clearWrapper (b22bf472) 2015-12-16 Vamshi Balanaga vamrocks602@gmail.com * patched empty databaseinjection bug (bcbe8ca3) * stuff (e7b32b7e) 2015-12-16 nskaggs * fix patching (d928d25f) 2015-12-16 Vamshi Balanaga vamrocks602@gmail.com * test_display_message_when_no_music() fails, caused by incorrect 'injection' of the database (38c08abf) * got the injection to work, but resulting output is not what is desired. (acd2d158) 2015-12-16 nskaggs * add checkbox tests + provider (2be7a72d) 2015-12-15 Vamshi Balanaga vamrocks602@gmail.com * fixing sql errors (4c27bd3f) * fixing sql errors (af9f5f62) * trying new command to create table schemaVersion, still getting error: table schemaVersion already exists, when executing (f86a8d4b) * created base class for the BaseTestCaseWithPatchedHome and EmptyLibraryWithPatchedHome classes and inherited from it all the methods that both classes share. (456b7341) 2015-12-15 Andrew Hayzen * Allow wrapping maximum of 2 lines in a Card with 3 lines in total and preference to the first label (d9736752) 2015-12-14 Vamshi Balanaga vamrocks602@gmail.com * execution fails at EmptyLibraryWithPatchedHome._patch_mediascanner_home() on line: cur.executescript(sql) (da8101b4) * not sure what happened here. (cf1ec3db) * created empty database with same structure as previous to simulate an empty library (b0e74965) * added an objectName to allow it to be accessed by autopilot (d7996632) * added test to see if LibraryEmptyState page is visible after loading an empty database (6c3d6584) * added class to load empty database (a09a5fd6) * added a class and respective methods to access the LibraryEmptyState Page (d8b400ab) * added an empty database to use to check the LibraryEmptyState (db20e5c7) 2015-12-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (59148968) 2015-12-06 Andrew Hayzen * Possible fix for flaky autopilot test case (50848835) * Switch to using Qt GridView instead of custom CardView (125a18ee) 2015-12-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (697e5812) 2015-12-04 Ken VanDine * Install the content-hub peer registration json file properly when installing from a deb. Renamed .desktop file when installed from deb. . (e5f433da) 2015-12-04 Victor Thompson * merge of trunk (00399403) * update changelog (1d1e38f2) 2015-12-04 Andrew Hayzen * Release 2.2ubuntu2 and start on 2.3. (9d199f9e) 2015-12-03 Ken VanDine * Install the content-hub json file in the correct place for peer registry (b9a10aa9) * merged release-2.2ubuntu2 branch (29c9a818) * fixed click build (49c67a84) 2015-12-03 Andrew Hayzen * Release 2.2ubuntu2 and start on 2.3 (f3a1e769) 2015-12-02 Ken VanDine * Install the content-hub peer registration json file properly when installing from a deb. Renamed .desktop file when installed from deb. (b921382b) 2015-11-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e86eff98) 2015-11-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d6fce9f9) 2015-11-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1f4c4dc9) 2015-11-25 Andrew Hayzen * Do not stop when repeat is enabled on EndOfMedia (b8cfea82) * Fix for UserMetrics not detecting song change (d3290798) 2015-11-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (941f2d2d) 2015-11-23 Andrew Hayzen * Only show Add To Playlist on FullView and Clear Queue on Queue view (90999f32) * Colour next/previous etc button pressed (07d426ab) 2015-11-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6792fa7e) 2015-11-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (58e93bfc) 2015-11-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (10416c5e) 2015-11-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (578c5b9e) 2015-11-18 Andrew Hayzen * Wrap clear method to ensure stop is called first; Remove legacy code and add some extra code commentary (a89cbc70) 2015-11-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (152500e7) 2015-11-18 Andrew Hayzen * Check canGoPrevious and canGoNext in all instances where previous and next are used (8671a8fc) 2015-11-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c23f200f) 2015-11-17 Andrew Hayzen * Show now playing page when shuffling tracks (d785986e) * Fix some missed mediaCount to itemCount conversions (fe1d573f) * Fixes for playRandomSong(model) so that it plays (c22c1e0d) * Allow canGoPrevious for any track that has progressed more than 5 seconds (5888fc01) * Merge of trunk (9e356e5c) * Workaround for bug 1514143 by locking the header when searching. Fixes: https://bugs.launchpad.net/bugs/1514143. (2b817fd7) * Merge of trunk (b6ab0494) * Add code comment for fixed header height (7153eb7c) 2015-11-17 Victor Thompson * Resolve FIXMEs/TODOs in main qml file. (c0364e3a) 2015-11-16 Victor Thompson * Merge of trunk and resolve conflicts (5e29b45d) * Update Theme files for UbuntuShape color. (c8df112e) 2015-11-16 Andrew Hayzen * Fix for removing tracks and being left on an empty now playing page (31e76698) * Merge of trunk (a9cebd96) 2015-11-16 Victor Thompson * Add initial page sections to Now Playing view. Fixes: https://bugs.launchpad.net/bugs/1447428. (74115749) 2015-11-16 Andrew Hayzen * Workaround for bug 1514143 by locking the header when searching (7096887c) * Fixes for onStopped (66206f8c) * Further tweaks for AP (a66c62ae) 2015-11-15 Victor Thompson * Merge trunk and resolve conflict (60c76a74) * Resolve comment. (c450320c) 2015-11-15 Andrew Hayzen * Various fixes for autopilot (3157b765) 2015-11-14 Victor Thompson * Resolve FIXMEs/TODOs in main qml file (ac195480) * Update opacity of NowPlayingToolbar buttons. (49043f55) 2015-11-13 Andrew Hayzen * Fixes for add to playing from queue due to source vs filepath etc (7e71210e) * Add .empty property to MediaPlayer.Playlist; Pop the Now Playing page when the queue is empty (3fde2f6e) * Merge of lp:~phablet-team/music-app/final-declarative-playlist-api (6e1863b4) 2015-11-13 Jim Hodapp * Fix function name. (eaabab4d) 2015-11-12 Jim Hodapp * Add queue restore error message (a04488ae) * Make sure save queue and restore queue work (87d42043) * Updated play queue saving debug statements (92c83899) * Debug output for storing play queue (25d78bd0) * Debug output for restoring play queue (404cf72b) * Restore queue functionality should work again. (92de815c) * Undo last change since it's a signal for the MediaPlayer interface, not the Playlist interface. (ce1013e1) * Invalid property change event, fixed. (d12fbd0c) * Invalid property change event, fixed. (8019f34d) * removeItem instead of removeItems (3031ca14) 2015-11-11 Victor Thompson * Remove repeater for getting album titles in Artists.qml (78ba7662) 2015-11-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (5d5a38fd) 2015-11-10 Jim Hodapp * More changes for new QDeclarativePlaylist API. (cd39be25) * More changes for new QDeclarativePlaylist API. (842af82f) * Avoid addItems function name overlap with QML API (82d0f8c3) * More changes for new QDeclarativePlaylist API. (72ab2edf) * More changes for new QDeclarativePlaylist API. (c68b2bf1) * More changes for new QDeclarativePlaylist API. (c0ef200d) * More changes for new QDeclarativePlaylist API. (b85390c4) * Convert to new QDeclarativePlaylist QML API. (6c45b360) 2015-11-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (89f59237) 2015-11-08 Victor Thompson * Update canned mediastore.db schema version from 9 to 10.; Add directions for updating and debugging schema version changes. . (08282944) 2015-11-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (39825e63) 2015-11-04 Victor Thompson * Remove onVisibleChanged and add code to close multiselection. (aefb12b7) 2015-11-03 Andrew Hayzen * Use Playlist.moveSource(from, to) (df17f2a3) 2015-11-02 Victor Thompson * Fix AP. (86b586ad) * Merge trunk and resolve conflicts. (a6b60961) * Changelog update (633b194e) * Add directions for updating and debugging schema version change. (e77460ce) 2015-11-02 Andrew Hayzen * Fixes for differences with new media-hub model and bad merge conflict resolution (8dd9ec3c) * Merge with trunk (2100d4a1) * Extra protection against no tracks (23219fe2) * Switch to using the new listitems within the SDK. Fixes: https://bugs.launchpad.net/bugs/1400551, https://bugs.launchpad.net/bugs/1472080. (594809fe) * Merge of trunk (ffa8fdab) 2015-11-02 Victor Thompson * Add FIXME. (c16a3a0d) * Merge trunk and resolve conflicts. (7ed3f14e) * Update canned mediastore.db schema version. Fixes: https://bugs.launchpad.net/bugs/1511585. (4dd4dd2c) * Merge trunk and resolve conflict (c07062cf) * Update app to use the Ubuntu Components version 1.3. Fixes: https://bugs.launchpad.net/bugs/1508363. (28e5e333) 2015-11-02 Andrew Hayzen * Fix for test_pressing_prev_after_5_seconds (0cb731f2) * Fix for test_select_and_delete_playlist test (7e95b03a) * Sync with upstream (70c0d19c) * Tidy code (0e0c5f34) * Further fixes for ContentHubExport.qml (e5c0b490) * Fix for ContentHubExport.qml page not being converted to new format (8dbece04) * Add popup import to ContentHubWaitDialog.qml (2df65d7d) 2015-11-01 Victor Thompson * Update table structure and changelog. (f7191efd) 2015-11-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4338711f) 2015-10-31 Victor Thompson * More AP tweaks (a65458f8) * Fix walkthrough AP issue. (4cdeb7ae) 2015-10-31 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a0bf9bac) 2015-10-29 Victor Thompson * Update changelog (362a3ed2) * Update canned mediastore.db schema version. (215214b9) 2015-10-29 Andrew Hayzen * Merge of trunk (746daa44) * FIx for Autopilot Label is now UCLabel (0b6d0f9e) * Various fixes for inline comments (cab6d2db) 2015-10-28 Andrew Hayzen * Implement option to defer a shuffle until a model count is reached (37237116) * Add ability to defer setting the currentIndex and playbackState until the mediaCount is correct (2db85e0c) 2015-10-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (374d24cb) 2015-10-28 Andrew Hayzen * Pull of uc1.3 branch (214ed5df) * Use a hardcoded value for header.height for now (ccd56666) 2015-10-27 Andrew Hayzen * Initial autopilot fixes (e12448bc) * Reenable reordering in the queue (7d5b9adf) * Re-add storing of the Queue in a db for now until save()/load() work (67451d0c) 2015-10-26 Andrew Hayzen * Provisional change to use addSources instead of addSource (7d9e01e4) 2015-10-24 Victor Thompson * Add initial page sections to Now Playing view (d0331597) * Fix changelog (6977e9b0) * Update changelog (4807943c) * Hide the header in the Walkthrough and the LibraryEmptyState. (2c942b5b) 2015-10-23 Victor Thompson * Hardcode header height. (e939e090) * Fix for SongsView (53b3790c) 2015-10-22 Victor Thompson * Update Popups. (6da4d40c) 2015-10-21 Andrew Hayzen * Use the page width rather than header.width (884d68c7) * Pull of lp:~vthompson/music-app/music-uc1.3 (6b2287a2) 2015-10-20 Victor Thompson * Change to SuruDark theme to resolve theme issues for now (40bcaece) 2015-10-18 Andrew Hayzen * Switch BlurredHeader to inherit from an Item not ListItem (f1ed2d59) * Rebase on lp:~vthompson/music-app/music-uc1.3 (7f98219d) 2015-10-18 Victor Thompson * Update framework (69ee1aad) * Merge of trunk and resolve conflict (05a94e40) 2015-10-18 Andrew Hayzen * Removal of import Ubuntu.Components.ListItems 1.0; Workaround for #1507339 (99d3d5ff) * Merge of trunk (315fded8) 2015-10-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2361d932) 2015-10-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f0a2f74b) 2015-10-08 Andrew Hayzen * Disable save() call in saveQueue() for now (2c7ff710) 2015-10-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3ed5a29c) 2015-10-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (66e8fae8) 2015-10-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2b8112af) 2015-10-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (061b0507) 2015-09-29 Andrew Hayzen * Add canGoPrevious and canGoNext, also link with previous and next buttons (9d820fd2) 2015-09-25 Victor Thompson * Remove some deprecated code for the UbuntuShape image property. (33c9d1cc) * Remove deprecated properties for UbuntuShape. (a7821965) 2015-09-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (fd2a14cd) 2015-09-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4953000c) 2015-09-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d434dedf) 2015-09-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c29ab1c8) 2015-09-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e06f1fc7) 2015-09-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ee02cbb0) 2015-09-10 Andrew Hayzen * Detect onStopped signal (408428c8) 2015-09-09 Andrew Hayzen * Connect EndOfMedia state (fc637a87) * Merge of trunk (da973ada) 2015-09-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a98f0f06) 2015-09-08 Bartosz Kosiorek * Reduce size of png images (with tinypng.com) to decrease click size and improve performance. (3a9f4f14) * Fix changelog (896b592e) * Revert minor version increase. (f7cd520b) 2015-09-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (038f1032) 2015-09-07 Bartosz Kosiorek * Update manifest file (148d5ff2) * Remove redundant image files. (629bc413) 2015-09-05 Bartosz Kosiorek * Fix changelog and increase version number (04aed813) * Remove not used images, to reduce click size. (cf3c1296) 2015-09-04 Andrew Hayzen * Release music-app 2.2. (bb6b864c) 2015-09-05 Andrew Hayzen * Release music-app 2.2 (a18574ef) 2015-09-05 Bartosz Kosiorek * Reduce size of images (with tinypng.com) to decrease click size and improve performance (890741ef) 2015-09-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (26423186) 2015-09-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9be14137) 2015-09-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (cf6b91cf) 2015-08-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (8697075c) 2015-08-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f3514dc9) 2015-08-28 Victor Thompson * Always fit the cover art to vertically fill the BlurredBackground. (504a2bf7) 2015-08-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d2c2bf5c) 2015-08-27 Victor Thompson * update (f19e4afd) * Revert unapproved push (96579eac) * Always fit the cover art to vertically fill the BlurredBackground (38596e7b) * update changelog and 1 file. (cb2046dc) 2015-08-28 Victor Thompson * Allow arrow keys to control the initial walkthrough. Fixes: https://bugs.launchpad.net/bugs/1482760. (148515e9) 2015-08-27 Victor Thompson * Merge of trunk (8bb70c17) * Merge of trunk (df0ac577) * Update to use event.accepted (40c4f51d) * Force playlist tracks to sync. Fixes: https://bugs.launchpad.net/bugs/1483962. (930f3fe5) * set many, rather than all (b89f0f19) 2015-08-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1d220b7f) 2015-08-26 Victor Thompson * Update changelog (20362be6) * Force playlist tracks to sync. (52ba7e2e) * Return early if MainView catches the key event. (9eed8d9d) 2015-08-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (37e6f549) 2015-08-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2dcfff5e) 2015-08-25 Andrew Hayzen * Create provisional load/save methods (49568ff0) 2015-08-24 Andrew Hayzen * Merge of trunk (f03590cc) * Switch to QtMultimedia 5.4 as this is a vivid landing now (72eea502) * Add support for a content-hub source in both single and multiple selection modes. Fixes: https://bugs.launchpad.net/bugs/1357324. (603e1042) * Add a tickAction to the search mode; When cancelling from search clear the selection (5d1cf7df) 2015-08-21 Andrew Hayzen * Update .pot :-) (70f88e35) 2015-08-19 Andrew Hayzen * Don't show the toolbar on ContentHubExport.qml (2e0ce135) * Add searchbar to content-hub export (3feff144) 2015-08-18 Andrew Hayzen * Add support for a content-hub source in both single and multiple selection modes (96307cc7) 2015-08-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (903872f2) 2015-08-12 Victor Thompson * Upgrade to Ubuntu Components 1.3 (9cb71109) 2015-08-09 Victor Thompson * Merge trunk and resolve conflict (e8be6238) * Update (b0aa323f) * Show all README files in QtCreator. (5273a935) 2015-08-08 Victor Thompson * update solution (5d0c6d22) * Allow arrow keys to control the initial walkthrough (4141e232) * Show all README files in QtCreator (f7f9aa56) 2015-08-06 Victor Thompson * Fix typo in README.autopilot and clarify the instructions. (a26846f6) 2015-08-04 Victor Thompson * Merge of trunk of resolve conflicts (dc67ddc4) 2015-08-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3edba27d) 2015-07-29 Victor Thompson * Push the LibraryEmptyState to preserve existing stack. Fixes: https://bugs.launchpad.net/bugs/1478921. (c9792bf2) 2015-07-28 Victor Thompson * Update visibility properties (fcee8724) * Push the LibraryEmptyState to preserve existing stack (321e865c) 2015-07-26 Andrew Hayzen * Fix for console errors when the parent change helpers are called. (34e4b0d2) * Fix for console errors when the parent change helpers are called (d7e632c1) * Workaround for onCurrentSourceChanged not being called when appending and possibly remove/changing (d408bf68) * Merge of trunk (c3826468) 2015-07-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7949e16e) 2015-07-25 Victor Thompson * Fix to allow the LibraryEmptyState to work again. Fixes: https://bugs.launchpad.net/bugs/1478162. (2803b303) 2015-07-24 Victor Thompson * update changelog (b8d1d6a8) * Fix to allow the LibraryEmptyState to work again (b113bbdd) * Fix SongsView album art for albums and genres. Fixes: https://bugs.launchpad.net/bugs/1477366. (789d7493) 2015-07-23 Victor Thompson * Update commentary and changelog (b0094152) 2015-07-22 Victor Thompson * Fix SongsView album art for albums and genres (4ab8a6fd) * Update instructions per weather app updates. (2730f0bd) 2015-07-19 Victor Thompson * Add password param (d40ce84a) * Fix typo in README.autopilot (06de4ecb) 2015-07-18 Victor Thompson * Refresh cover art when model count changes. Fixes: https://bugs.launchpad.net/bugs/1475768. (8dde2669) 2015-07-18 Andrew Hayzen * Merge of trunk (334fe49d) * Add changelog (dc7e3f77) 2015-07-17 Victor Thompson * Fix 1475768 (5ee2be98) 2015-07-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (329f79ce) 2015-07-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3cc27cd8) 2015-07-08 Victor Thompson * Make play/pause button in the toolbar larger. (617f1f62) * Make play/pause button in the toolbar larger. (8415eea7) 2015-07-08 Andrew Hayzen * Ensure that the lowest rebuild index is retained; Use an alias to set the model as the CardView knows about preloading now. Fixes: https://bugs.launchpad.net/bugs/1470755. (9b36d122) * Remove empty code comment line (ddb904e5) 2015-07-07 Alan Pope * Add AUTHORS file. (98d80adf) 2015-07-06 Alan Pope * Add AUTHORS file (df6b12eb) 2015-07-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d2693147) 2015-07-02 Andrew Hayzen * Ensure that the lowest rebuild index is retained; Use an alias to set the model as the CardView knows about preloading now (13735b60) 2015-07-01 Victor Thompson * Fix console errors for other pages with children that do not change. (ffd56fae) 2015-06-30 Victor Thompson * Fix console errors for other pages with children that do not change. (a0d60bdd) 2015-06-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (78675c3d) 2015-06-30 Andrew Hayzen * Tell content-hub we have finished with the activeTransfer. Fixes: https://bugs.launchpad.net/bugs/1469452. (51ba4a35) * Bump content-hub import version (7db934b3) 2015-06-29 Andrew Hayzen * Use the method instead as that actually tidies up :-) (3b39faa0) * Tell content-hub we have finished with the activeTransfer (71fb0cf3) 2015-06-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (634ed3af) 2015-06-28 Victor Thompson * Fix unicode issues. Fixes: https://bugs.launchpad.net/bugs/1465764. (ebce73cb) 2015-06-28 Andrew Hayzen * Fix for minor console error (8f862192) * Merge of lp:music-app/refactor (3a4281d5) 2015-06-27 Andrew Hayzen * Bump framework to 15.04 and apparmor policy version; Bump QtQuick to 2.4 and UITK components to 1.2; Remove useDeprecatedToolbar as it does not exist anymore. (3eb96184) * Add changelog line (9a9cbc8d) * Bump app versions from 2.1 to 2.2 (4b51cae2) * Fix child page freezes when stacked onto recent or playlists. (3d15c863) * Bump remaining files (cfb62660) * Pull of extra protection from lp:~ahayzen/music-app/fix-child-page-freezes (fb5d0f6e) * Extra protection on timer to ensure we are on a playlists page (b6bc464c) * Fix for autopilot issue; Fix for bad merge conflict (e14acd24) * Pull of simplify from lp:~ahayzen/music-app/fix-child-page-freezes (d3237dd8) * Simplify changes (cd62e676) * Pull of changes in lp:~ahayzen/music-app/refactor-use-sdk-listitems (40904d7b) * Fixes for autopilot; Fixes for freezes on child pages (24ebf9ef) * Fix for playlists tracks model not being updated when inside a playlist (f6a3977b) * Ensure indicies are sorted and fix issue of multiselect delete within a playlist not working (3e540966) * Add some code comments (fb0e378d) 2015-06-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a59937d3) 2015-06-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (714f6026) 2015-06-26 Andrew Hayzen * Initial port to new MediaPlayer object with playlist support (074902e6) 2015-06-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2d29984c) 2015-06-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (927b8f7d) 2015-06-21 Andrew Hayzen * Tweaks to listitems (5e45d12d) * Pull changes (fc4971ff) 2015-06-20 Victor Thompson * Make utility function. (b7f3c3ad) * Make utility function. (f42649bb) * Make utility function. (85ba12ac) 2015-06-20 Andrew Hayzen * Merge of lp:music-app/refactor (1993f8e6) * Also bump app/components/Themes/* (e03a1268) 2015-06-17 Victor Thompson * Alphabetize (da679e53) * Update try/catch. (260223be) 2015-06-16 Victor Thompson * Fix unicode issues (2b7148bf) 2015-06-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e154eb4e) 2015-06-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4568d966) 2015-06-07 Victor Thompson * Fix reorder issue, import needed files/components. Fixes: https://bugs.launchpad.net/bugs/1462672. (96b9dc4d) 2015-06-07 Andrew Hayzen * Merge of trunk (61ddb336) * Merge of trunk (18ae40d3) 2015-06-06 Victor Thompson * Fix reorder issue, import needed files/components. (6e791307) 2015-06-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c9d6f2d4) 2015-06-04 Andrew Hayzen * Safeguard against all errors when reading the ms2 lookup and setting into our currentMeta*. Fixes: https://bugs.launchpad.net/bugs/1460916. (21f76b8c) 2015-06-04 Victor Thompson * Decode URI before passing to mediascanner lookup function. Fixes: https://bugs.launchpad.net/bugs/1460916. (3fce2329) 2015-06-04 Andrew Hayzen * Remove unneeded (legacy) comment (78545ca9) 2015-06-03 Victor Thompson * Remove extra call to decode (1caab092) 2015-06-03 Andrew Hayzen * Remove debug/testing lines :-) (bc5d2e68) * Safeguard against all errors when reading the ms2 lookup and setting into our currentMeta* (9542c468) 2015-06-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d3f55924) 2015-06-02 Victor Thompson * Decode URI before passing to mediascanner lookup function (eebc61f0) 2015-05-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b07dc576) 2015-05-21 Alan Pope * Update icon as per lp:1457424. Fixes: https://bugs.launchpad.net/bugs/1457424. (57a429a5) * new icon as per lp:1457424 (3b2f7781) 2015-05-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (aeecb100) 2015-05-18 Launchpad Translations on behalf of music-app-dev * Update autopilot readme for new app structure.; Merge of remix and build .pot file. (e6d23517) 2015-05-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6d278733) 2015-05-14 Victor Thompson * Merge of remix and build .pot file (ff9f96c8) 2015-05-13 Victor Thompson * Update autopilot readme for new app structure. (561066bc) 2015-05-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (56058d91) 2015-05-10 Victor Thompson * Update version 2.1 in preparation for release of refactor series. (f95c38b1) 2015-05-09 Victor Thompson * Update version 2.1 in preparation for release of refactor series. (f4fb0821) 2015-05-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b7e14b50) 2015-05-04 Andrew Hayzen * 'Correct' autopilot changes to work around bug 1350532 (5254d2c8) 2015-05-04 Victor Thompson * Prevent click build warnings for unterminated string literals. (2ac29d54) * Prevent click build warnings for unterminated string literals. (6585f921) 2015-05-03 Andrew Hayzen * Switch to using the new listitems within the SDK (0ea8b0f0) * Hacky solution to keep SDK autopilot helpers happy for now (3a6279dd) * Revert the Revert as jenkins is still on utopic so will fail anyway (032c9cc0) * Revert back to QtQuick2.3 (d876670d) * Autopilot tweaks (70ec70cc) * Fixes for autopilot (90681da0) * Remove useDeprecatedToolbar as it does not exist anymore (0afc53fc) * Bump QtQuick to 2.4 and UITK components to 1.2 (43d1324c) 2015-05-02 Victor Thompson * Prevent click build warnings for unterminated string literals (4474a2d3) * Prevent click build warnings for unterminated string literals (37508f63) 2015-05-02 Andrew Hayzen * Fixes and add preloading compatibility to ColumnFlow.qml. (9b0d8c79) * Bump framework to 15.04 and apparmor policy version (f7e9f3f9) * Fixes and add preloading compatibility to ColumnFlow.qml. (dc1ea1c0) * Fixes and add preloading compatibility to ColumnFlow.qml. (1ee19f96) * Fixes and add preloading compatiblity to ColumnFlow.qml (78f7e9f9) 2015-04-29 Andrew Hayzen * Only autoset the source due to queue count changes when the queue worker has completed. (17805cbd) * Don't check if completed if it cannot load (f8a7bb60) 2015-04-29 Launchpad Translations on behalf of music-app-dev * Added a test case for deleting a playlist. Fixes: https://bugs.launchpad.net/bugs/1428454. (Darran Kelinske) * Translation updates. (e9a42a27) 2015-04-29 Andrew Hayzen * Only autoset the source due to queue count changes when the queue worker has completed (ac2e5aed) * Improve the way the currentIndex is restored so that there is less/no delay. (e573d7ae) * Further tweaks for jenkins :) (5a938c4d) 2015-04-28 Andrew Hayzen * Add a wait for mp3 source (f37931d1) * Remove playlist dialog is its own type due to it having a custom property (5e700e78) * Add missed objectNames (3c1dbad8) * Added a test case for deleting a playlist. Fixes: https://bugs.launchpad.net/bugs/1428454.; Translation updates (76cb72ef) * Add extra check to stop errors when restoring an empty queue (ad55cb5b) * Improve the way the currentIndex is restored so that there is less/no delay (6c01bc47) 2015-04-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (dd7a2859) 2015-04-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f550f775) 2015-04-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (5cd269b1) 2015-04-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (68a07e99) 2015-04-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (376c724a) 2015-04-06 Andrew Hayzen * Delay urlhandler/content-hub calls until after walkthrough is complete. Fixes: https://bugs.launchpad.net/bugs/1438317. (2937c775) * Change from delay-request.js to stored-request.js (8e2d6a7c) 2015-04-05 Victor Thompson * Improve multiselect delete for playlist items. Fixes: https://bugs.launchpad.net/bugs/1439185. (904a0673) * New line (966db2fc) * Improve multiselect delete for playlist items (0eea8948) * Improve multiselect delete for playlist items. Fixes: https://bugs.launchpad.net/bugs/1439185. (f9b5f3aa) 2015-04-05 Andrew Hayzen * Change ExternalRequest.qml to delay-request.js (fa0783b2) 2015-04-05 Victor Thompson * Execute within a single transaction. (2f64d54a) * reuse removeFromPlaylist() (7417311e) * Remove returns (98f3000a) * Remove returns (2e0676df) * Remove returns (51fa08be) * Improve multiselect delete for playlist items (d0aaed45) 2015-04-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ce422ce7) 2015-04-04 Andrew Hayzen * Delay urlhandler/content-hub calls until after walkthrough is complete. Fixes: https://bugs.launchpad.net/bugs/1438317. (4248cc91) * Add wait for queueLoaderWorker in processAlbum() (a77302c5) * Add wait for queueLoaderWorker in processAlbum() (078da97b) 2015-04-03 Andrew Hayzen * Remove unused vars (2940ee3d) * Only store the last request; Use a generic external request store (280fb250) * Fix for missed change (2c6b4ab3) 2015-04-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2630bfdb) 2015-04-03 Andrew Hayzen * Only delay one request of any type (content-hub/urihandler) (ce81999e) 2015-04-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (67ea451e) 2015-03-31 Andrew Hayzen * Delay urlhandler/content-hub calls until after walkthrough is complete (eb482a81) * Delay urlhandler/content-hub calls until after walkthrough is complete (272d6190) 2015-03-30 Victor Thompson * Make SongsView and ArtistView adaptive. Fixes: https://bugs.launchpad.net/bugs/1436771. (4550c934) 2015-03-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (5e06cebd) 2015-03-30 Victor Thompson * Make SongsPages and AlbumsPages adaptive. Fixes: https://bugs.launchpad.net/bugs/1436771. (4015566d) 2015-03-29 Victor Thompson * Make SongsPages and AlbumsPages adaptive (af0ccc00) * Move label to the top when over 60 GU (4fd60618) 2015-03-26 Victor Thompson * Make the spacing similar to before (02e28f5b) * Make SongsPages and AlbumsPages adaptive (79edcefa) 2015-03-25 Andrew Hayzen * Ensure dialogs are closed before popping a page. Fixes: https://bugs.launchpad.net/bugs/1435658. (ab96e134) * Ensure all pageStack.pop()'s use mainPageStack.goBack() instead (5db0f5c6) 2015-03-24 Andrew Hayzen * Ensure dialogs are closed before popping a page (79ba2372) 2015-03-24 Victor Thompson * Force active focus to dialogs. Fixes: https://bugs.launchpad.net/bugs/1435260. (481bbe2a) * Force active focus to dialogs. Fixes: https://bugs.launchpad.net/bugs/1435260. (03a4555d) 2015-03-23 Victor Thompson * Force active focus to dialogs (96def1ae) * Force active focus to dialogs (0f068ec8) 2015-03-24 Darran Kelinske darran.kelinske@gmail.com * Added a test case for deleting a playlist. Fixes: https://bugs.launchpad.net/bugs/1428454. (66756cea) 2015-03-21 Darran Kelinske darran.kelinske@gmail.com * additional formatting/syntax fixes :) (48f0c2e8) 2015-03-20 Darran Kelinske darran.kelinske@gmail.com * fixing more spacing issues (bc97c9d3) 2015-03-19 Darran Kelinske darran.kelinske@gmail.com * restore tracks variable that was removed (98026d4c) * fixing formatting and naming issues (05d6eb29) * Added a new test for the music app which tests deleting a playlist (d6779763) 2015-03-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e155ac67) 2015-03-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (29c3506a) 2015-03-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2cbb558b) 2015-03-09 Andrew Hayzen * Split content-hub, uri-handler and metrics into Helpers. (20240218) * Rename MetricHelper.qml to UserMetricsHelper.qml (4b230024) 2015-03-08 Andrew Hayzen * Merge of lp:music-app/refactor (d2db1489) * Only async load Queue as it causes poor loading experience on low powered devices (cherry pick from lp:~music-app-dev/music-app/refactor-now-playing-as-sidebar r847); Split the NowPlaying page into NowPlaying, Queue and NowPlayingToolbar (cherry pick from lp:~music-app-dev/music-app/refactor-now-playing-as-sidebar r841). (2da5cb20) 2015-03-07 Launchpad Translations on behalf of music-app-dev * Merge from trunk to refactor to pull in trunk revision 832 and updated translations. (011172f2) 2015-03-07 Victor Thompson * Trigger list reset animation when the index did not change. Fixes: https://bugs.launchpad.net/bugs/1428913. (aef68460) * Trigger list reset animation when the index did not change. Fixes: https://bugs.launchpad.net/bugs/1428913. (663e1ac7) 2015-03-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (fedfb2b6) 2015-03-05 Victor Thompson * add new line (c463e1e6) * Trigger list reset animation when the index did not change. (3cd0b0af) * Merge from trunk to refactor to pull in trunk revision 832 and updated translations. (4bb8f9fd) * remove added from property. (6512e1ca) * Trigger list reset animation when the index did not change. (4b7d759d) 2015-03-06 Andrew Hayzen * Destroy dialog before popping page. Fixes: https://bugs.launchpad.net/bugs/1428450. (d73cda25) * Destroy dialog before popping page (e600d42f) * Merge of trunk (5790b121) 2015-03-05 Andrew Hayzen * Move delegates into their own folder in components; Split out multiselect/reorder code from ListItemWithActions.qml into MusicListItem.qml and remove use of primed in ListItemWithActions.qml as it is not used anymore; Fix for ListItemWithActions.qml if user swipes left and clicks where a rightAction would have been (has to be enabled) causes a console error and doesn't reset the swipe. (a1dabf49) 2015-03-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (50d9f4b9) 2015-03-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (90efbcd0) 2015-03-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (313782e7) 2015-03-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4d77078a) 2015-02-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (796a2d9c) 2015-02-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a591961e) 2015-02-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7e319ce5) 2015-02-22 Andrew Hayzen * Sort out autogenerated Component (009da1e5) * Pull further multiselect code into MusicListItem.qml; Remove use of primed as it is not used anymore (975a1ee2) * Split reorder code into a separate component and out of ListItemWithActions.qml; Split out some of the custom multiselect code (217bd17d) 2015-02-17 Andrew Hayzen * Only async load Queue as it causes poor loading experience on low powered devices (cherry pick from lp:~music-app-dev/music-app/refactor-now-playing-as-sidebar r847) (7554e9af) * Split the NowPlaying page into NowPlaying, Queue and NowPlayingToolbar (cherry pick from lp:~music-app-dev/music-app/refactor-now-playing-as-sidebar r841) (36c315c2) 2015-02-16 Andrew Hayzen * Split content-hub, uri-handler and metrics into Helpers (c27f0a36) * Fix for autopilot (ad31bdc6) * Move delegates into their own folder in components; Fix for ListItemWithActions.qml if user swipes left and clicks where a rightAction would have been (has to be enabled) causes a console error and doesn't reset the swipe (4941d194) 2015-02-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f27f0ec4) 2015-02-14 Andrew Hayzen * Split the NowPlaying page into NowPlaying, Queue and NowPlayingToolbar (d303e64e) 2015-02-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7725cc24) 2015-02-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (94527e7a) 2015-02-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (48ac06a7) 2015-02-08 Andrew Hayzen * Create generic MultiSelectListView.qml for handling multiselec. Create MusicListView.qml with our patches to ListVie. Move Flickables from components into their own Flickables folder. (62c46712) * Do not allow LibraryEmptyState loader to be active if content-hub is running. Fixes: https://bugs.launchpad.net/bugs/1418366. (03989c69) * Make use of a Flickables folder (e1e73aa7) * Do not allow LibraryEmptyState loader to be active if content-hub is running (279f546a) * Fix for console error on startup. (a4555224) 2015-02-07 Andrew Hayzen * Merge of trunk (4413b71a) * Move all Dialog components into their own files in components/Dialog. (8fe8c520) * Create common components for Play All, Queue All and Shuffle buttons within 'Views'. (395c3d40) 2015-02-06 Andrew Hayzen * Create common components for Play All, Queue All and Shuffle buttons within 'Views' (5aabd9bf) * Create generic MultiSelectListView.qml for handling multiselec. Create MusicListView.qml with our patches to ListView (10cdd8a8) 2015-02-05 Andrew Hayzen * Fix for console errors with ContentHubWaitDialog.qml (c46ff6eb) * Fix for console error on startup (d49990a8) 2015-02-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b1804538) 2015-02-05 Andrew Hayzen * Merge of trunk (4353b9f1) * Split EmptyStates into a page (for noMusic) and a component (for noPlaylists) and load in async. (08f288ba) * Merge of trunk (2201d639) * Move existing head states into HeadState folder; Create MultiSelectHeadState SearchableHeadState PlaylistHeadState * Migrate AddToPlaylist Albums Artists Genres NowPlaying Playlists Songs SongsView to use the new HeadState. (a4d59107) * Update copyright (d8b31f3d) * Rename PlaylistEmptyState.qml to PlaylistsEmptyState.qml (90d55831) * Rename EmptyPlaylist.qml to PlaylistEmptyState.qml and EmptyState.qml to LibraryEmptyState.qml; Add PlaylistEmptyState.qml to AddToPlaylist.qml (62fa95b2) * Fix for addToPlaylist in MultiSelectHeadState.qml not working (64f737ff) * Don't show addToQueue option in MultiSelectHeadState.qml when in NowPlaying.qml (4768b6c3) * Rename Dialogs to Dialog (780139b2) * Merge of trunk (ecfa12dc) * Simplify header state names; Fix for multiselect delete not working; Fix for songsview allowing delete when listing tracks (3c6e21ea) * Make use of SDK PageStack.push(url, properties) instead of creating the component, object and pushing ourselves. (8201c640) 2015-02-04 Andrew Hayzen * Add missed imports to NewPlaylistDialog.qml EditPlaylistDialog.qml RemovePlaylistDialog.qml (b0edead1) * Move all Dialog components into their own files in components/Dialogs (b2ccd6ac) * Fix for autopilot (61ef43a6) * Move existing head states into HeadState folder; Create MultiSelectHeadState SearchablePageHeadState SearchablePagePlaylistHeadState; Migrate AddToPlaylist Albums Artists Genres NowPlaying Playlists Songs SongsView to use the new HeadState (f892e008) * Make use of SDK PageStack.push(url, properties) instead of creating the component, object and pushing ourselves (9ee836c8) * Split EmptyStates into a page (for noMusic) and a component (for noPlaylists) and load in async (ce6c1cd6) 2015-02-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d1bebbfa) 2015-02-04 Andrew Hayzen * Rename common to components; Move all qml components in components; Move any JS scripts into logic. (09b50245) * Only show JS files in logic dir (595fa4b6) * Merge of trunk (3a3852d8) * Move pages into separate /ui folder; Rename pages to sensible names; Rename images to graphics. (ff790d66) * Rename ArtistAlbums to ArtistView; Rename Songs to SongsVie. Rename Tracks to Songs; Removed music prefix (321799c6) * Merge of trunk (09c62b94) * Merge of trunk (162b116f) * Refactor MusicToolbar.qml to remove legacy code; Move pagestack helpers into mainPageStack. (1e48d530) 2015-02-04 Victor Thompson * Do not show toolbar in the 'Select playlist' view. Fixes: https://bugs.launchpad.net/bugs/1417823. Launchpad automatic translations update. Fixes: https://bugs.launchpad.net/bugs/1417823. (7285e8fc) 2015-02-04 Andrew Hayzen * Change actualCurrentPage to currentMusicPage (f8097438) 2015-02-03 Victor Thompson * Do not show toolbar in the 'Select playlist' view. Fixes: https://bugs.launchpad.net/bugs/1417823. Launchpad automatic translations update. (10be9a90) 2015-02-04 Victor Thompson * Do not show toolbar in the 'Select playlist' view. Fixes: https://bugs.launchpad.net/bugs/1417823. (93c01e96) 2015-02-03 Victor Thompson * Do not show toolbar in the 'Select playlist' view (68f7fc51) 2015-02-03 Andrew Hayzen * Rename common to components; Move all qml components in components; Move any JS scripts into logic (bb3b629a) * Fix for missing imports and AP error (409ad80d) * Fix for missed AP converison of NowPlaying (28a27f91) * Fix for missed images conversion (dcc0a734) * Merge of trunk (3b454f1f) * Merge of trunk (4b2dca96) * Fix for autopilot launcher detection for debian mode. (4eca921b) * Fixes for autopilot (faa177df) * Move pages into separate /ui folder; Rename pages to sensible names; Rename images to graphics (6de9e16c) * Fix for autopilot launcher detection for debian mode (0355385f) 2015-02-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (70dda927) 2015-02-03 Andrew Hayzen * Move applications files into app folder. Fixes: https://bugs.launchpad.net/bugs/1357319. (1e47efc7) * Wait until all worker threads have stopped after calling canLoad=false. Fixes: https://bugs.launchpad.net/bugs/1415697. (21b43c42) 2015-02-02 Andrew Hayzen * Merge of trunk (2e7a9f8a) 2015-02-02 Victor Thompson * Allow walkthrough titles to word wrap up to 2 lines and elide if over 2 lines. Fixes: https://bugs.launchpad.net/bugs/1417043. (e6ec5683) * Remove height from Slide1 intro text to allow it to wrap. (7419872f) * Remove force flag (c4d4f105) * Allow walkthrough titles to word wrap up to 2 lines and elide if over 2 lines. (c5be3c01) 2015-02-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (23b1ae58) 2015-02-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f4eb504a) 2015-02-01 Andrew Hayzen * Fix for indenting (33aee7e3) * Revert dropping of sync as we now wait for workers (b82fa204) * Wait until all worker threads have stopped after calling canLoad=false (17c577ae) 2015-02-01 Victor Thompson * Provide visual feedback on walkthrough buttons; Increase size of walkthrough continue button; Increase size of walkthrough skip button. Fixes: https://bugs.launchpad.net/bugs/1416373. (d74402b9) 2015-01-31 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e0fe8653) 2015-01-30 Victor Thompson * hide both continue and skip buttons on last page of walkthrough. (e9b5ec4c) * Increase size of walkthrough continue button; Increase size of walkthrough skip button (2823c36f) 2015-01-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b091fe47) 2015-01-30 Andrew Hayzen * Fix for canLoad=false queueLoaderWorker (3077fa07) 2015-01-30 Victor Thompson * Make stroked buttons elide text. Fixes: https://bugs.launchpad.net/bugs/1416115. (0957add6) 2015-01-29 Victor Thompson * Make stroked buttons elide text (e32e20eb) * Revert trackClicked() change to stop queue loader. Fixes: https://bugs.launchpad.net/bugs/1415697. (ce6d1bcf) 2015-01-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (07ff3602) 2015-01-28 Victor Thompson * Revert trackClicked() change to stop queue loader (92618992) 2015-01-28 Andrew Hayzen * Tweaks to autopilot (553616d6) * Add missed cmake file (ab07a086) * Move applications files into app folder (b76bc357) 2015-01-28 Victor Thompson * Add notes to translators concerning string lengths. (a19ff66a) 2015-01-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (970a1fb0) 2015-01-27 Victor Thompson * remove newline (8ef14339) * remove newline (a2ad0a16) * Add notes to translators concerning string lengths. (994bc7db) 2015-01-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (084050c3) 2015-01-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b16a7620) 2015-01-26 Andrew Hayzen * Fix for multiselect not clearing when losing focus. (591662de) 2015-01-26 Victor Thompson * Clear the recent db before the model. (864347c0) 2015-01-26 Andrew Hayzen * Fix for multiselect not clearing when losing focus (518157a1) 2015-01-26 Victor Thompson * Use removeQueueList() for single items for performance; Remove removeQueue() and removeQueueItem(). Fixes: https://bugs.launchpad.net/bugs/1414478. (c28e063d) 2015-01-25 Victor Thompson * Use removeQueueList for single items for performance (9b6d7dad) 2015-01-25 Andrew Hayzen * Batch add to playlists and queue to improve responsiveness of the app. (e402ca65) 2015-01-25 Victor Thompson * Clear the db before the model (dfbfa52c) 2015-01-25 Andrew Hayzen * Batch add to playlists and queue to improve responsiveness of the app (f4c85e9c) 2015-01-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4f3aae4d) 2015-01-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (86da2486) 2015-01-23 Victor Thompson * Stop queueLoaderWorker when a track is clicked. Fixes: https://bugs.launchpad.net/bugs/1413451. (cbd2bdaa) 2015-01-23 Andrew Hayzen * Load the toolbar in async (eee5a73b) * Merge of trunk (4c4b7e81) 2015-01-23 Victor Thompson * Fix Queue progress hint not being shown. (bf003f58) * Add the fix to processFile() as well. (c7d4511d) 2015-01-23 Andrew Hayzen * Use styleMusic for the background colour; Change property for workaround name (9a408cb1) 2015-01-23 Victor Thompson * Fix Queue progress hint not being shown (0b4f6313) 2015-01-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3003ad48) 2015-01-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (643ab0e0) 2015-01-21 Victor Thompson * Stop queueLoaderWorker when a track is clicked. (838f20b6) 2015-01-22 Andrew Hayzen * Ensure that walkthrough slides have a max width so that they are consistent with empty states. (ccd7de3a) 2015-01-22 Victor Thompson * Change the Slider theme's background color. (06a6fabf) 2015-01-21 Victor Thompson * Change Slider background color (2e132ad7) 2015-01-22 Andrew Hayzen * Revert using Column in sliders (5784ee54) * Change walkthrough spacing (03e28b72) 2015-01-21 Andrew Hayzen * Refactor MusicToolbar.qml to remove legacy code; Move pagestack helpers into mainPageStack (9cc16a27) * Merge of trunk (e27cef7e) 2015-01-21 Victor Thompson * Align the text on the last slide of the walkthrough; Make the ellipses a bit smaller; Change the "Skip" text to white. (f25dbf2b) * Adjust walkthrough spacing (b43885f7) 2015-01-21 Andrew Hayzen * Ensure that walkthrough slides have a max width so that they are consistent with empty states (a01b5ba1) 2015-01-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c0952c44) 2015-01-21 Andrew Hayzen * Only show the recent model if the recent model is not empt. Remove unused models. (151e2e18) * Merge of trunk (a722f973) * Add new empty states per design specs. (9e29c3f8) * Further tweaks (db05f83e) * If the saved tabIndex is larger than the tab.count pick the last tab instead of recent || albums (f58a024e) * Merge of trunk (a0035c2a) * Fix for active actions; Fix for UI strings (bc644ee0) * Merge of trunk (0526ee4b) 2015-01-20 Andrew Hayzen * Add copyright year; Fix for isRecentEmpty failing if the table doesn't exist (70045c0e) * Fix for typo change 'and' to '&' to prevent double 'and' in one sentence; Add cmake so that Walkthrough appears in qtc. (6cc3d4d1) * Further tweaks :) (276addd6) * Remove unused vars; Update po/com.ubuntu.music.pot as there are UI string removals (c774846d) * Only show the recent model if the recent model is not empt. Remove unused models (4f0b2f4e) * Update the .pot as well :) (3e571bec) * Fix for typo change 'and' to '&' to prevent double 'and' in one sentence; Add cmake so that Walkthrough appears in qtc (6dc92de4) * Increase spacing and move images back into Column (c6e23f85) * Switch search to *either* no music or no playlists (eb522ee5) * Disable search for MusicaddtoPlaylist.qml MusicPlaylists.qml when there is no music instead of no playlists (7c66a45c) * Merge of trunk (81ddd032) 2015-01-20 Victor Thompson * Initial walkthrough prototype. Fixes: https://bugs.launchpad.net/bugs/1372583. (0064089f) 2015-01-20 Andrew Hayzen * Disable header actions when the models are empty (bd0b32be) 2015-01-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6292a45c) 2015-01-19 Victor Thompson * Update toolbar visible toggle (e7139a0a) * Resolve console warnings (0e467a0e) * Set toolbar visible and firstRun to false when finished. (3a29b60f) * Add objectName to FIrstRunWalkthrough.qml (48bf297e) * revert debug code (02570a69) * Add objectName to object. (73c69aa6) * Dynamically create Walkthrough. (6dfcd5bb) 2015-01-19 Andrew Hayzen * Further tweaks to the text size (89b0bef9) 2015-01-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2e261f7d) 2015-01-19 Victor Thompson * Merge AP skip of walkthrough (02d39b96) 2015-01-19 Andrew Hayzen * Skip the walkthrough when running autopilot (5b094587) 2015-01-18 Victor Thompson * update to show walkthrough when there is no music (60ee4c1c) 2015-01-18 Andrew Hayzen * Further tweaks to sizes/paddings (e82a2a37) 2015-01-18 Victor Thompson * Update pot file (2e053211) * Remove force flag (60b6ec55) * Add changes to Walkthrough functionality (6ec22012) 2015-01-18 Andrew Hayzen * Fix width (again) (6e2911e3) * Fix for word wrapping (aa27c4ab) * Add new empty states per design specs (2bb111e8) 2015-01-18 Victor Thompson * Use new assets for graphics and new wording. (127b79af) * Run walkthrough even if the user has music. (fd5ad27d) * Merge of trunk (dff54cfd) 2015-01-18 Andrew Hayzen * Remove tracks from the queue if they have been removed from the library. Fixes: https://bugs.launchpad.net/bugs/1411618. (8d24d1bb) * Stop queueLoaderWorker when content-hub is importing. Fixes: https://bugs.launchpad.net/bugs/1412211. (15d95a36) * Fix for playlist tab count not updating (ea9bb7eb) * Stop queueLoaderWorker when content-hub is importing (8f8b70e8) 2015-01-18 Victor Thompson * Fix cover art swipe directions. (57840095) * Fix cover art swipe directions. (596d040e) 2015-01-18 Andrew Hayzen * Remove entries from playlists (aa328cfe) 2015-01-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f80c5f2d) 2015-01-18 Victor Thompson * Show full cover art in Now Playing; Allow swipe left or right to navigate queue in Now Playing. (2e49f6f5) 2015-01-17 Victor Thompson * update per comments. (f1b0265b) 2015-01-17 Andrew Hayzen * Merge of trunk (aa8eb692) * Remove recent entries (adf2281f) * Fix for queueIndex becoming out of sync; Fix for multiselect removal sometimes deleting the wrong rows (c93fd350) 2015-01-17 Victor Thompson * Use the same placeholder text that is used in creating a playlist when editing the name. Fixes: https://bugs.launchpad.net/bugs/1410639. (a42585e0) 2015-01-17 Andrew Hayzen * Pop songsPage if there are not tracks (6ec4ec03) 2015-01-17 Victor Thompson * Change Now Playing/Queue toggle button. Fixes: https://bugs.launchpad.net/bugs/1398344. (369c3d31) 2015-01-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3251ac02) 2015-01-16 Victor Thompson * Use blank text field when changing playlist name (6d6aad8b) * update pot file (98759631) * update dialog text and button colors (0ec61f90) 2015-01-16 Andrew Hayzen * Remove tracks from the queue if they have been removed from the library (c71839cc) 2015-01-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0796d7f4) 2015-01-16 Andrew Hayzen * Clear from the recent table instead of dropping when clearing. Fixes: https://bugs.launchpad.net/bugs/1411113. (2def0928) 2015-01-15 Andrew Hayzen * Clear from the recent table instead of dropping when clearing (afcb9533) 2015-01-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0ef2dabd) 2015-01-13 Victor Thompson * merge of trunk (171d2131) * merge of trunk (72a7496c) * merge of trunk (c1db68b2) * Use the same placeholder text that is used in creating a playlist when editing the name (2661d5cd) 2015-01-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4c9ebba7) 2015-01-13 Andrew Hayzen * Switch to albumArtist when using album://. Fixes: https://bugs.launchpad.net/bugs/1409754. (1e358e7e) 2015-01-12 Andrew Hayzen * Switch to albumArtist when using album:// (e5d8204b) 2015-01-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bc949ab2) 2015-01-11 Andrew Hayzen * Update .pot for translations. (2ac575f1) * Update .pot (828c8ccb) * Fix for incorrect saving of queue. Fixes: https://bugs.launchpad.net/bugs/1407814. (c83009a9) * Add ORDER BY to SELECT when resorting the indexes in a removeQueueList; Use -1 as the temporary index for reorder instead of the calc'd max (5ce19e22) * Fix for wrong use of for in, use for i=0; i < length; i++ instead (0420c127) * Merge of trunk (3a05380b) * Fix the ColumnFlow.qml so that it does not reset on tab chang. Ensure search is reset on state change. (4451157f) * Simplify the logic (dd3f9197) * Ensure search is reset on state change (19245453) * Fix the ColumnFlow.qml so that it does not reset on tab change (00b3efc1) * Merge of trunk (edac6853) 2015-01-11 Victor Thompson * Use music app icon for empty playlist art. (2ed1c9a3) 2015-01-11 Andrew Hayzen * Refactor ColumnFlow so that it uses insert/removes instead of resetting the view; Add search support to MusicAlbums.qml MusicArtists.qml MusicGenres.qml MusicPlaylists.qml MusicTracks.qml MusicaddtoPlaylist.qml; Remove any references to sheets as they have been removed. Fixes: https://bugs.launchpad.net/bugs/1297253, https://bugs.launchpad.net/bugs/1301893, https://bugs.launchpad.net/bugs/1332877, https://bugs.launchpad.net/bugs/1342928. (b3b9b4db) 2015-01-11 Victor Thompson * Use music app icon for empty playlist art. (937f676c) 2015-01-11 Andrew Hayzen * Update copyright on missed touched files (7139f4f0) * Disable SortFilterModel sorting as it is sometimes incorrect for playlistModel and SQL sorts the data correctly anyway (eaec2bd8) * Extra protection to filtering the playlistModel (0c3e9896) * Fix for blank MusicaddtoPlaylist.qml due to delegate it was generated from being destroyed when the search is cleared as the page is made invisible (593b2a58) * Merge of trunk (b06385ef) 2015-01-10 Andrew Hayzen * Refactor multiselect deleting from the Queue (by adding removeQueueList). Fixes: https://bugs.launchpad.net/bugs/1407840, https://bugs.launchpad.net/bugs/1409186. (5a6f9b69) * Fixes for TextField text colours and margins; Fix for backgroundText color; Fix for ColumnFlow.qml not loading if the model changes and then nothing extra is inserte. Fix to ensure the playlistModel can load when on the addToPlaylist page (02ef3ecd) * Esc now jumps you out of search mode (facb6517) * Force the header to show on Ctrl+F (720aed18) * Add empty state label for search; Add Ctrl+F support to search (c227cd31) * Refactor multiselect deleting from the Queue (f530fda7) * Fix for objectName typo causing autopilot failure (af90f102) * Add searching to MusicaddtoPlaylist.qml; Disable searching if there are no playlists; Various fixes and tidy ups; Add copyright 2015 (3f283866) * Reset swipe when flicking view (currently ignores if you flick by touching the swiped listitem). Fixes: https://bugs.launchpad.net/bugs/1383870. (86eb5e19) 2015-01-09 Andrew Hayzen * Reset swipe when flicking view (currently ignores if you flick by touching the swipped listitem) (c211d163) * Ensure that searching on MusicGenres.qml is case insensitive (9aafa8b2) * Fixes for autopilot (b5bbf3fb) 2015-01-08 Victor Thompson * Clear selection when leaving multiselect mode. Fixes: https://bugs.launchpad.net/bugs/1408508. (1839b11a) 2015-01-08 Andrew Hayzen * Fix for addToPlaylists not working on second viewing; Fix for queueIndex becoming out of sync with clear; appen. trackQueueClick(0); (059377bc) * Only play single track when searching (815900bd) * Add MusicGenres.qml MusicPlaylists.qml to searching; Change behaviour so that when 'going back' you always go back to the "default" state; Fix for ColumnFlow issues (55766cbb) 2015-01-07 Victor Thompson * remove extra line break (cc14c4b6) * remove extra line break (0f89ac65) * Clear selection when leaving multiselect mode (9a2272db) 2015-01-07 Andrew Hayzen * Fix going back from search (ccbc2c94) * Fix issue of not page specific header actions when there is search; Create generic search state; Allow multiselect and search in trackspage; Revert ap changes (d1591975) * Force the focus onto the search field when search activate. Attempt at ap fixes (7b5dc620) * Tidy comments; Strip anything todo with sheets as they have been removed (d997495d) * Disable multiselect when searching on MusicTracks.qml; Fix for no page defined header actions; Fix for console errors on startup (4171636d) * Refactor ColumnFlow so that it uses insert/removes instead of resetting the view; Add search support to MusicAlbums.qml MusicArtists.qml MusicTracks.qml (0d9fcfbe) 2015-01-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7f1f3899) 2015-01-06 Andrew Hayzen * Ensure that getNextIndex() is done in 1 transaction (e4d9110d) 2015-01-05 Andrew Hayzen * Fix for incorrect saving of queue (f30e4abd) 2014-12-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (199f9b38) 2014-12-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d2fe3222) 2014-12-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1eea635a) 2014-12-21 Victor Thompson * Wrap text used in empty states.; Add spacing between Labels in the Column. (02266f32) 2014-12-19 Victor Thompson * Add spacing between Labels in the Column. (c3fd66c9) * Wrap text used in empty states. (b6d916e2) 2014-12-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (15bd07d4) 2014-12-17 Victor Thompson * merge of trunk (d5de929b) * implement r760 (de16fc65) * partial merge (2bf0b602) * Do not show 'Tap to shuffle music' page when there is no music in the user's library. Fixes: https://bugs.launchpad.net/bugs/1401727. (ac9df001) * merge of trunk (2bec647e) * Use the proper model to determine if the library is loaded. Fixes: https://bugs.launchpad.net/bugs/1401730. (1eebb804) 2014-12-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (76186c26) 2014-12-16 Victor Thompson * Use the proper model to determine if the library is loaded. (a2e540c2) 2014-12-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d737b60e) 2014-12-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (86dbdb21) 2014-12-14 Victor Thompson * Allow Now Playing title label to be up to 2 lines. Fixes: https://bugs.launchpad.net/bugs/1390646. (2a7dac9e) * Change the active ListItem action to Ubuntu blue. (accd1ea4) 2014-12-13 Victor Thompson * merge of trunk (e2748455) * Use identity operator and adjust margins a bit (57642ad1) 2014-12-14 Victor Thompson * Update Framework to 14.10-qml. Fixes: https://bugs.launchpad.net/bugs/1401718. (ecfffaba) 2014-12-12 Victor Thompson * Update Framework to 14.10-qml (0e840564) 2014-12-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (89daf56c) 2014-12-11 Victor Thompson * Do not show 'Tap to shuffle music' page when there is no music. (99b1b5fc) 2014-12-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (23f3d134) 2014-12-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c8460253) 2014-12-02 Victor Thompson * Change Now Playing/Queue toggle button. (a6df8182) 2014-11-30 Victor Thompson * Add ability to swipe the cover art to go to next/previous song (49ed2633) 2014-11-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c42b5ac1) 2014-11-29 Victor Thompson * Use AlbumsModel albumArtist property to display Various Artist albums. Fixes: https://bugs.launchpad.net/bugs/1377510, https://bugs.launchpad.net/bugs/1393907. (c1a43fcd) 2014-11-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (90c948f8) 2014-11-25 Victor Thompson * Implement the solution correctly (3c433b6d) * Use AlbumsModel albumArtist property to display Various Artist albums. (e28ce76c) 2014-11-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1cff9783) 2014-11-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f919bac2) 2014-11-23 Victor Thompson * Use case insensitive sorting in SortFilterModel. (ff24bb8f) * Revert UI test (2f179c99) * Test of the player controls being the same as the header/background (c7e98ea3) 2014-11-23 Andrew Hayzen * Fix to prevent the number of columns dropping to 0 causing unexpected behaviour. (e209e315) 2014-11-23 Victor Thompson * Fix binding loop error caused by changing the header color and add background color to slider. (5de20f91) * Put Slider in an Item component (06f1a301) * Fix anchors (fb17c798) * Adjust spacing (cce237c7) * Move progress bar into full view and add progress hint in queue (72b4f179) * Increase opacity of label background and reduce top margin above slider (a4df3b65) * Wrap allSongsModel in SortFilterModel. (f24f6214) * Remove unused model (6cb98a26) * Remove custom getter from Artsts tab (9350b7be) 2014-11-23 Andrew Hayzen * Fix to prevent the number of columns dropping to 0 causing unexpected behaviour (72b2a84f) 2014-11-22 Victor Thompson * Merge of trunk and resolve conflict (8087d46c) 2014-11-21 Victor Thompson * Use case insensitive sorting in SortFilterModel (e2e64336) 2014-11-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (596fa387) 2014-11-21 Victor Thompson * Theme the Slider component. Fixes: https://bugs.launchpad.net/bugs/1390660. (34abaa71) 2014-11-20 Victor Thompson * Add necessary artwork from the theme (b6580fb5) 2014-11-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (14eab18c) 2014-11-19 Victor Thompson * Change the active ListItem action to Ubuntu blue. (000fb060) 2014-11-18 Victor Thompson * Theme the Slider component. (f134ec82) 2014-11-17 Victor Thompson * Merge of trunk (df58afbf) * Only add currently playing item to the playlist from queue; Show 'Add to playlist' and 'Clear queue' in Now Playing vie. Change toggle action to switch between 'Now playing' and 'Queue' to be the swap icon. Fixes: https://bugs.launchpad.net/bugs/1390252. (5dc97588) 2014-11-16 Victor Thompson * merge of trunk (8d68cdac) * Use swap icon for toggle and add 'Clear queue' action to Now Playing. (13c5a49a) * Add a background for the list and fit list into view. (5c2d376f) * Consolidate background color properties (f1c4ccb0) * Change background color as well (e031c6dc) * Remove Rectangle background on items in Queue (c0900623) * merge of trunk (8ccccf01) * Use larger toolbar in Queue (14d9950a) 2014-11-15 Victor Thompson * Sam's mockup in black (bef8a045) 2014-11-15 Andrew Hayzen * Fix for highlight in listitem with actons bleeding into the actions background; Fix for reordering never being enabled. (52a3dd9e) 2014-11-15 Victor Thompson * Use queue's previous size to append a model to the queue. Fixes: https://bugs.launchpad.net/bugs/1393065. (884a3676) * Fix index into items (4298d797) 2014-11-15 Andrew Hayzen * Fix so that now playing not current tracks have background when reordering (d54874d0) * Restore the tab index the user was on when starting the app. (eeaf470e) * Actually fix it this time :P (9fd47e04) * Switch to using OR (13119e6a) * Protect against a too high saved index (c1e26850) * Remove reordering property as it isn't used anymore (b481c89d) 2014-11-15 Victor Thompson * Use queue's previous size to append a model to the queue (3f553805) 2014-11-15 Andrew Hayzen * Fix for highlight in listitem with actons bleeding into the actions background; Fix for reordering never being enabled (d80e4c5c) * Restore the tab index the user was on when starting the app (e21217ef) 2014-11-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ede3ba12) 2014-11-14 Victor Thompson * Sam's mock up (87b2c1df) * Update for full cover view (0c9b511c) * Also change header to black when in Now Playing/Queue (6864e591) 2014-11-14 Alan Pope * Fix 1392587. Fixes: https://bugs.launchpad.net/bugs/1392587. (edde6eea) * fix bug 1392587 (e9221295) 2014-11-13 Victor Thompson * Simple test prototype for Now Playing. (fd6b834a) 2014-11-12 Victor Thompson * merge of trunk (81b51ece) * Add changes per design direction (02d0d50b) 2014-11-13 Andrew Hayzen * Drop AP mocking on device. (e6560448) 2014-11-12 Victor Thompson * Remove build instructions for desktop (97c3212c) * Add a readme. (9347b27f) 2014-11-13 Andrew Hayzen * Don't attempt to delete if they don't exist (101c18bb) * Clear all databases and pass pep8 (455fcf52) 2014-11-12 Victor Thompson * Fix pep8 (4618ba4e) * Remove local databases (7cc6f9d7) 2014-11-12 nskaggs * don't patch ms on devices (451c3dfa) 2014-11-12 Andrew Hayzen * Remove erroneous tracks from the playlist. Fixes: https://bugs.launchpad.net/bugs/1392022. (63be4262) 2014-11-12 nskaggs * tweak launcher to drop mocking on devices (80d73678) 2014-11-12 Andrew Hayzen * Remove erroneous tracks from the playlist (1fd4b731) * Fix for db locking issue when using urlhandler. (632297dc) * Remove canLoad=false as this causes the worker to be run! (426151b6) 2014-11-11 Andrew Hayzen * Merge of trunk (a29047cd) * Fix for url dispatcher attempt 2 (34b1064e) * Rewrite the ColumnFlow.qml to use incubation to create objects and set offscreen cards as invisible. Fixes: https://bugs.launchpad.net/bugs/1387816. (1f884a3f) 2014-11-11 Victor Thompson * Fix for playlist deletion in recent DB. (2e19800f) 2014-11-11 Andrew Hayzen * Extra fixes (d26da440) * Fix for db locking issue (32ef3a29) * Fix for abstraction (fcecda57) 2014-11-11 Victor Thompson * Fix for playlist deletion in recent DB (3caae3c9) * Update the fix for catching a renamed playlist in the recent tab. Fixes: https://bugs.launchpad.net/bugs/1386940. (c22f7b4c) 2014-11-11 Andrew Hayzen * Fix for typos; Abstract forceCompletion into its own method (ff9cbd0b) * Disable async in BlurredHeader.qml so buttons don't flicker on load (96ed8733) * Disable async loading of header in AlbumsPage (802f29e6) 2014-11-11 Victor Thompson * Update solution to problem. (a8f4971d) * Mark MusicStart page as changed when renaming a playlist in the recent db. (6299c183) 2014-11-11 Andrew Hayzen * Change ColumnFlow.qml to set as invisible instead of destroy (f29199ec) 2014-11-10 Victor Thompson * add newline (a23d3e6b) * Update the fix for catching a renamed playlist in the recent tab (0f3710f5) 2014-11-11 Andrew Hayzen * Fix for when the model changes while in a created object (cb2f42a6) * Merge of lp:music-app/remix (19a24f00) 2014-11-11 Victor Thompson * Set the sourceSize of the CoverGrid to the Thumbnailer's 'xlarge' default. Fixes: https://bugs.launchpad.net/bugs/1391368. (b24d7684) 2014-11-10 Victor Thompson * Update BlurredBackground (fb02340f) * Set the sourceSize of the CoverGrid to the Thumbnailer's 'xlarge' default. (bd159ecc) 2014-11-10 Andrew Hayzen * Don't reset the columns when invisible as it may destroy elements created from items (70a1267f) 2014-11-10 Victor Thompson * Use art property for playlists. (fa0f98b9) 2014-11-10 Andrew Hayzen * Rewrite the ColumnFlow.qml to use dynamic creation/deletion of cards (9c8478d6) 2014-11-09 Victor Thompson * Since the art property is always unique, still populate the author and album (2d85660a) * Update find() utility function (8c2a894b) 2014-11-10 Victor Thompson * Show the playlist empty state when in the 'Select playlist' page. Fixes: https://bugs.launchpad.net/bugs/1390798. (898ab989) 2014-11-09 Victor Thompson * Use art property for playlists (e6d7d034) 2014-11-08 Victor Thompson * Show the playlist empty state when in the 'Select playlist' page (c5c42670) * Do not pop existing pages from page stack when returning from Now Playing/Queue. Fixes: https://bugs.launchpad.net/bugs/1390249. (8d4f3596) * Produce immediate visual feedback by brightening list item when pressed. Fixes: https://bugs.launchpad.net/bugs/1390651. (02bb99d8) 2014-11-07 Victor Thompson * Prototype brightening of pressed list item. (5c28ce49) * Prototype of proposed design change for Now Playing title label. (cc285afe) * Update failing test (efe4b373) * Show Add to Playlist and Clear queue in Now Playing. (7b5c1d7d) * Only add currently playing item to the playlist from queue (8676014e) * Remove go_back AP helper. (2f229064) * Remove custom backAction (30c9d95c) * Do not pop existing pages from page stack. (28023104) 2014-11-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9fb57390) 2014-11-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9d214606) 2014-11-04 Victor Thompson * Display Unknown rather than blank. Fixes: https://bugs.launchpad.net/bugs/1379452. (79fec9be) 2014-11-03 Victor Thompson * Update .pot file (9f670b76) 2014-11-02 Victor Thompson * Only push found items onto the queue. Fixes: https://bugs.launchpad.net/bugs/1388428. (de213740) 2014-11-01 Victor Thompson * Display Unknown rather than blank (35397647) * Only push found items onto the queue. (480c9f0f) 2014-10-31 Victor Thompson * Don't show all artists with same album. Fixes: https://bugs.launchpad.net/bugs/1268803, https://bugs.launchpad.net/bugs/1387618. (efc056d6) * Correct the AP test (8684c628) 2014-10-30 Victor Thompson * Also fix recent page (056cf61a) * Also fix AlbumsPage (27b7eb0f) * Don't show all artists with same album (69a946ee) * Bump version to 2.0 and add to changelog. (e0707535) 2014-10-29 Victor Thompson * Bump version to 2.0 and add to changelog (49cf54d1) 2014-10-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f8190025) 2014-10-29 Andrew Hayzen * Fix for cover art getting out of sync on the SongsPage.qml; Fix for addToPlaylists causing freeze to songsPage; Ensure recent/playlists pages remain in sync as items are added/removed from the playlist. (e56e05a3) 2014-10-29 Victor Thompson * Update ListItemWithActions background color. (c555befd) 2014-10-28 Victor Thompson * Re-enable dim effect (3e0c21f6) 2014-10-29 Andrew Hayzen * Fix for console errors from WorkerScript at startup. (09223ba8) 2014-10-28 Victor Thompson * Update ListItemWithActions background color (d25b4f98) 2014-10-29 Andrew Hayzen * Fix so that 1 level addToPlaylist works again (4b565c68) * Make generic helper (ef853704) * Fix for console errors from WorkerScript at startup (0a47307c) * Fix for cover art getting out of sync on the SongsPage.qml (fdf28bc8) * Fix for addToPlaylists causing freeze to songsPage (aa0f259c) * Ensure recent/playlists pages remain in sync as items are added/removed from the playlist (6e44b546) * Optimise the addQueueList transaction. Fixes: https://bugs.launchpad.net/bugs/1386628. (02991ea2) * Fix for editing/deleting a playlist from Recent causing freez. Fix for rename in Recent attempting to add. Fixes: https://bugs.launchpad.net/bugs/1386940. (9cdb9cac) * Rename variable from model to items (4a75c68a) * Sort playlists by name. (8a70ff74) * Fix for deleting a playlist from Recent; Fix for rename in Recent attempting to add (b441d297) * Make case insensitive (98e1573f) * Fix for edit playlist causing crashes. Fixes: https://bugs.launchpad.net/bugs/1386712. (47b3b2a2) * Merge of lp:music-app/remix (6d865d22) 2014-10-28 Andrew Hayzen * Optimise the addQueueList transaction (c057ffb5) * Sort playlists by name (849d94de) * Fix for edit playlist causing crashes (79053fdd) 2014-10-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (22c3bfe1) 2014-10-28 Andrew Hayzen * Performance tweaks; Change scrolling behaviour; Tweaks to ListItemWithActions.qml. (4312b174) * Merge of lp:music-app/remix (fa962406) * Fix for empty songs in page after selecting album from recen. Enforce a sync after a clear; Allow clear to run even if canLoad is false. (67452ecb) * Enforce a sync after a clear; Allow clear to run even if canLoad is false (c080b6ee) * Fix for empty songs in page after selecting album from recent (f3ff56ac) * Change playlistModel syncFactor to 1; Never attempt to ping when processing a sync pong. (77ee89be) * Merge of lp:music-app/remix (07cc6749) * Merge of lp:music-app/remix (4ca8ba1e) * Change recent schemas so that it stores less and loads more from ms2 (eg art). (8f01f815) * Don't check list length if null (8a995fc5) * Change playlistModel syncFactor; Never attempt to ping when processing a sync pong (1ca902dd) * Fix for console errors when clearing the queue. (6e8e6445) * Only load model once CardView is visible. (dabc5686) * Merge of lp:music-app/remix (5fa3af7f) * Merge of lp:music-app/remix (cefb50c2) * Create generic WorkerModelLoader.qml; Load queue at startup via WorkerScript. (f4752d01) * Fix for settings source directly (998dc8e7) 2014-10-28 Victor Thompson * Intial changes to remember the previous queue when restarting the app. Fixes: https://bugs.launchpad.net/bugs/1299102. (51e41423) 2014-10-28 Andrew Hayzen * Fix for console errors when clearing the queue (fffd05ae) 2014-10-27 Victor Thompson * Revert small change (0af19dab) 2014-10-28 Andrew Hayzen * Pull of upstream (f6a8c4d8) 2014-10-27 Victor Thompson * Fix remove index change (f5993c64) * Fix remove case (54db6085) 2014-10-28 Andrew Hayzen * Merge with upstream (2614482b) 2014-10-27 Victor Thompson * Missed one case... (11149d21) 2014-10-28 Andrew Hayzen * Merge of upstream (32d2844a) 2014-10-27 Victor Thompson * Use a clear function to minimize impacts of clearQueue() (e3ec404e) * update fix for performance (fe2902ee) * Use append method to reduce the number of places addQueueItem needs to go (c34a6912) 2014-10-27 Andrew Hayzen * Only set to complete once sync is complete (a1dd1c38) 2014-10-27 Victor Thompson * Fix add to queue listitem action (75789bc1) 2014-10-27 Andrew Hayzen * Pull of upstream (d456d799) 2014-10-27 Victor Thompson * Update change for reorder. (dd83c571) 2014-10-27 Andrew Hayzen * Only load model once CardView is visible (a40c8af6) * Fix for setting of readonly source; Fix for setting complete before syncing; Sync after first item to ensure no empty state (0a6d1339) * Remove debugging lines (4e29ecd7) * Create generic WorkerModelLoader.qml; Load queue at startup via WorkerScript (6d635e6e) 2014-10-27 Victor Thompson * Fix bad conflict resolution (29139758) * Use Player.setSource() (d8b6787b) * merge of remix and resolve conflicts (246d7881) 2014-10-27 Andrew Hayzen * Merge of lp:music-app/remix (b06a653a) * Merge of trunk (1b503f59) 2014-10-26 Andrew Hayzen * Load queueList in async; Fix to prevent jumping from queue->full view. (621ce355) * Merge of lp:music-app/remix (3b3c3b45) * Defer loading of page; Async load MediaPlayer object. (88a75cb7) * Update old code comments (2932d5f0) * Change recent schemas so that it stores less and loads more from ms2 (eg art) (5c782772) * Added code comments and refactored positionAt code (19e7a56a) * Fix for using === instead of ==; Fix for comment grammar (99bcc54c) 2014-10-25 Victor Thompson * Fix for clicking on queue items (e1e5a324) * Hide empty state when in Now Playing or Queue. (70d274d6) 2014-10-24 Victor Thompson * Hide empty state when in Now Playing or Queue (11700c3f) * Update index on reorder (20d75554) * Resolve removing item and clearning queue. (91e847f3) * merge of remix and resolve conflict (40f129b7) * Change order of setting currentIndex and source to get things working (c5ef28e3) 2014-10-24 Andrew Hayzen * Fix again for jumping (477abc5d) * Fix to prevent jumping from queue->full view (ea04c6c6) * Fixes for autopilot (f9f5abd7) * Wait until the listview is ready (627f9f4c) * PositionAt when the loader is ready (d440e65c) * Load queueList in async (cb9a6cfa) 2014-10-24 Victor Thompson * Removed head actions from MusicNowPlaying and add initial recall of queue index (53daebc0) 2014-10-24 Andrew Hayzen * Fix for pyflakes (031def9e) * Fix for autopilot (e19529b7) * Run createRecent() from Component.onCompleted (fe744176) * Defer loading of pages (0078386b) * Async loading of MusicNowPlaying. (ba477e75) * Fixes for pyflakes and pep8 (fc060595) * Fixes for autopilot (266b59a6) 2014-10-23 Victor Thompson * Improve performance (9873800f) * Add read path to Music on the SD card to extract in process thumbnail extraction. (f6722cb2) 2014-10-24 Andrew Hayzen * Async loading of MusicNowPlaying (124088ca) 2014-10-23 Andrew Hayzen * Remove global chosenElements (046b90ea) * Async load AlbumsPage.qml SongsPage.qml; Async load MediaPlayer object (22f89e2f) 2014-10-23 Victor Thompson * Add read path to Music on the SD card to extract in process thumbnail extraction (f12cc6fc) 2014-10-23 Andrew Hayzen * Performance tweaks; Change scrolling behaviour (7d0f3b3c) * Tweaks to ListItemWithActions.qml (522b28d3) 2014-10-23 Victor Thompson * Highlight stroke buttons on press. (0a585f31) * Resolve conflicts and change tab selection detection (8234a620) * Update AlbumsPage as well (1d92befd) * Stroke buttons should highlight (d4a9c23f) 2014-10-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0f1cb1fb) 2014-10-22 Andrew Hayzen * Optimise MusicRow.qml by using Image rather than CoverGrid (as there will only ever be one image). (3c1bfd0c) * Add a bottom margin to MusicTracks.qml and MusicNowPlaying.qml. Fixes: https://bugs.launchpad.net/bugs/1380102. (78342df7) 2014-10-22 Victor Thompson * Fix playlist art in Now Playing page. (be6838fc) * Fix playlist art in Now Playing page (35a4c27a) 2014-10-22 Andrew Hayzen * Add a bottom margin to MusicTracks.qml and MusicNowPlaying.qml (85bb642a) 2014-10-22 Victor Thompson * Initial walkthrough prototype. (a18156cb) 2014-10-22 Andrew Hayzen * Optimise MusicRow.qml by using Image rather than CoverGrid (as there will only ever be one image) (59d3236c) * Add save to playlist action; Only enable actions in now playing when trackQueue count > 0. (a649ec34) * Update .pot (556a1f77) * Merge of trunk (98793f6e) * Tweaks to icons (980a49a8) * Use async for loaders and unused loaders invisible. (91f0d9c3) * Add save to playlist action; Only enable actions in now playing when trackQueue count > 0 (c593abde) * Move to using Qt.labs.settings and remove settings.js. (0efe5b0a) * Add additional async (9ea7ca93) 2014-10-22 Victor Thompson * Remove CoverRow; Remove isPressedChanged workaround; Remove MusicRow isSquare specialization. (c5520cfd) * Remove MusicRow (1c647b47) 2014-10-22 Andrew Hayzen * Fix for packaging (170b5890) 2014-10-22 Victor Thompson * Resolve conflicts and merge of remix (af86427b) 2014-10-22 Andrew Hayzen * Move to using Qt.labs.settings and remove settings.js (43b5b728) * Use async for loaders (75c506e0) * Remove lastfm, search and settings. (591b0c58) * Merge of lp:music-app/remix (a342e8e5) * Pull upstream ListItemWithActions.qml; Add support for multiselect mode; Disable triggerOnRelease. (68f7c7e7) * Merge of lp:music-app/remix (765ef6be) 2014-10-22 Victor Thompson * Initial empty state prototype. (68ac2091) 2014-10-21 Victor Thompson * update checks to prevent flicker (1522258a) 2014-10-21 Andrew Hayzen * Use closeSelection and clearSelection (1cf01abd) * Enable reordering only when no items are selected; Fix for select all no enabling actions (23b5436c) 2014-10-21 Victor Thompson * Update to fix Autopilot test (d6978ad6) * Change listview to covergrid (b68bceaa) 2014-10-21 Andrew Hayzen * Remove lastfm, search and settings (c9f0e728) * Remove rectangles (46560943) * Performance tweaks (ccc10e4a) * Merge of lp:music-app/remix (dcf07f55) 2014-10-21 Victor Thompson * Do not show the artist in the grid of albums. (f0b43918) * Fix bad check (676ea615) 2014-10-21 Andrew Hayzen * Fix so that label is correct when seeking when paused. (2e3a3f15) * Only show year in SongsPage.qml if year exists. (27e27146) 2014-10-21 Victor Thompson * Add an initial Genres tab. (d62bc62c) * Disable clear recent icon when recent is empty. (db822a06) 2014-10-21 Andrew Hayzen * Fix formatting (cc613188) 2014-10-21 Victor Thompson * Make Images asynchronous. (a7e700a6) 2014-10-21 Andrew Hayzen * Only show year in SongsPage.qml if year exists (7f1a3627) * Fix so that label is correct when seeking when paused (1d52dbe8) * Pull upstream ListItemWithActions.qml; Add support for multiselect mode; Disable triggerOnRelease (f80980d0) 2014-10-21 Victor Thompson * Do not show the artist in the grid of albums (ea7190a5) * Disable clear recent icon when recent is empty (5b4df2e0) * Add MusicGenre component. (04a1699b) * Small tweak for CoverGrid error output (d3c787d5) * Add an initial Genres tab (5bc8f43b) 2014-10-21 Andrew Hayzen * Add back confinement. Fixes: https://bugs.launchpad.net/bugs/1315386. (f8321fce) 2014-10-21 Victor Thompson * Update header icon to use newer property (cd7cc25d) * Wait until model is loaded before showing empty state (0deb17e5) 2014-10-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c3b283d9) 2014-10-20 Victor Thompson * Make Images asynchronous (c32368f4) * merge of remix and fix issues (4ed6e4e2) * Merge of remix (db0c00a0) 2014-10-20 Andrew Hayzen * Use CardView in Recent Tab; Use Recent as default if >0 recent items otherwise use Albums Tab. (573fec1a) 2014-10-20 Victor Thompson * Remove onPressed workaround (686ca27d) * Update to remove remaining isSquare properties (9aed5a27) * Remove CoverRow (18b5794f) 2014-10-20 Andrew Hayzen * Set sourceSize of images. (48b7e22e) * Switch to using delete icon (7a044ebc) 2014-10-20 Victor Thompson * Initial empty state prototype (6afff53f) * Force AlbumsPage's SongsModel to filter upon startup. (611a583c) 2014-10-20 Andrew Hayzen * Remove BlurredBackground.qml error image (baaafdbd) * Switch MusicRow.qml to use CoverGrid; Switch MusicNowPlaying.qml to use CoverGrid; Expose firstSource from CoverGrid.qml to simplify BlurredBackground usages (95ca827a) 2014-10-20 Victor Thompson * Force AlbumsPage SongsModel to filter upon app load (1c6a40ba) * Small fix to ListItemAction (ff4be404) 2014-10-20 Andrew Hayzen * Remove smooth = true; Switch toolbar to use CoverGrid.qml (c20e6123) * Add smooth property to further Images (de3e43b0) 2014-10-20 Victor Thompson * Improve performance slightly (9d848193) 2014-10-20 Andrew Hayzen * Removal of old hasRecent (1eacc4d6) * Rebuild of .pot (e44ebc84) * Merge of trunk (afdf6f5a) * Set sourceSize of images (180f59a7) 2014-10-20 Victor Thompson * Fix playlist deletion and renaming in recent table. Fixes: https://bugs.launchpad.net/bugs/1382170. (266330be) 2014-10-18 Victor Thompson * Small update to index values (252ca719) * Remove commented out code (cfbaefff) * Intial changes to remember the previous queue when restarting the app (476149dd) 2014-10-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (29eff448) 2014-10-17 Victor Thompson * Fix playlist deletion and renaming in recent table (d5a31174) 2014-10-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f7115b01) 2014-10-17 Andrew Hayzen * Add support for CardView in AlbumsPage.qml; Add support for header property in CardView.qml; Add BlurredHeader.qm. Make AlbumsPage.qml and SongsPage.qml use BlurredHeader.qml. (46fdfd8e) * Allow for imports to start when already importing. Fixes: https://bugs.launchpad.net/bugs/1381522. (c3d998c0) * Add back confinement (dd0ba357) * Use rightColumn and bottomColumn instead of buttons and label. Fix for labels in columns not eliding (803b23df) * Use CardView in Recent Tab; Use Recent as default if >0 recent items otherwise use Albums Tab (470ae086) 2014-10-16 Andrew Hayzen * Tweak to autopilot to wait for page to disappear before searching for the new now playing page (c5775929) * Allow for imports to start when already importing (77bb6c67) 2014-10-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2c040c93) 2014-10-14 Andrew Hayzen * Fixes for autopilot (42d5382a) * Add support for CardView in AlbumsPage.qml; Add support for header property in CardView.qml; Add BlurredHeader.qm. Make AlbumsPage.qml and SongsPage.qml use BlurredHeader.qml (37ae7ebf) * Use CardView in MusicPlaylists.qml; Use header actions for edit and delete of playlists. (edc5d4ac) * Make SongsPage use CoverGrid. (e4d2e3c6) * Fix for spelling of dialog; Rebuild pot (916b7207) 2014-10-13 Andrew Hayzen * Add CoverGrid.qml component; Use CoverGrid in Card.qml . (68612e40) * Fix for autopilot (b1d5f9d4) * Merge of upstream (1ac82082) * Rename albumImage to coversImage (8b26c343) * Merge of upstream (00aa0214) * Fix for typo :( (ff5b67fb) * Removal of old code (0dd53715) * Merge of upstream (de484682) * Merge of upstream (ee8f4cd4) * Merge of trunk (0a3cfa00) 2014-10-13 Victor Thompson * Initial Artists view with CardView. (2e3fa720) * Add clear queue action. Fixes: https://bugs.launchpad.net/bugs/1379895. (cb410251) * Update CardView width (3a087dc8) * Add clear queue action (0a4248a0) 2014-10-12 Andrew Hayzen * Make SongsPage use CoverGrid (25ef1470) * Use CardView in MusicPlaylists.qml; Use header actions for edit and delete of playlists (23db20a5) * Use CoverGrid in Card.qml (afd5ff96) * Add CoverGrid.qml component (f1d7c8bb) 2014-10-11 Andrew Hayzen * Switch to use positionAt when isListView becomes true; Strip out jumpTo/ensureVisible code for the now playing queue; Fix for console errors when pressing items in queue. Fixes: https://bugs.launchpad.net/bugs/1379894. (34d436b1) * Don't use highlight as causes the queue to jump (60c0e6bd) * Switch to use positionAt when isListView becomes true (8b8ec361) * Switch to using ListView.Center (230f2cf9) * Put positionAt back in and ensure Ctrl+J shows the queue (03577bc6) 2014-10-11 Victor Thompson * Remove deleted item before updating currentIndex. Fixes: https://bugs.launchpad.net/bugs/1379923. (a6a1ea4f) 2014-10-11 Andrew Hayzen * Strip out jumpTo/ensureVisible code for the now playing queu. Fix for console errors when pressing items in queue (502a9223) 2014-10-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d27dda65) 2014-10-10 Victor Thompson * AP fix (a8d59b6f) * remove debug (81a37d1a) * Initial Artists view with CardView (7adf173e) * Rmove deleted item before updating currentIndex (3275be60) * Initial Now Playing queue list refactor. (9185881d) * Add a 2GU top margin, per design (4dffaf67) * Initial Songs tab redesign for remix. (56e2ada7) 2014-10-10 Andrew Hayzen * Ignore first value back after seeking [Workaround]. Fixes: https://bugs.launchpad.net/bugs/1310706. (d9ab6074) 2014-10-10 Victor Thompson * merge prereq (46dd61d5) * merge of trunk (f8e7c6a1) 2014-10-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (866d4f0e) 2014-10-10 Victor Thompson * Merge of prereq (a89fa3d6) * Allow 2GU at top of ListView (54ca0193) 2014-10-09 Victor Thompson * Do not switch to full view if clicking a song in the queue. (6ad1a7d8) 2014-10-09 Andrew Hayzen * Fix for label not updating while seeking; Add code comments (0bb40f44) 2014-10-09 Victor Thompson * Fix Ubuntu-Splash-Color to not get pulled into translations. (dc3fda87) * Fix Ubuntu-Splash-Color to not get pulled into translations (5c2f12d0) 2014-10-08 Victor Thompson * Do not switch to full view if clicking a song in the queue. (d0d13926) * Merge of prereq (43dfbfd0) * Place MusicRow in center of Item (8fcda6dd) * Tweak capitalization of Now playing page title (2c1d9dae) * Merge of prereq (8aec2188) * Merge of remix (95e67bb5) * Small update and refresh translations (2dfa8f7b) * Update per design (c781c57a) * merge of prereq (36f1ee25) * Update per design (7fd477ba) 2014-10-08 Andrew Hayzen * From the toolbar always jump to full view (eg if toolbar is selected in queue view jump to full). (f88ad452) * Ignore first value back after seeking [Workaround] (3ddc6a72) * Ensure all instances use pushNowPlaying() (0ba70985) * Move call to inside pushNowPlaying() (0df3af2a) * From the toolbar always jump to full view (eg if toolbar is selected in queue view jump to full) (3ae1e4fe) 2014-10-08 Victor Thompson * Fix conflict (330e5104) * merge of prereq and resolve conflict (108aa99a) * merge of remix (2c5bdbfc) 2014-10-08 Andrew Hayzen * Remove legacy toolbar code; Make full (non listview) now playing default; Fix header disappearing in full now playing. (5f09c329) 2014-10-08 Victor Thompson * Merge of prereq (417f03a5) * Merge of remix (5d5bbb49) 2014-10-07 Victor Thompson * Initial Now Playing queue list refactor (3e9ce0c8) * Use model.art property in AlbumsPage. Fixes: https://bugs.launchpad.net/bugs/1378157. (62e837d5) 2014-10-07 Andrew Hayzen * Use custom back button (4b530cf8) * Add objectName for back button (fb17a78e) * Merge of trunk (c7b65dc6) * Fix for pagestack jumping; Added extra code comment (933be6ac) 2014-10-06 Victor Thompson * Use model.art property in AlbumsPage (e90da165) 2014-10-07 Andrew Hayzen * Add CardView and Card; Implement in Albums tab. (1ccdc465) 2014-10-06 Andrew Hayzen * Fix so that when items are removed from the model there are no gaps (74b10475) * Reget now playing page after switching (4a8812ec) * Wait for now playing page to be visible when switching (ceb2055a) * Fix for pyflakes (3aefbf79) * Further fixes for autopilot (ee12677d) * Remove ensuring visible as this method is called sometimes when the now playing is not the currentPage (2b107945) * Fix for missed case (c567f6bb) * Fix for autopilot (e5aba66d) * Various fixes for autopilot (2cde2d32) * Remove legacy toolbar code; Make full (non listview) now playing default; Fix header disappearing in full now playing (2e1aef54) 2014-10-05 Victor Thompson * Merge of remix and resolve conflict (915e50bf) 2014-10-06 Victor Thompson * Make the Ubuntu Slider leftColor UbuntuColors.blue. (a05da4ca) 2014-10-05 Victor Thompson * Initial Songs tab redesign for remix (1a61c2f6) * Fix elide in Songs Page header; Fix elide in MusicRow for Songs Page items. (26780ad0) 2014-10-06 Andrew Hayzen * Merge of trunk (3e9ca390) * Add upstream location (351cb06f) 2014-10-05 Victor Thompson * Used new desktop entries to show a fake application page during the startup. Fixes: https://bugs.launchpad.net/bugs/1377638. (deefde8c) 2014-10-05 Andrew Hayzen * Merge of trunk (549e8ae9) 2014-10-05 Victor Thompson * Used new desktop entries to show a fake application page during the startup. (43277f78) 2014-10-05 Andrew Hayzen * Move to ColumnFlow {} (b78ab08d) 2014-10-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (571a5228) 2014-10-05 Victor Thompson * Fix elide in Songs Page header; Fix elide in MusicRow for Songs Page items (5b72bbf4) * Initial Now Playing toggle. (91b8cc0b) 2014-10-04 Victor Thompson * Only jump to track in queue view to prevent header from hiding in full view (417ed222) * Make the Ubuntu Slider leftColor UbuntuColors.blue (27ddf70e) 2014-10-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1e74d39d) 2014-10-03 Victor Thompson * fix update (e6f0c32c) * update (f31b530b) * Small tweaks and a toolbar hack (b9ee9207) * Merge of remix (f4f94d38) 2014-10-04 Andrew Hayzen * Fix the toolbar so it is always shown; Move progress bar to the bottom of the toolbar. (c8a32735) 2014-10-04 Victor Thompson * Hide song cover art in SongsPage; Update Blurred cover art; Add Blurred cover art to SongsPage header; Update labels on SongsPage; Add Shuffle to SongsPage; Update SongsPage margins; Update SongsPage buttons; Shorten blurred height. (12c61d12) 2014-10-03 Victor Thompson * Update per comments (92921427) * Adjust header item based on Label visibility (0cc5f1d3) * Default to the listview view for now (c341c517) * Initial Now Playing toggle (843aebce) * Clean slate (9e1d85ec) * Fit items into view (c856e1c4) 2014-10-03 Akiva Avraham * Add play controls to the full view of the Now Playing page (b0243ae4) * Removed Custom Slider, replaced it with the proper one. SIGNIFICANTLY improved how this thing works. (6d6de0ed) * Added the controls to lp:~vthompson/music-app/remix-now-playing-main-view (783f121f) 2014-10-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1131e6e7) 2014-10-03 Victor Thompson * Initial Now Playing toggle (bd5168a2) * Clean slate (c25a3b2c) * Remove incorrect commit (fbf6b0c9) 2014-10-02 Victor Thompson * Rename the new view (7af46bf5) * Initial Now Playing toggle (7e415b67) * Update translations (53db8ccc) * merge of trunk (860988c0) * Resolve design feedback (e37a3aad) 2014-10-02 Akiva Avraham * Added the controls to the NowPlaying page, as was shown in the following screenshot: https://docs.google.com/presentation/d/1L3eGhOe-0eEmKtUurthpUEaweFradSFb3t6W-KiIZMU/edit#slide=id.g4d67bb613_19 (872e3596) 2014-10-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (706ca70d) 2014-10-02 Andrew Hayzen * Implement new small toolbar design. (b71f932d) 2014-10-01 Victor Thompson * Update per review comments (e0aafc1e) * Update per design direction (2d5d0957) 2014-10-01 Andrew Hayzen * Move to using Flow {} (f6b7698a) * Switch progress bar position (d5e4b11f) * Merge from lp:~andrew-hayzen/music-app/remix-small-toolbar-design (48a2607e) * Rework mouse areas with animated click region; Remove previous/next buttons; Change font weight of title to medium; Fix for playlist images not appearing in toolbar * Ensure image resize is smooth (7607cc8a) 2014-10-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (dedfb4f6) 2014-09-30 Victor Thompson * Add Shuffle; Update margins; Update buttons; Shorten blurred height (94a07012) 2014-09-30 Andrew Hayzen * Merge of /remix (857cb1cd) * Change spacing for labels; Change font sizes (b3fb9555) * Fix the toolbar so it is always shown (6d8f1369) * Implement new small toolbar design (8c35e1e0) 2014-09-30 Victor Thompson * Remove listitem divider and make subtitle text a bit whiter (6628457e) * Update cover art fetch (61e2e64d) * Update cover art fetch (b1036427) 2014-09-29 Victor Thompson * remove debug (10f121c6) * Initial changes for songs page redesign (8f46740c) * Remove blurred background (802deed5) 2014-09-30 Andrew Hayzen * Remove the code comment (cb12ad2f) 2014-09-28 Andrew Hayzen * Tweak overlay opacity (7a122318) * Further tidying (13208611) * Remove unused imports (ae76c792) * Cleanup old code (c0794f21) * Add CardView and Card; Implement in Albums tab (f57f0dae) * Remove blurred background (42afe82f) 2014-09-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c5e9db71) 2014-09-25 Andrew Hayzen * Add waits for the bounce animation on a listitem action. (bfc343a2) * Add waits for the bounce animation on a listitem action (08494a8e) 2014-09-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0a0cea3d) 2014-09-25 Andrew Hayzen * Set $HOME and $UBUNTU_APP_LAUNCH_LINK_FARM. Fixes: https://bugs.launchpad.net/bugs/1370800. (08d03f28) * Add comments (ad99f3c4) 2014-09-24 Andrew Hayzen * Add cleanups (bdd0b905) * Set $HOME and $UBUNTU_APP_LAUNCH_LINK_FARM (890bc404) 2014-09-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d76f65bf) 2014-09-23 Andrew Hayzen * Remove main_view and pointing_device properties; Use virtual model of metadata rather than hardcoding track_index, track_title etc; Improve toolbar handling; Make click_play_button helper automatically choose the correct button; Improve some tests especially ones with 'while. Improve code comments. (e665757d) * Fix missing translations; Change path to ~/Music/Imported/yyyy/MM/dd/hhmmss; Remove unused dialogue code; Update .pot. Fixes: https://bugs.launchpad.net/bugs/1369050. (73beb2f2) * Rerun jenkins (7dc5474e) * Missing slash in merge conflict resolution (922b3eb8) * Fixes for translations (469fcf7e) * Merge of trunk (d7e3f696) 2014-09-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (fc458b52) 2014-09-23 Andrew Hayzen * Add multi file import support. Fixes: https://bugs.launchpad.net/bugs/1365993, https://bugs.launchpad.net/bugs/1368648. (6deebb40) 2014-09-22 Andrew Hayzen * Fix for translator comments (36d7510d) * Fix path to ~/Music/Imported/* (eaacb959) 2014-09-20 Victor Thompson * Use art property to allow mediascanner2 to determine if embedded art exists. (c8caefc7) 2014-09-20 Akiva Avraham * Updated library imports to qtquick-2.3. (cee5bc0d) * Updated library imports to qtquick-2.3 (19ef67f8) 2014-09-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6ef03d14) 2014-09-18 Andrew Hayzen * Fix for missed case (12be2e8a) * Fix ~/Music path as not translated yet (bb3abeba) * Add multi file import support (3883e896) 2014-09-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4580e497) 2014-09-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c114090b) 2014-09-13 Andrew Hayzen * Add translation comments (115b47c4) * Fix missing translations; Change path to ~/Music/Imported/yyyy/MM/dd/hhmmss; Remove unused dialogue code; Update .pot (10d96c18) 2014-09-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (dbce6efd) 2014-09-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1b4da24b) 2014-09-11 Victor Thompson * merge trunk (b1666fa7) * More backwards commpatibility in recent (a2275e53) 2014-09-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (fd1e1fd9) 2014-09-11 Andrew Hayzen * Add test_pressing_prev_after_5_seconds. Fixes: https://bugs.launchpad.net/bugs/1335685. (406dc441) 2014-09-10 Victor Thompson * Hide genres if none. Fixes: https://bugs.launchpad.net/bugs/1365832. (b04ed76e) 2014-09-10 Andrew Hayzen * Remove unused now_playing_page (38225a99) * Add test_pressing_prev_after_5_seconds (1319cfe8) * Fix for fake metadata (0380094c) * Merge of trunk (325b72e6) 2014-09-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (db38daca) 2014-09-09 Andrew Hayzen * Create helpers MusicAlbums MusicArtists MusicTracks MusicPlaylists AlbumsPage MusicaddtoPlaylist SongsPage ListItemWithActions; Add seek_to to toolbar helpe. Remove unused methods in MainView. (b28c9639) 2014-09-08 Andrew Hayzen * Fix for spelling mistakes and code comment improvements (34813417) * Use python3 for autopilot in all cases. Fixes: https://bugs.launchpad.net/bugs/1366007. (d1c043b9) * Remove python-mock depends (289630bd) 2014-09-08 Benjamin Zeller * Make Music app cmake project useable out of the Box with QtCreator - Enable click mode by default - Hook names in the manifest file can not be variables - Disable click mode in debian rules file - Add variable UBUNTU_MANIFEST_PATH variable so QtC knows where to look for the manifest file. (8ccdd9a3) * Fix packaging (fb8ccaa0) * Make Music app cmake project useable out of the Box with QtCreator - Enable click mode by default - Hook names in the manifest file can not be variables - Disable click mode in debian rules file - Add variable UBUNTU_MANIFEST_PATH variable so QtC knows where to look for the manifest file (d807b51d) 2014-09-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (8b02c945) 2014-09-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2cae85e1) 2014-09-05 Andrew Hayzen * Fix for test_play_pause_library; Make click_play_button helper automatically choose the correct button (c538e512) 2014-09-05 Victor Thompson * Hide genres if none (2b7727b4) 2014-09-04 Victor Thompson * Merge of trunk (45c7aa1b) 2014-09-05 Andrew Hayzen * Fix for test_mp3 (9a8534ea) * Merge of lp:~andrew-hayzen/music-app/ap-helper-refactor-003 (4d740df8) 2014-09-04 Andrew Hayzen * Merge of trunk (4f22c821) 2014-09-04 Victor Thompson * Update AP tests to newest mediascanner 2.0 db schema version. Fixes: https://bugs.launchpad.net/bugs/1365247. (bd156712) * Fix sql file (d707d7a2) 2014-09-04 Andrew Hayzen * Use python3 for autopilot in all cases (a4af5c7a) * Fix for spelling issues (65cbaf6d) * Fix for using False instead of source (d4a882d2) 2014-09-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4438e087) 2014-09-04 Victor Thompson * Update AP tests to newest mediascanner 2.0 db schema version. (42f2dad3) 2014-09-03 Victor Thompson * A few updates (f7fa7e08) * Use art property to allow mediascanner2 to determine if embedded art exists (8d8d9fa7) 2014-09-04 Victor Thompson * Fix currently playing item transition. (e108de8e) 2014-09-04 Andrew Hayzen * Change to use artistLabel (d8b3c41b) * Remove main_view and pointing_device properties; Use virtual model of metadata rather than hardcoding track_index, track_title etc; Improve toolbar handling; Improve code comments (48799a6b) 2014-09-03 Victor Thompson * Fix currently playing item transition. (7adc88a3) 2014-09-03 Andrew Hayzen * Remove dependency on Unity Actions. (6e4a0392) 2014-09-03 Victor Thompson * Allow currently playing item to resize in narrow mode. (d403623c) 2014-09-03 Andrew Hayzen * Fix for unicode encoding errors. (20b9ec5f) 2014-09-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (21cde272) 2014-09-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e446f1da) 2014-09-01 Andrew Hayzen * Remove dependency on Unity Actions (339b23df) 2014-09-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (43cbe5c3) 2014-08-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f7882197) 2014-08-29 Andrew Hayzen * Attempt to support py2 as well (6b12af60) * Fix for unicode encoding errors (5121fc70) 2014-08-28 Victor Thompson * Allow currently playing item to resize in narrow mode. (3e3f762d) 2014-08-29 Andrew Hayzen * Add code comment (8570feef) * Fix for pep8 (a39e9542) * Create helpers MusicAlbums MusicArtists MusicTracks MusicPlaylists AlbumsPage (0f8cfdd5) 2014-08-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (539c394e) 2014-08-28 Andrew Hayzen * Create helpers for MusicaddtoPlaylist, SongsPage; Remove old methods from MainView (e1c33e7f) * Add seek_to to toolbar helper; Implement ListItemWithActions helper; Remove unused methods in MainView (753caeec) 2014-08-27 Andrew Hayzen * Make basic helpers for MusicNowPlaying and MusicToolbar; Convert turn_shuffle and turn_repeat into set_shuffle and set_repeat. (e7da204a) * Merge of trunk (4bc564f9) 2014-08-27 Victor Thompson * Fix tests for new mediascanner schema. Fixes: https://bugs.launchpad.net/bugs/1361824. (b6733355) * empty (d27e8cd1) * Update user (4cbd4c2b) 2014-08-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f51dfd23) 2014-08-26 Victor Thompson * Fix tests for new mediascanner schema. (d6a4b912) 2014-08-26 Andrew Hayzen * Fix for test_mp3 (720a4448) 2014-08-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4409ca41) 2014-08-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d0edb2e0) 2014-08-24 Andrew Hayzen * Fix for set_shuffle set_repeat still using now_playing_page rather than toolbar (cc88d9a4) 2014-08-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3cb1b9f9) 2014-08-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (13ea3a34) 2014-08-23 Andrew Hayzen * Move set_repeat set_shuffle into MusicToolbar; Change fullPlayShape to playShape and others; Change expandedPlayShape to smallPlayShape (23487e3b) 2014-08-22 Andrew Hayzen * Remove duplication (034a6e6c) 2014-08-22 Alan Pope * Fix content-hub config. (43ec89d5) 2014-08-22 Andrew Hayzen * Fix for case that was removed (ed18af45) 2014-08-22 Alan Pope * remove source stanza in content hub config (e96223c2) 2014-08-22 Andrew Hayzen * Change toolbar.get_x_button to toolbar.click_x_button as they are always clicked (e4b44c0a) 2014-08-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (60cc4bb6) 2014-08-22 Victor Thompson * Fix issue with cover art not being set properly. Fixes: https://bugs.launchpad.net/bugs/1354611. (f17ef4d9) 2014-08-22 Andrew Hayzen * Wait for now playing to be visible in populate_queue(); Get now_playing_page again if it has moved (b29c6b31) 2014-08-21 Victor Thompson * Reset source from Player (34dbb912) 2014-08-22 Andrew Hayzen * Fixes for missed get_count() cases (c0d7abcb) * Merge of trunk (da517ce9) * Make basic helpers for MusicNowPlaying and MusicToolbar; Convert turn_shuffle and turn_repeat into set_shuffle and set_repeat (2108f9a0) 2014-08-21 Andrew Hayzen * Bump Ubuntu.Components to 1.1; Bump QtQuick to 2.2. (aa7d5b84) * Bump Page10 to Page11 as Ubuntu.Components has been bumped to 1.1 (3a181094) * Reverse cherry pick 587-588 (2e1501da) * Merge of trunk (3d1eaa7b) * Bump Ubuntu.Components.Popups and Ubuntu.Components.ListItems to 1.0; Remove duplicate entries of Ubuntu.Components.ListItems (7ed75365) * Initial conversion of splitting the helpers. (c07e13ba) * Merge of trunk (646b3da1) * Fix for grammatical error (bcee2536) * Make use of model.status. Fixes: https://bugs.launchpad.net/bugs/1358275. (1fa3256a) 2014-08-21 Victor Thompson * Reset genre as undefined from AlbumsPage.; Reset genre as undefined from MusicPlaylists. Fixes: https://bugs.launchpad.net/bugs/1359189. (3eba0613) 2014-08-21 Andrew Hayzen * Remove on filled property from allSongsModel (c9f8e474) 2014-08-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (cd3d9a14) 2014-08-20 Victor Thompson * Fix issue with cover art not being set properly. (6f5cd3c7) 2014-08-21 Victor Thompson * Filter out the items with a blank genre from the Genre list. (8a84d4cd) 2014-08-20 Victor Thompson * Reset from Playlists tab too. (6ec10560) 2014-08-20 Andrew Hayzen * Switch open_tracks_tab to get_tracks_page (936a9747) * Change open_tracks to open_tracks_tab; Add code comments (7e81048c) * Fix typo (6302b273) 2014-08-20 Victor Thompson * Fix inability to translate 'song'. Fixes: https://bugs.launchpad.net/bugs/1357626. (ba08a59d) 2014-08-20 Andrew Hayzen * Empty commit to rerun jenkins (2bdec5f7) * Remove useDeprecatedToolbar: false as it is false in ubuntu components 1.1 (d66ab625) * Bump Ubuntu.Components to 1.1; Bump QtQuick to 2.2 (085c5c6d) 2014-08-20 Victor Thompson * Reset genre as undefined from AlbumsPage. (e9c6b116) 2014-08-20 Andrew Hayzen * Merge of trunk (7aa5dc0b) * Reverse reverse cherry pick; Fix for SongsModel.Ready (ea099994) 2014-08-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f1c515a2) 2014-08-19 Victor Thompson * Filter unknown genres (a03a7076) 2014-08-20 Andrew Hayzen * Add content-hub destination support. Fixes: https://bugs.launchpad.net/bugs/1347444. (1b1a5e06) * Fix for tracksTab name change (03cde8d3) * Fix incorrect property (52d98fb8) 2014-08-19 Andrew Hayzen * Add property for pointing_device to keep old tests running (b5ff726d) * Initial conversion of splitting the helpers (a0fe2bde) 2014-08-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c4d6189c) 2014-08-19 Andrew Hayzen * Revert noMusic fix for now until lp:1358275 is resolved (0ed61124) 2014-08-18 Andrew Hayzen * Switch to custom proxy object emulator, instead of calling via old emulators module. Fixes: https://bugs.launchpad.net/bugs/1341681. (4b2f6940) * Switch to custom proxy object emulator, instead of calling via old emulators module (fd9f0dfb) * Fix for incorrect datetime for URL (75a6e511) * Modify not found text; Update .pot (dc351e2b) 2014-08-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (65c13375) 2014-08-18 Victor Thompson * Stop player when last item is removed; Leave Now Playing page if there are no more tracks. Fixes: https://bugs.launchpad.net/bugs/1357838. (8285f346) 2014-08-17 Victor Thompson * Update (57dc6b46) * Update the call to leave the Now Playing page (98fd0c1a) 2014-08-18 Andrew Hayzen * Merge in lp:~andrew-hayzen/music-app/fix-no-music-use-model-status (1737be70) * Reverse cherry pick 582 (617c672e) 2014-08-17 Andrew Hayzen * Remove all onFilled (9ffcbbf1) * Make use of model.status (758ce8bd) 2014-08-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (99db5716) 2014-08-16 Victor Thompson * Stop player when last item is removed; Leave Now Playing page if there are no more tracks (f0c9bdbe) 2014-08-17 Andrew Hayzen * Merge of trunk (b68632be) * Skip import dialogue for now and autoimport (54c47bbe) 2014-08-17 Victor Thompson * Adjust the size of the transparent background for a label. (f2aa01dd) * Fix empty queue message length; Wrap text for empty queue message. Fixes: https://bugs.launchpad.net/bugs/1357625. (9c2feafe) 2014-08-16 Victor Thompson * Place now playing item in a transparent label. (c26f8071) * Add album from scope to recent list. Fixes: https://bugs.launchpad.net/bugs/1357149. (630d6434) * Fix getPlaylistCovers functions to return only unique covers. (eb2fd5dc) * Fix empty queue message length (30a49ea2) * merge trunk and resolve conflict (f4768ef7) * Do not tell the user to restart the app. (91b0e71e) * Update 'Playlist' translations; Update 'Genre' translations. Fixes: https://bugs.launchpad.net/bugs/1357646. (88ad790f) 2014-08-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bb75b376) 2014-08-16 Victor Thompson * Update 'Playlist' translations; Update 'Genre' translations' (9ff4b257) 2014-08-15 Victor Thompson * Fix inability to translate 'song' (85e6fc65) * Update pot file (ca1da2fb) * Do not tell the user to restart the app. (92934624) * Fix solution to allow same artists with different albums (5546fa10) * Fix getPlaylistCovers functions to return only unique covers (68060fa6) 2014-08-16 Andrew Hayzen * Fix for emptyPage (cc69a2da) 2014-08-15 Andrew Hayzen * Remove debug lines (46030628) * Fix for incorrect path; Implement not found dialogue (3acb35b8) 2014-08-15 Victor Thompson * Empty (691dd2d3) 2014-08-15 Andrew Hayzen * Merge of trunk (17d1b8f4) 2014-08-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (aa73dd71) 2014-08-14 Victor Thompson * Adjust the size of the transparent background for a label. (c2d45155) * Add album from scope to recent list (a4942d7a) * Place now playing item in a transparent label (30e88f97) * Make UbuntuShapes appear pressed. (500a5c49) 2014-08-14 Andrew Hayzen * Fix for blank duration after sleep and wake - update label onPositionChanged. (d3288f7b) * Fix for ap tests (8a0478ce) 2014-08-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6c0f5c5a) 2014-08-14 Victor Thompson * Do not shuffle if only one track in queue and repeat is off. Fixes: https://bugs.launchpad.net/bugs/1327143. (4e93e75d) 2014-08-13 Victor Thompson * Add CoverRow to Now Playing page with pressed catch (190296a3) * Use repeat property (d7936045) 2014-08-13 Andrew Hayzen * Fix for blank duration after sleep and wake - update label onPositionChanged (274bbb21) 2014-08-13 Víctor R. Ruiz * Mark strings for localization. Fixes: https://bugs.launchpad.net/bugs/1355920. (f0d3e43a) 2014-08-13 Victor Thompson * Fix failing test (test_add_song_to_queue_from_albums_page) in trunk. (2c0dbeba) 2014-08-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (8105dbc5) 2014-08-12 Victor Thompson * Fix failing test in trunk (49cc4122) 2014-08-13 Víctor R. Ruiz * Update .pot file (aeefdccb) 2014-08-12 Víctor R. Ruiz * Mark strings for localization (a132de6d) 2014-08-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1865b606) 2014-08-11 Victor Thompson * Do not shuffle if only one track in queue and repeat is off. (0548b954) * merge trunk (96475c02) 2014-08-11 Andrew Hayzen * Merge of trunk (b93dda1b) 2014-08-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7659cbab) 2014-08-11 Andrew Hayzen * Remove expander, reorder, swipedelete code; Use ListItemWithActions from other apps; Implement actions for add to playlist, add to queue, edit playlist, delete playlist; Implement reordering. Fixes: https://bugs.launchpad.net/bugs/1311800, https://bugs.launchpad.net/bugs/1338042. (b0909a12) * Refresh playlist model count when child track is removed (894357d0) * Fix removing track from playlist; Fix elide of text when reordering; Rebuild .pot; Cancel reordering if focus is lost (5137f863) 2014-08-09 Victor Thompson * Make UbuntuShapes appear pressed (5f2e222d) 2014-08-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2a567371) 2014-08-09 Andrew Hayzen * Switch rightSideAction to be white/orange (82c74601) 2014-08-08 Andrew Hayzen * Fix margins of now playing so item is centred (0daf38f5) * Enable reordering for playlists; Remove extra remove dialogue when removing a playlist; Increase rightAction margin (9eb994c1) 2014-08-07 Andrew Hayzen * Merge of trunk (918e1901) * Use MediaStore.lookup() instead of binary search (8812c71a) * Fix for ap so that it waits for the action animation to complete before accessing the playlist page (c75c2f5a) * Merge of trunk (ae40bffd) * Switch colour of rightactions to Orange (cf8cd70e) * Fixes for ap tests and swipeDelete not functioning (8cc6d2f5) 2014-08-07 nskaggs * Wait until model is populated before deciding there is no music. There was a new prototype to the Songs model added that provides a "filled" signal that we should listen to in order to determine the model is full. (95b5f21b) * remake vthompson's diff (4ed80880) 2014-08-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (5060a4f1) 2014-08-07 Victor Thompson * Use mediascanner SongsModel.lookup() function to play song from Music Scope; Catch the filled signal for the SongsModel used for playing an album from the Music Scope. Fixes: https://bugs.launchpad.net/bugs/1352877. (b3968b50) * Make dialog error text red instead of white; Make confirm dialog button orange. Fixes: https://bugs.launchpad.net/bugs/1353173. (744b9fc9) 2014-08-06 Victor Thompson * Clear filter (c13c94cf) 2014-08-07 Andrew Hayzen * Merge of trunk (d54b35cf) 2014-08-06 nskaggs * Bump to dev3. (d65defe5) 2014-08-06 Victor Thompson * Reset selectedAlbum... just in case. (c3682a6d) * Fix swipe to delete test. Fixes: https://bugs.launchpad.net/bugs/1350529. (343a844f) * Make wideAspect dependent upon loadedUI bool (e33a8dc8) 2014-08-06 Andrew Hayzen * Correct objectNames for autopilot (dc30d787) * Add primed var to actions so autopilot can tell which actions are visible (a06e4412) 2014-08-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (42919723) 2014-08-05 Victor Thompson * Make dialog error text red instead of white; Make confirm dialog button orange (401fbd2b) * merge of trunk (32c51ad7) * Revert accidental merge (2d225ec0) * Also give the confirm button UbuntuColors.orange color (cfd34f21) * Fix swipe to delete test (013d2c5b) * Make dialog error text red instead of white (9ad38374) 2014-08-05 Andrew Hayzen * Fixes for autopilot (5ba276ae) 2014-08-05 nskaggs * bump framework (f194c20d) 2014-08-05 Victor Thompson * Fix playing song and album from scope (f6dbf524) 2014-08-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (78d23164) 2014-08-05 Andrew Hayzen * Direct port of ap tests from listitem-actions (a3dc5ae0) * Add background to right actions; NowPlaying UI Fix (ecabd585) 2014-08-04 Andrew Hayzen * Add reorder support (213aaed5) 2014-08-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (65f20651) 2014-08-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a4442461) 2014-08-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (60779af9) 2014-08-01 Andrew Hayzen * Initial transition to using ListItemWithActions.qml (b5eb7375) 2014-07-31 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1b774ebc) 2014-07-30 Andrew Hayzen * Implement wait dialogue; Fix for getPath() (b5cd3552) * Merge of trunk (a593100e) 2014-07-30 Victor Thompson * Refactor playlists DB. Fixes: https://bugs.launchpad.net/bugs/1261076. (22739eed) 2014-07-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (230d76e5) 2014-07-30 Andrew Hayzen * Fix to check if the playlist exists when renaming (579a850d) 2014-07-29 Andrew Hayzen * Show error if the same playlist name is used when editing (13eaa533) * Ignore rename if from is the same as to (6a31f0c6) 2014-07-29 Victor Thompson * Update edit playlist name (10e52d04) 2014-07-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bbf8b0c1) 2014-07-28 Victor Thompson * Update edit playlist name (1f9fb617) 2014-07-28 Andrew Hayzen * Fix for incorrect variable names; Extra debug lines (c45c1db0) * Fixes for no return when no tx is passed (30064be7) * Fixes so that playlist db is created even if no db existed before (540385e8) 2014-07-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f1b17a94) 2014-07-28 Andrew Hayzen * Optmise transactions so most methods only use 1 db transaction (f07739f5) * Fixes to removeFromPlaylist and move for playlists.js (36e9d319) * Refactor playlists DB (02fbdb2a) 2014-07-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b05ecba6) 2014-07-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0d36d260) 2014-07-24 Tim Peeters * Update autopilot tests to use the UITK CPO for clicking the back button. (aea776b4) * replace the remaining calls of get_back_button (e3edbc5e) * use uitk go_back() (5e68fda0) 2014-07-24 Leo Arias * Do not depend on the position of the label to find the icon to expand it. Fixes: https://bugs.launchpad.net/bugs/1348055. (7454b9e5) * Do not depend on the position of the label to find the icon to expand it. (a1a5f4ec) 2014-07-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a7e635a5) 2014-07-23 Andrew Hayzen * Merge of trunk (ebd0fe96) 2014-07-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (271498ee) 2014-07-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (23dca696) 2014-07-21 Victor Thompson * Make icons consistent; Remove some unused icons; Use Icon component when possible. Fixes: https://bugs.launchpad.net/bugs/1341219. (bf3f2293) 2014-07-21 Pawel Stolowski * Added X-Ubuntu-Default-Department-ID key to the desktop file. This is required by click scope to support departments for preinstalled applications. (f1e5dc24) 2014-07-21 Victor Thompson * Do not show year for genre. Fixes: https://bugs.launchpad.net/bugs/1343725. (bf7a52d6) * Always get album date. Fixes: https://bugs.launchpad.net/bugs/1343724. (02311f67) 2014-07-21 Pawel Stolowski * Added X-Ubuntu-Default-Department-ID key to the desktop file (4447d114) 2014-07-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (cc922217) 2014-07-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (82c226bf) 2014-07-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (92414886) 2014-07-18 Victor Thompson * Make OSK on new playlist dialog non-predictive. Fixes: https://bugs.launchpad.net/bugs/1340507. (a0baaf4f) 2014-07-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6939b4c2) 2014-07-17 Victor Thompson * Always get album date (1f345bd2) * Do not show year for genre (cb7de5f1) 2014-07-17 Andrew Hayzen * Change to move the file to ~/Music/Imported/YYYYMMDDHHMMSS-foo.ext; Add searching support to model (d049fafc) 2014-07-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (adf7efca) 2014-07-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f06c67d0) 2014-07-14 Andrew Hayzen * Add popup with prompt to move the file; Make use of content hub move() (5e2fddd9) 2014-07-13 Andrew Hayzen * Move pages inside pagestack. (9ada34bd) * Move pages inside pagestack (0992bc2a) * Merge of trunk (5de27101) 2014-07-12 Victor Thompson * Make icons consistent; Remove some unused icons; Use Icon component when possible (5bbf0427) 2014-07-12 Andrew Hayzen * Fix to ensure that the width of the label is set and the MusicRow.qml anchors.right is set correctly so that labels elide when the expander is reached; Set elide, height, maximumLineCount, wrapMode, verticalAlignment and width inside MusicRow.qml. (ca08d4b1) * Add code comment to width binding (5fe05984) 2014-07-11 Andrew Hayzen * Tweak to include margin to expander item (4cd8e070) * Fix to ensure that the width of the label is set and the MusicRow.qml anchors.right is set correctly so that labels elide when the expander is reached; Set elide, height, maximumLineCount, wrapMode, verticalAlignment and width inside MusicRow.qml (ca7ec06f) * Abstract listitem common structure into MusicRow.qml; Add support for new row in SongsSheet.qml, MusicArtists.qml, MusicPlaylists.qml, MusicSearch.qml and MusicaddtoPlaylist.qml. (736d3ffe) * Fix for autopilot (215ad2f9) * Modify height of labels so that they are aligned in the centre correctly (9b1cfaa3) 2014-07-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (fad112a8) 2014-07-10 Victor Thompson * Make OSK on new playlist dialog non-predictive (9be69711) 2014-07-11 Stefano Verzegnassi * Make cover art label backgrounds opaque; Modify Albums tab UbuntuShape radius; Adjust cover art label font weight and color. (cf415643) 2014-07-11 Andrew Hayzen * Fix for autopilot (e8f8857a) * Fix for progress bar on stop. (9730468d) * Fix for autopilot (b35396b8) * Merge of trunk (055a63d0) 2014-07-09 Stefano Verzegnassi * White color for secondaryText in the UbuntuShapes items (5d6229d5) 2014-07-08 Victor Thompson * Updates (11d9a9f1) 2014-07-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a4b7af5a) 2014-07-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (efa141ab) 2014-07-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6639cb38) 2014-07-04 stefano-2 * Transparent background for UbuntuShapes labels (e86b351d) 2014-07-03 Victor Thompson * Fix new playlist error text color. Fixes: https://bugs.launchpad.net/bugs/1295932. (ff088ff0) 2014-07-02 Victor Thompson * Fix new playlist error string color (c0d2d829) 2014-07-03 Victor Thompson * New playlist from header. Fixes: https://bugs.launchpad.net/bugs/1282775, https://bugs.launchpad.net/bugs/1297179. (9de36b19) 2014-07-02 Victor Thompson * Fix test (aaf76884) 2014-07-02 Andrew Hayzen * Merge of trunk (edfd9112) * Merge of trunk (3b92a4ea) * Bump framework to -dev2. Fixes: https://bugs.launchpad.net/bugs/1336764. (9c6d57ff) 2014-07-02 Victor Thompson * New playlist from header (46fe7bf6) 2014-07-02 Andrew Hayzen * Migrate the following sheets to page/pagestacks, SongsSheet.qml, AlbumsSheet.qml and MusicaddtoPlaylist.qml. Fixes: https://bugs.launchpad.net/bugs/1312430. (b5c8834d) * Bump framework to -dev2 (b064e28e) * Only attempt to play first file (fb159d9b) * Add content-hub destination support (fa2df745) 2014-07-01 Victor Thompson * Autopilot to mock home again. (32193e48) 2014-06-30 Andrew Hayzen * Abstract listitem common structure into MusicRow.qml; Add support for new row in SongsSheet.qml, MusicArtists.qml, MusicPlaylists.qml, MusicSearch.qml and MusicaddtoPlaylist.qml (b9bd7d1c) * Merge of trunk (88b44036) 2014-06-29 Andrew Hayzen * Merge of trunk (75da9163) 2014-06-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b99d452a) 2014-06-28 Andrew Hayzen * Fix potential trackclicked issues. (3f51b92d) 2014-06-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3edb2e27) 2014-06-26 Victor Thompson * Mock home again (7f429225) 2014-06-27 Victor Thompson * Remove workarounds for Mediascanner 2.0 D-Bus issues. (d4a8b92d) 2014-06-26 Victor Thompson * merge trunk, resolve conflicts (66036565) 2014-06-26 Andrew Hayzen * Change back behaviour to go from now playing to tabs rather than to intermediary pages; Removal of any mentions of sheet in tests/objectnames and renamed to page to avoid confusion (806b35ba) 2014-06-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (94dfff31) 2014-06-25 Andrew Hayzen * Fix for pyflakes (48238fff) * Fix for autopilot (87385442) * Fix for pep8 (b5ee941f) * Add margin to play all artist on albums page (0ab47833) * Merge of trunk (5c24ec8c) * Add music page to bzr (29b41e67) * Fix Pep8 after update. (5f8fd99d) * Fix for incorrect formatting of string (0b53c4e8) 2014-06-24 Andrew Hayzen * Fix Pep8 after update (7c1a2cd3) * Abstract Page to MusicPage to make bottom edge implementation easier (7b9a4f82) * Fixes for pyflakes (6225e9c3) 2014-06-24 Victor Thompson * Remove workarounds for Mediascanner 2.0 D-Bus issues (02b97c8f) 2014-06-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e30cc593) 2014-06-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b427b72e) 2014-06-21 Andrew Hayzen * Fix potential trackclicked issues (f2a92f71) 2014-06-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2a8d6144) 2014-06-21 Victor Thompson * Update test_next_previous to seek to 0 before selecting previous. Fixes: https://bugs.launchpad.net/bugs/1332570. (af553d77) 2014-06-20 Victor Thompson * Fix pep8 (80605cd8) * Seek to 0 prior to selecting previous (2724a2a7) * Update test_next_previous to always immediately pause the track after hitting next (2ebbacbb) 2014-06-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a25da01b) 2014-06-19 Andrew Hayzen * Restore to using Item for header (e447970c) * Minor fixes (a9625d4f) * Fixes for autopilot merge (cf36c1b5) * Merge of trunk (0185c34e) 2014-06-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2798e13c) 2014-06-19 Victor Thompson * Refactor app to use new Media Scanner 2.0 qml bindings and database. Fixes: https://bugs.launchpad.net/bugs/1265878, https://bugs.launchpad.net/bugs/1273625, https://bugs.launchpad.net/bugs/1319382, https://bugs.launchpad.net/bugs/1324105, https://bugs.launchpad.net/bugs/1325233. (9695aa79) 2014-06-18 nskaggs * switch to subprocess (f32532b9) 2014-06-18 Victor Thompson * remove time (b7c26c1a) * Update calls (2e5af0b1) 2014-06-18 nskaggs * simplification, better expansion, pep8 fixes (ebddc881) * simplify backup/restore code (71317d4d) * add back _patch_mediascanner_home (94358d6f) * fix up isolation code (f11fee90) * remove extra cleanup steps (f2f7db0f) 2014-06-18 Victor Thompson * revert last commit (1eee1584) * Cleanup (d1848b29) 2014-06-18 nskaggs * flake8 goodness (66d8a0bb) * add back backup/restore to create_music_libraray (5f3f40f4) * merged victor's artist fix (fda91989) * more comments (0ac8c8d5) * merge back andrew's branch using backup/restore instead of isolation (11f07b20) 2014-06-18 Victor Thompson * Fix test_artists_tab_album test (a7c04ee7) 2014-06-19 Andrew Hayzen * Fixes for pep8 (344384f7) 2014-06-18 nskaggs * remove extra comment (aa817fe2) 2014-06-18 Victor Thompson * Fix test_artists_tab_album (ca846a1e) 2014-06-18 nskaggs * remove sys.exit from test (67415faf) * remove extraneous function (77470bda) * removing debugging prints and waits; fix for dbus call (09f5d866) 2014-06-18 Andrew Hayzen * Fix for missing import (adc65c01) * Only kill if the process exists (e031ccd8) * Added cleanups (4b66d5da) 2014-06-18 nskaggs * rebase (3a7f6d2b) * new fake db based on schema 6 (3a4564cc) 2014-06-18 Andrew Hayzen * Fix for typo in cleanup (ce0181b5) 2014-06-18 Victor Thompson * Change kill command (b9196bf8) 2014-06-18 Andrew Hayzen * Add cleanups to autopilot (0318d6fa) 2014-06-18 nskaggs * pull out dbus launch (4bda2f1a) * slightly saner version (bdaca5fe) * all the hackiness at once (b1108a00) 2014-06-18 Victor Thompson * Stop and start mediascanner2 and also wait 10 seconds (a4dca7b1) * Fix destructive tests (5685a5fe) 2014-06-17 Victor Thompson * Merge trunk (5689fb41) 2014-06-17 Andrew Hayzen * Make QML, JS, PNG, SVG, PY, JSON files visible in QtCreator. (d475ef2a) 2014-06-18 Andrew Hayzen * Show translations, url-dispatcher and license file in qtcreator (d4957690) 2014-06-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a27e0fa3) 2014-06-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9ce50cbf) 2014-06-15 Andrew Hayzen * Hack to limit all SongsModels to 500 tracks (65c86273) 2014-06-14 Victor Thompson * Limiting SongsModels to 500 to ensure they at least load (b8b260ca) 2014-06-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b852870d) 2014-06-13 Andrew Hayzen * Fix to show common/*.qml common/ExpanderItems/*.qml (94837fb8) 2014-06-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (05895ccb) 2014-06-12 Andrew Hayzen * Fix for minimized toolbar (bbb85a0a) * Fix for progress bar on stop (2b6a7111) 2014-06-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (722398f3) 2014-06-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4109dee9) 2014-06-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (15d1c505) 2014-06-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f392bf89) 2014-06-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d3ca800e) 2014-06-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4b6afdba) 2014-06-06 Andrew Hayzen * Merge of trunk (bec0896b) * Merge translations back into .desktop file using intltool. Fixes: https://bugs.launchpad.net/bugs/1318008. (d16352b4) * Fix for syntax error; Removal of duplicate parameter (e1cfbd9b) * Fixes to commands (ca9710a2) * Merge of trunk (171cf0df) * Merge translations back into .desktop file using intltool. (d41ec93c) * Remove X-Gettext-Domain= field from com.ubuntu.music_music.desktop.in. Fixes: https://bugs.launchpad.net/bugs/1325626. (a110278e) * Remove X-Gettext-Domain= field from com.ubuntu.music_music.desktop.in (809eaf0c) 2014-06-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e2882433) 2014-06-05 nskaggs * undo the backup/restore. it's just not an option (5ec664ba) * wip (6918e14d) * set /home to be ~/ (5b17069e) * fix flake8, also backup mediascanner path (17f47711) * revert to using backup and restore for database and Music folders (cd01960d) 2014-06-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (adaa177a) 2014-06-04 Andrew Hayzen * Add thumbnailer-service as depends for now to resolve issues on desktop (041260d8) 2014-06-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ce602af3) 2014-06-03 Victor Thompson * Fix play all of an album from the Artist albums sheet (2142b2f8) * Merge of trunk (88ad14be) 2014-06-03 Anthony Wong * Correct spelling of 'Acoustic' from 'Accoustic'. (2d18f297) 2014-06-04 Anthony Wong * Resolved merge conflicts (93fc6f54) 2014-06-03 Andrew Hayzen * Fix to stop genres incorrectly appearing in recent if play all was selected (3ff71355) 2014-06-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (67a2efdf) 2014-06-02 David Planella * Mark "Clear history" button for translation. (ef3cde69) * Update .pot file (d354024b) * Marked Clear history button as translatable (fe9c6bc1) 2014-05-31 Victor Thompson * Add gstreamer dependencies needed for the app to work on Utopic desktop. (b46fb39e) 2014-05-30 nskaggs * update ap env isolation (mediascanner still will whine) (72d6b366) 2014-05-30 Andrew Hayzen * Merge of trunk (96880bc1) 2014-05-30 nskaggs * Revert back to unconfined again, temporarily. (693180af) 2014-05-30 Andrew Hayzen * Ensure that genre is set to undefined when filtering by album (bcf26e89) * Readd genre support (6727d0e4) 2014-05-30 nskaggs * change back to unconfined until mediascanner 2 release (20167356) 2014-05-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7c26257e) 2014-05-29 nskaggs * revert local_location tweak (78f206ef) * simplify logic per thomi for local_location_qml (aa1c474a) * tweak env patching apparmor setup (b566e633) 2014-05-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (746c823a) 2014-05-28 Anthony Wong * Correct spelling of 'Acoustic' (d2f3a282) 2014-05-28 Andrew Hayzen * Fix for patching home_dir (6f9ba6cf) 2014-05-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f6312af5) 2014-05-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c8a740ce) 2014-05-26 Andrew Hayzen * Tweak to only include QML, JS files in source (0d548a6c) * Make QML, JS, PNG, SVG, PY, JSON files visible in QtCreator (a614b189) 2014-05-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ba2ba91f) 2014-05-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a14cada6) 2014-05-23 Victor Thompson * Update copyright (9f98cb17) * Update app armor for confinement; Update policy version (554b2069) 2014-05-23 Andrew Hayzen * Bump framework to ubuntu-sdk-14.10-qml-dev1 (7792ccf5) * Fix for blur background empty at startup (58f45ed7) * Revert framework bump for testing (77460191) * Fix for pyflakes (ba03b3c0) 2014-05-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d43149d4) 2014-05-23 Andrew Hayzen * Fix for cover art (7a5375cf) 2014-05-23 Victor Thompson * Use new 14.10-dev1 framework (93b3d767) * Re-write test_play_pause_library test (2cc4061c) 2014-05-23 Andrew Hayzen * Fix for incorrect tag for artist in image:// (ce4c961d) * Move all model.art/model.cover to use model.artist and model.album to construct a image:// url (f0dc37b0) * Use sortFilterModel to correctly sort Albums and Tracks; Fix issue of blank album art in recent; Correctly drop metadata table (341aca1b) 2014-05-22 Victor Thompson * Test for only backButton (a8e05682) * Fix play button on device; Fix check for playing (bf8c2435) * Patch SQLite DB. (6c913110) 2014-05-22 Andrew Hayzen * Fix for sort filter models so they appear the same as mediascanner2 models (cf27d2c6) * Merge of trunk (3149f320) * Fixes for Pep8 (da5fc692) 2014-05-22 Victor Thompson * Patch db (af1c1654) * Find new customBackButton (21d17643) 2014-05-22 Andrew Hayzen * Fix for test_play_pause_library touching indicators (7512c7d6) 2014-05-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b18f1aba) 2014-05-21 Andrew Hayzen * Remove unneeded clipping (8eb5592a) * Fix for looking for incorrect objectName (8669cde2) 2014-05-21 Victor Thompson * Update test_play_pause_library test (12c4ecfc) 2014-05-21 Andrew Hayzen * Fixes for more cases where album instead of song was used (3d15850e) * Fix for using get_album_sheet_listview_tracktitle instead of get_songs_page_listview_tracktitle (0353ab5f) * Fix for objectNames in songsPage called albumsheet; Modify get_back_button to use header back button; Switch AP tests to use get_back_button rather than close on a sheet * Fix for AP tests using albumsheet-* when they should use songspage-* (b56ca93f) 2014-05-21 Victor Thompson * Merge trunk (270a0bb7) 2014-05-21 Andrew Hayzen * Fix for swiping in autopilot. (0b0ecd60) * Migrate the following sheets to page/pagestacks, SongsSheet.qml, AlbumsSheet.qml and MusicaddtoPlaylist.qml (4d240490) * Fix for swiping in autopilot (4a2d1a78) * Merge of trunk (6002e53c) 2014-05-20 Victor Thompson * Fix unused variable (c019fceb) * empty (b6a7387b) * Fix bad merge conflict resolution (4e048fe5) * Fix pyflakes error (5110c39e) * Merge trunk (ef040668) * Initial test updates for mediascanner migration. (88fcdf6b) * * Fix the cover art for the header in the sheet of artist albums. Fixes: https://bugs.launchpad.net/bugs/1320409. (6f4aaa98) 2014-05-20 Andrew Hayzen * Merge of trunk (3af971fb) 2014-05-19 Victor Thompson * Fix the cover art for the header in the sheet of artist albums. (7c242a6e) 2014-05-19 Andrew Hayzen * Use sortFilterModel to correctly sort Albums and Tracks (d674f085) 2014-05-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (26476613) 2014-05-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (53b3169f) 2014-05-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (8901721d) 2014-05-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (db05fec8) 2014-05-15 Victor Thompson * Fix image fallback on Search page. (ef2e036c) 2014-05-14 Victor Thompson * Fix image fallback on Search page (02f52af7) * Remove fix that just prevents cover art from working (4f66ca1d) 2014-05-12 Victor Thompson * Revert app to unconfined until Thumbnailer issue is solved. (54bd2403) * Use new mediascanner2.0 db for AP tests (15037150) 2014-05-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4177f8d9) 2014-05-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4c5f967e) 2014-05-10 Victor Thompson * Fix playlist cover art in now playing (04a00801) * Quick fix for playlist cover art that was previously blank. (e273f974) 2014-05-10 Andrew Hayzen * Fixes to allow legacy playlist model work with new methods (11c8f229) 2014-05-10 Victor Thompson * merge trunk (98fbddd0) * Do not show search results until a search term is entered. (3cb24912) 2014-05-10 Andrew Hayzen * Remove some code unneeded comments (94a9e62a) * Remove unused methods and drop metadata table (714f5121) 2014-05-10 Victor Thompson * Convert date to year only. (ede1e3ef) 2014-05-10 Andrew Hayzen * Migrate appendMediaScanner2, trackClickedMediaScanner2, addQueueFromModelMediaScanner2 to append, trackClicked, addQueueFromModel; Fix for filename not being set on getNext() (a2b4dfe2) * Remove trackClicked, addQueueFromModel, trackQueue.append (migrate new mediascanner2 in next commit); Connect trackClickedMediaScanner2 correctly; Migrate URIHandler and noMusic property to use mediascanner2; Add appendMediaScanner2 to trackQueue; Various fixes (1c3b59b3) 2014-05-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6d6e5870) 2014-05-09 Victor Thompson * Update apparmor profile to remove grilo and update mediascanner directory. (c99b4445) * Merge trunk (4cfa354c) 2014-05-09 Jamie Strandboge * Update click/apparmor.json to run under confinement. Fixes: https://bugs.launchpad.net/bugs/1315386. (5bfe9667) * add music_file_read to click/apparmor.json (cb69a512) * merge from upstream (1741171b) 2014-05-09 Victor Thompson * Update translations. Fixes: https://bugs.launchpad.net/bugs/1317683. (1e6a3364) 2014-05-08 Victor Thompson * Update translations (d1ddccb8) 2014-05-09 Andrew Hayzen * Merge of trunk (f69da118) 2014-05-08 Andrew Hayzen * Add central common/Expander.qml; Allow expander items to be plugged-in components; Fix for rotation not working correctly on some expanders; Made it easier to click expand button by making it larger; Various tweaks. (93c33210) 2014-05-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2e4e1b32) 2014-05-07 Victor Thompson * Merge trunk (a50ef272) 2014-05-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d0034a2a) 2014-05-07 Andrew Hayzen * Fix for console error at startup. (4ee6a50b) * Fix for console error at startup (5728f054) 2014-05-07 Victor Thompson * Support new SDK back button and tab drawer. (a90f7ae8) 2014-05-06 Victor Thompson * Adjust topMargin (d2b0ddcb) * remove debug (01ec629a) * Support new SDK back button and tab drawer (9ef6b3a7) 2014-05-06 Andrew Hayzen * Modify loading date for SongsSheet.qml; Create finished signal in repeater (6ec1dec6) 2014-05-05 Andrew Hayzen * Fix for large amount of covers for one artist causing slow startup (726fd5d7) * Remove unused methods from meta-database.js (ba46f3bc) 2014-05-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (21c60294) 2014-05-04 Victor Thompson * Use repeater to set AlbumsSheet year and track count (85475944) * Year not needed in MusicAlbums; Fix Artist tab album and song count using repeater; Fix Artist tab cover arts using repeater; Fix AlbumsSheet header CoverRow using repeater (2d4b7faf) 2014-05-04 Andrew Hayzen * Remove unused Library imports (33db538c) * Prepare addQueueFromModel, trackClicked mediascanner2 methods and noMusic property for when model.count and model.get exist (9a09e837) * Merge of trunk (37e55664) 2014-05-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7ebe9054) 2014-05-04 Victor Thompson * merge trunk (515c6324) 2014-05-04 Andrew Hayzen * Disable full toolbar controls when no library. Fixes: https://bugs.launchpad.net/bugs/1315789. (e3e11b8f) * Force toolbar to show if in wideAspect. Fixes: https://bugs.launchpad.net/bugs/1315780. (7e303802) * Add empty state to disabled small toolbar play button (af5c9818) * Disable small toolbar play button when library is empty (ad6f3dd4) * Show toolbar if there is no music in wideAspect mode (c7321213) * Disable full toolbar controls when no library (0928f214) * Force toolbar to show if in wideAspect (f0ea8482) * Merge of trunk (6c37756c) * Merge of trunk (776188af) * Fix for to stop duplicate setting of pageStack (7b08dad6) * Modify code comments (59613103) * Change setNowPlaying(visible) to pushNowPlaying(void) (c94d73fd) * Selecting labels in wideAspect toggles now playing page visibility. Fixes: https://bugs.launchpad.net/bugs/1312986. (949ad361) * Fix for to stop duplicate setting of pageStack (5f224850) * Selecting labels in wideAspect toggles now playing page (e92414b6) 2014-05-03 Andrew Hayzen * Merge of trunk (1e5f2edc) * Merge of trunk (81f1ac74) 2014-05-03 Victor Thompson * Make number of albums in the AlbumsSheet header's CoverRow translatable; Allow number of albums to be singula. Update translations. (87517adf) * When the app is loading no toolbar will be shown. This makes it more obvious that the user can interact with the toolbar once it is displayed. Additionally, the toolbar will not be shown when the app has no music. Fixes: https://bugs.launchpad.net/bugs/1314262, https://bugs.launchpad.net/bugs/1314515. (c79a0c45) 2014-05-03 Andrew Hayzen * Add models in preparation for counting number of tracks/albums for each artist; Add code comments for console errors (49543393) * Fix for CoverRow.qml console errors (e2c58443) 2014-05-02 Victor Thompson * Make number of albums in CoverRow translatable; Allow albums in CoverRow to be singular; Update translations (d219d278) 2014-05-02 Jamie Strandboge * update click/apparmor.json to run under confinement (cf771f52) 2014-05-02 Victor Thompson * Update manifest (e0a83846) * Merge of trunk (d9de95ea) 2014-05-02 Andrew Hayzen * Add ability to play all tracks for an artist. (0b17369f) * Fix for autopilot (ea0de4e4) * Pep8 fix (dae1472f) * Fix for autopilot (8d8b8406) 2014-05-02 Victor Thompson * Make some updates Artist header item. (76eec096) 2014-05-02 Andrew Hayzen * Fix for autopilot (16f74d9b) * Always show play all header (3187c9c6) 2014-05-01 Victor Thompson * Oops (67ead9e0) * Merge of trunk (143378ee) 2014-05-02 Andrew Hayzen * Merge of trunk (967ad0ad) * Allow multiple covers in artist play all; Modify to sort by album by year; Change font sizes and colour (81692c76) 2014-05-01 Victor Thompson * Small spacing tweaks (9defa174) * Make buttons light grey rather not white (30bd4f36) * Update Artist header item (d73d7352) * Merge of trunk (e17f574e) 2014-05-02 Andrew Hayzen * Remove unused code from meta-database.js and LibraryListModel.qml (71d20bef) 2014-05-01 Andrew Hayzen * Add support to search sheet for mediascanner2; Remove unused variable in MusicAlbums.qml to resolve console errors (b91f4f87) 2014-04-30 Victor Thompson * Revert temporary width change. (90e3aad7) * Do not show toolbar until library loads; Do not show toolbar if there is no music (6475cb6a) * Minor control file update (70a8ee47) * Merge of trunk with AP test updates. (88a3ce79) 2014-04-30 nskaggs * Fix phablet device test runs not using mocked home. Fixes: https://bugs.launchpad.net/bugs/1292044. (34b8791c) * ty Victor; adding cleanup step so env cleans up after too! (c66ff2f2) 2014-04-30 Victor Thompson * Fix genre related console error; Fix cover art for recent items (072862bd) * Merge of trunk (38db67bf) * Add a dependency upon the default icons; Remove unused icons. Fixes: https://bugs.launchpad.net/bugs/1314449. (cf97ba7f) 2014-04-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (eb133394) 2014-04-29 Victor Thompson * Add a dependency upon the default icons; Remove unused icons (7edc0ef5) 2014-04-30 Andrew Hayzen * Removal of old code; Fixes for MusicStart.qml (a49e486b) * Revert last change (fc9d6a46) * Fix for swiped items not being dismissed when expanding an item (0e14106d) * Fix for expands corrupting startY position of swipeDelete (bed771ad) 2014-04-29 Andrew Hayzen * Groundwork to migrate pages/sheets to mediascanner2 (except recent and playlists) (2337ad4b) * Merge of trunk (f0553f41) * Update dependencies; Temporary fix to show empty library page (b4639863) 2014-04-29 Victor Thompson * Collapse any expanded item when index changes. Fixes: https://bugs.launchpad.net/bugs/1310161. (a2888235) 2014-04-29 Andrew Hayzen * Merge of trunk (692727d2) * Disable expand button when in swipe primed state (7e6d4acd) * Collapse all expands when swipe is invoked (690d2499) 2014-04-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c870181b) 2014-04-29 Andrew Hayzen * Rerun autopilot (5a3d9370) * Fix for expander button in incorrect place (0d86d4ea) * Code cleanup (82078236) * Fix for expander button having incorrect position (5cd6adb6) 2014-04-28 Victor Thompson * Remove po.pro file; Update CMakefiles for translations; Update translation instructions; Update translation strings. Fixes: https://bugs.launchpad.net/bugs/1290814. (2a6c8915) 2014-04-27 Victor Thompson * Update translations to be built with CMake. (fc7f0039) 2014-04-26 Andrew Hayzen * Fix for reference error (89ccc13f) * Split expander items into loadable row items; Fix for playlists adding null entries (51c5d906) * Revert current item height (6bf8de7a) * Fix for now playing issue (e14d9906) 2014-04-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (dbea3717) 2014-04-25 Andrew Hayzen * Merge of trunk (099e95ed) * Remove unused styles; Add extra padding (3bd88197) 2014-04-25 David Planella * It seems that on the desktop adding grilo-plugins-0.2-mediascanner as a dependency is not enough to pull in mediascanner, thus adding an explicit dependency. Fixes: https://bugs.launchpad.net/bugs/1312684. (304a60ea) * Added explicit mediascanner dependency for the desktop package (5c7429f6) 2014-04-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a1020804) 2014-04-24 Victor Thompson * Collapse any expanded item when index changes. (f918cb28) 2014-04-22 nskaggs * files are binary, d'oh (615405b4) * more tweaks with str replace ;-) (55fefa41) * change str replace func (11d7e66d) * allow for desktop to still use mock (4d2a3c63) * rebase to trunk (3d50dcd5) 2014-04-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (af100ee6) 2014-04-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1f2b8d5f) 2014-04-17 Victor Thompson * Use toolbar color for header; Fix label colors. Fixes: https://bugs.launchpad.net/bugs/1307030. (890652ec) * Resolve conflicts (f324d558) * Always jump to current track when a new song is played. Fixes: https://bugs.launchpad.net/bugs/1251630, https://bugs.launchpad.net/bugs/1300166. (77df41f9) 2014-04-16 Victor Thompson * Only jump when the toolbar is open. Prevents jumping while navigating (29e46a93) 2014-04-17 Victor Thompson * Make cover art a bit smaller on the Music tab. Fixes: https://bugs.launchpad.net/bugs/1308048. (04ae6a54) 2014-04-16 Olli Ries * Added "exec" to the script launcher to fix launching clock app in the Unity 8 Desktop Preview. Fixes: https://bugs.launchpad.net/bugs/1300911. (10969e33) * making it work in the Unity8/preview session, bug #1300911 (76eea9e8) 2014-04-16 Victor Thompson * Align Album tab cover art Labels to the left. Fixes: https://bugs.launchpad.net/bugs/1308042. (532f3517) * Move fix to on index change. (cd9a48c3) 2014-04-15 Victor Thompson * Fix bottom spacing (c24b6963) * Test smaller size (27b3ce2b) * Make cover art a bit smaller on the Music tab (1c8f178e) 2014-04-16 Andrew Hayzen * Fix for console errors (f5036ebe) * Add expanderButtonTopMargin so expander icon can be in correct place for now playing page; Set the expandableButton height at load as a value, not reference, so it doesn't have to be modifed when the listitem is expanded to show the expander (404f90c9) * Revert last two commits (f0cfee26) * Ensure labels are certain heights on MusicTracks.qml (052d834a) 2014-04-15 Andrew Hayzen * Align labels in rows at the vertical centre of the row (773d93db) * Fix for current track in now playing when switching wideAspect mode (8b087d9a) * Improve mouseArea area; Handle case where listItem height is changed with the expander open (769126b0) * Fix for padding on expanders (a69af799) 2014-04-15 Victor Thompson * Align Album tab cover art Labels to the left. (0698fde2) 2014-04-14 Victor Thompson * Update page used in call (909dfbb7) * Fix accidental line break (4d1489ca) * Update Search sheet Label colors (d940756c) * Always jump to current track when a new song is played (d3b960f5) * Merge of trunk (75d4d2b1) * Get Music tab to work on startup (77f6ad59) * Get Albums tab to work (54d5e941) * Fix suru code (dfa1386e) 2014-04-14 Andrew Hayzen * Add ability to play all tracks for an artist (6412c888) * Fix for autopilot (1a5019a8) * Fix for autopilot (8a9351c4) 2014-04-13 Andrew Hayzen * Fix for console errors; Fix for autopilot (f956f317) * Fix for autopilot; Fix for icons (49cfec18) 2014-04-13 Victor Thompson * Update text colors (ea5f1ac2) * Update text colors (af85c9e6) 2014-04-13 Andrew Hayzen * Tweaks to UI (668e373d) * Rename Expandable.qml to Expander.qml to remove conflict with SDK (52623264) * Load sheets after models (fbee3f56) 2014-04-13 Victor Thompson * Update remaining text colors in Labels (9db211b5) 2014-04-13 Andrew Hayzen * Merge trunk (3380420a) * Various fixes (8ee3e254) * Minor fixes (7c0d364f) * Fix for rotation not working correctly; Added support for playlist expander (5b871f61) 2014-04-13 Victor Thompson * Get blurred background to repaint when icon fails to load. Fixes: https://bugs.launchpad.net/bugs/1306845. (62de0820) * Reset player cover art when queue is empty. Fixes: https://bugs.launchpad.net/bugs/1307007. (72638934) 2014-04-13 Andrew Hayzen * Add Central common/Expandable.qml; Various tweaks (e4313dc5) 2014-04-13 Victor Thompson * Move property reset to Player. (85afb174) 2014-04-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9d720afe) 2014-04-13 Jason Gerlowski * Add Autopilot tests for repeat functionality; Add utility functions for shuffle and repeat. Fixes: https://bugs.launchpad.net/bugs/1289497. (c69d63f0) 2014-04-12 Victor Thompson * Update text colors (0ca24952) * Use toolbar color for header (0be80d1e) * Reset player cover art when queue is empty (2ba695b5) 2014-04-12 Jason Gerlowski * Remove unused variable and import (8c41aa8a) 2014-04-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3cba19fc) 2014-04-11 Victor Thompson * Update solution (844d8c1b) * Get blurred background to repaint when icon fails to load (454638e5) * Capitalize title in manifest file. Fixes: https://bugs.launchpad.net/bugs/1306821. (4a15729b) 2014-04-11 Jason Gerlowski * Reformat code to comply to pep8 line length (99924bac) 2014-04-11 Victor Thompson * Capitalize title in manifest file. (6d7bcbde) * Fix default cover art in Albums tab when cover fails to load. (80e79288) * Fix default cover art in Albums tab when cover fails to load (d70dc3d8) * Use music icon as default cover art. Fixes: https://bugs.launchpad.net/bugs/1285668. (ed7fd682) * Fix blurred background (a39f53ad) * Merge of trunk, and fix conflicts (21535a0e) * Load default cover art when image fails to load. Fixes: https://bugs.launchpad.net/bugs/1306672. (ed35d64c) * Load default cover art when image fails to load (56e2d8d3) * Merge trunk (67a7341a) 2014-04-11 Andrew Hayzen * Moved now playing page to be stacked on top of tabs  * Don't hide back button as too confusing with header appearing/disappearing  * Show old back button until lp:1256424 lands and show below header. Fixes: https://bugs.launchpad.net/bugs/1239106, https://bugs.launchpad.net/bugs/1291495. (0504117f) 2014-04-11 Jim Hodapp * Make sure the duration updates when it changes from underneath the player; Make sure that we never see NaN:NaN for position or duation. (3ac60476) 2014-04-10 Jason Gerlowski * Add turn_shuffle_on() utility function (fcc2f036) 2014-04-10 Jim Hodapp * Truly fix the NaN issue (3b6c552f) * Make sure the duration updates when it changes from underneath the player (1d9f4c0c) * Make sure that we never see NaN:NaN for position or duation (ebe0e4b4) 2014-04-10 Andrew Hayzen * Merge of trunk (c5df687d) * Don't hide back button as too confusing with header appearing/disappearing (5e26b093) * Readd old back button until lp:1256424 lands and show below header; Disable SDK toolbar (bb1942f8) 2014-04-10 Victor Thompson * Dilute default cover art image. (89506944) 2014-04-10 Andrew Hayzen * Add album:///artist/album and music:///path/to/file url dispatcher support; Simplification of file:// handling. Fixes: https://bugs.launchpad.net/bugs/1300803. (4658a43a) 2014-04-09 Andrew Hayzen * Remove tracing (752a5577) * Revert to using linear search for processFile() (2aea7010) 2014-04-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a734459d) 2014-04-08 Jason Gerlowski * Add autopilot tests for 'repeat' functionality (b1446029) 2014-04-08 Andrew Hayzen * decode file before it goes in the database (7ea9ae25) * Fix for encoding (3fa08652) * Add music:// protocol; Modify URL handling (60e58512) 2014-04-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d3ce86f3) 2014-04-07 Andrew Hayzen * Add decodeURIComponent to split album:// parameters (dd27a506) 2014-04-06 Andrew Hayzen * Switch to use url rather than uri (1a63a7ef) * Switch file to uri in args (1c8b6014) 2014-04-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2e468bdf) 2014-04-05 Andrew Hayzen * Add extra protection to processAlbum (bc592c56) * Fix for meta-database.js (e6a3f62e) * Fixes for meta-database.js and processFile (56e27687) * Add tracing (979b19df) * Fix for processFile (5193e999) * Fix for processFile (8e978768) * Fix for processFile (35ecf977) * Fix for loading from args (b268e6ac) * Various fixes (df1a106a) * Add support of album:/// to args; Reuse urihandler code for args and cleanup (7179b00d) * Fix for desktop file (9efb9c24) * Fix for processAlbum (933e25aa) * Fix for reference error (346be9cc) * Fix for invalid JSON (4531bfe3) * Fix for syntax error (b1f81edc) * Add album:/// url dispatcher support (825e92bc) 2014-04-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (75fd7ebb) 2014-04-03 Victor Thompson * Initial work to move to Mediascanner2.0 (30cf6c48) 2014-04-03 Andrew Hayzen * Merge of trunk (9a4714e7) 2014-04-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e5331ba2) 2014-04-03 Victor Thompson * Fix play pause test in library. Fixes: https://bugs.launchpad.net/bugs/1300450. (93406c7a) 2014-04-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4f4c8217) 2014-04-01 Victor Thompson * Merge of trunk (3775f6ad) * Update test to not check for Albums tab (f009391d) * Fix play pause test in library. (5b113cd6) 2014-03-31 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2b57f18f) 2014-03-29 Andrew Hayzen * Merge of trunk (6f2f6af9) 2014-03-29 Victor Thompson * Add play and queue buttons for albums in artist's albums shee. Add play and queue buttons for album in album tracks sheet * Remove the expandable item for an album . (17a81cab) 2014-03-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (adc6b1b9) 2014-03-28 Victor Thompson * Fix album sheet (bc99ac21) * Use music icon as default cover art (36d602d6) * Fix trackClicked (92c36f6c) * Simplify logic for playing album from Artists tab (b233ff0c) * Fixing some heights (ed18978d) * Add play and queue buttons for albums. (3019b9bb) * Fix various console errors; Allow Playlist count to be updated. Fixes: https://bugs.launchpad.net/bugs/1261072. (190b0f3b) * Merge from trunk and fix conflict (345d7a7e) 2014-03-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (83676427) 2014-03-28 Andrew Hayzen * Add ability to play random song when queue is empty; Add extra play button to disabled toolbar. Fixes: https://bugs.launchpad.net/bugs/1297166. (8ce1311c) * Modify label (292aeff1) * Modify disabled toolbar label (732e84ef) * Merge of trunk (cf6e24e5) * Refactor trackQueue and chosen to be more flexible. (55c6c09b) * Remove chosenIndex (9581b1d2) * Add ability to play random song when queue is empty; Add extra play button to disabled toolbar (371e657a) * Merge of trunk (f761ad18) 2014-03-28 Victor Thompson * Hide recent list when there are no items; Add albums to the start page to fill space and make it easier to play an album. Fixes: https://bugs.launchpad.net/bugs/1297169. (f0be442b) 2014-03-27 Victor Thompson * remove column, add margins (51f09285) 2014-03-27 Andrew Hayzen * Merge of trunk (276275d7) * Fix for bug 1298667, allows toolbar to be shown while adding to a playlst. Fixes: https://bugs.launchpad.net/bugs/1298667. (f6e56ee6) * Fix for new connection (0f06c10e) * Fix for bug 1298667, allows toolbar to be shown while adding to a playlst (594c8012) * Move queue changed to a more logical position (6c86a505) * Refactor trackQueue and chosen to be more flexible (8dc6a433) 2014-03-27 Victor Thompson * Allow entire album to be added to the queue. Fixes: https://bugs.launchpad.net/bugs/1297160. (f9272cfe) * Add change to queueChanged flag (d8931015) * Generic solution for queue initializing (805df974) * Fix adding first tracks to the queue (0e02323c) * Add spacing to Column (5c521b55) * Update for Queue only (b059aa0f) * Merge trunk (e15475e8) * Swap labels on Album list to match Recent list (35284671) * Hide recent list when there are no items and add albums to the start page. (7f4e100f) * Remove QtPowerd. (d1174da9) 2014-03-26 Victor Thompson * Fix various console errors and playlist count (299a4d6f) 2014-03-25 Victor Thompson * Decode URI when opening a song when app is already open. Fixes: https://bugs.launchpad.net/bugs/1292921. (b5890c6c) 2014-03-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4afc9c83) 2014-03-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6c3cc81e) 2014-03-23 Andrew Hayzen * Migrate musicToolbar to use Panel component. Fixes: https://bugs.launchpad.net/bugs/1291495. (5fd8ad36) * Start autohide timer when the toolbar is exposed (67688db9) 2014-03-22 Victor Thompson * Decode URI when opening a song when app is already open. (016ad6e9) 2014-03-22 Andrew Hayzen * Fix for back button not being hidden/shown correctly (078de312) 2014-03-22 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (cac9e5fc) 2014-03-21 Andrew Hayzen * Add temporary workaround for Panel (559045f3) 2014-03-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (dfc67078) 2014-03-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (34231419) 2014-03-20 Victor Thompson * Allow search sheet to be used; Remove focus from TextField when the ListView is scrolled or item is expanded. Fixes: https://bugs.launchpad.net/bugs/1291712. (4127af73) * Decode file URIs to match encoded characters. Fixes: https://bugs.launchpad.net/bugs/1292921. (7d2d3bf9) * Remove currentMetaLength property. Fixes: https://bugs.launchpad.net/bugs/1292333. (51430bd8) 2014-03-19 nskaggs * flake8 fixes (0c6e70d3) * remove extra db backup lines (caee8574) 2014-03-19 Andrew Hayzen * Remove unneeded setting of panel state (c6d6d532) * Migrate musicToolbar to use Panel component (9a7edb69) 2014-03-18 nskaggs * remove special click logic (f9855d3d) 2014-03-18 Victor Thompson * Fix some timing issues in 4 failing tests. Fixes: https://bugs.launchpad.net/bugs/1293488. (920bfddc) 2014-03-17 Victor Thompson * Fix some timing issues in 4 failing tests. (b1c36ca2) 2014-03-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a23af955) 2014-03-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (89ca1125) 2014-03-15 Victor Thompson * Remove currentMetaLength property (09fef06c) * Decode file URIs to match encoded characters (e36a62f4) * Redo fix changes (4c412ece) * Also remove focus from textfield when list is scrolled (c598f79c) * Allow search sheet to be used and fix autofocus issue (b6cadab0) 2014-03-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (90382d6a) 2014-03-14 Sergio Schvezov * Bumping the version to avoid the store error that was introduced. (c4f44400) * Bumping the version to avoid the store error that was introduced. (263ff15a) * Update the framework for ubuntu-sdk-14.04-dev1 and apparmor 1.1. (ca7a7b23) * Update the framework for ubuntu-sdk-14.04-dev1 and apparmor 1.1 (de6a926a) 2014-03-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0df07869) 2014-03-14 Victor Thompson * Ensure cover art is set to a blank string when it is null. Fixes: https://bugs.launchpad.net/bugs/1291398. (1dc5ef5e) 2014-03-13 Victor Thompson * Remove QtPowerd (50761c17) 2014-03-12 Victor Thompson * Ensure cover art is set to a blank string when it is null (c7e63009) 2014-03-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (36462828) 2014-03-11 Victor Thompson * Fix po.pro file for desktop filename change; Update translation strings. Fixes: https://bugs.launchpad.net/bugs/1290492. (4b727ade) 2014-03-10 Victor Thompson * Update header info in pot file (84219af1) * Fix po.pro file for desktop filename and update translations. (ac9dfdcc) * Use count value as a string to set initial count. Fixes: https://bugs.launchpad.net/bugs/1261072. (a79ec1c1) 2014-03-10 Alan Pope * fix lp:1288885. Fixes: https://bugs.launchpad.net/bugs/1288885. (5a17b024) * Once more unto the breach (703181cd) * Put right what once went wrong (11b70ef7) * resolve conflict (227c3f2b) 2014-03-10 Andrew Hayzen * Bump to 1.2ubuntu2. (a7f3fd37) * Bump to 1.2ubuntu2 (b4cea2d8) 2014-03-10 Alan Pope * fix bug 1288885 (afe67950) 2014-03-08 Andrew Hayzen * Add basic keyboard shortcuts; Add sheet support to toolbar and goBack. (91fa2fb2) * Added Ctrl+Q to quit the app; Fix for Esc closing sheet and now playing page (eb0d96e1) * Added volume alias; Stopped Ctrl+F and search button from showing sheet multiple times; Linked search sheet to toolbar correctly; Forced focus of keyboard to search field (2e7c7c4e) 2014-03-08 Victor Thompson * Use count value as a string to set initial count (48438843) * Fix PPA issue due to changelog. Fixes: https://bugs.launchpad.net/bugs/1284637. (4a29f30f) 2014-03-08 Dimitri John Ledkov * Use python3 compatible mock import. (d922595b) 2014-03-07 Victor Thompson * Fix dependencies (f3f3b100) 2014-03-07 Dimitri John Ledkov * Use python3 compatible mock import (a5e42342) 2014-03-07 Victor Thompson * Attempt to fix PPA issue in control file (46b9427b) * Attempt to fix PPA issue (add90ca0) 2014-03-07 Andrew Hayzen * Make it easier to change shuffle/repeat; Move MediaPlayer into its own file; Simplify bindings to MediaPlayer by using Connections. Fixes: https://bugs.launchpad.net/bugs/1269578. (3ae8adca) * Merge of trunk (6899ed39) * Fix for autopilot (f33ec153) * Merge of trunk (8832fe12) * Fix for autopilot (922f316e) * Fixed missed cases (693725d8) * Merge of trunk (bcbf07de) * Remove use of key-value array in player (5bfe8edb) * Fix for missed case of nextSong, stopSong conversion (c5f1eade) 2014-03-07 Victor Thompson * Actually update version number. (118dbd35) * Update manifest for v1.2 (6e52a460) 2014-03-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9db80bdc) 2014-03-06 Andrew Hayzen * Merge of trunk (bdf015b9) 2014-03-06 Victor Thompson * Rebuild Library from scratch each run (was doing so anyway); As a result, do not remove some items that were not found. Fixes: https://bugs.launchpad.net/bugs/1287720. (9f57a548) * Add an autopilot test to test playing a song from the Artists tab. Fixes: https://bugs.launchpad.net/bugs/1268455. (9ad54009) * Remove duplicate Quit action; Move the Back action so it is visible. Fixes: https://bugs.launchpad.net/bugs/1285838. (87175d6c) 2014-03-06 Andrew Hayzen * Fix for currentIndex not referenced correctly (ff5a092b) * Merge of trunk (b2b3deeb) 2014-03-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c0dbbec1) 2014-03-05 Victor Thompson * Rebuild Library since all items were being re-written anyway. (44ac3cf5) 2014-03-06 Andrew Hayzen * Fix to add nowPlaying page to musicToolbar tracking, so that goBack then functions (63ffbd4f) 2014-03-05 Andrew Hayzen * Moved now playing page to be stacked ontop of tabs (2f6960fd) 2014-03-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (c4f38e27) 2014-03-04 Andrew Hayzen * Modify cmakelist to scan for *.qml etc. (5f7eeeeb) 2014-03-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (cd54cd23) 2014-02-28 Victor Thompson * Actually update version number (bb9752aa) 2014-02-27 Victor Thompson * Remove settings from the list because it is not used. (9a94d6c0) * Remove duplicate Quit action and move the Back action so it is visible (401476a3) 2014-02-26 Andrew Hayzen * Add image to data dir (a14ca14e) * Modify cmakelist to scan for *.qml etc (532be5a0) * Add Player.qml to cmake (aa6f9478) 2014-02-25 Andrew Hayzen * Embed MediaPlayer inside Item and use alias to access properties (61e2db7c) * Merge of trunk (f8667a1c) * Merge of trunk (9e067843) 2014-02-24 Andrew Hayzen * Change search keyboard shortcut to Ctrl+F (7fa5f826) 2014-02-24 Alan Pope * fix 1284025. Fixes: https://bugs.launchpad.net/bugs/1284025. (d0ce703c) * fix 1284025 (5c860417) 2014-02-24 Andrew Hayzen * Fix for Songs tab name. (c0178512) * Fix for Songs tab name (8bb451e0) 2014-02-24 Michael Spencer * Improved the no music message. (825f0d5a) 2014-02-24 Victor Thompson * Remove code that is hiding content. Fixes: https://bugs.launchpad.net/bugs/1276170. (4efca9a7) 2014-02-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7de46974) 2014-02-22 Andrew Hayzen * Add keyboard shortcut to show search popup (93e19cd7) 2014-02-22 Victor Thompson * Remove code that is hiding content (7fe532b5) 2014-02-22 Andrew Hayzen * Merge of trunk (39dc98fa) * Fixes for currentIndex changes (dddc16a7) * Merge of trunk (987f11ec) 2014-02-22 Victor Thompson * Manage the cached states as a stack. Fixes: https://bugs.launchpad.net/bugs/1283502. (94dbbe6a) 2014-02-22 Andrew Hayzen * Fix issue where if the same song is in queue twice at index 1, 3 and trackClicked(index=3), index 1 is shown as selected. (10b47d30) 2014-02-22 Victor Thompson * Change variable name (7f25a052) * Manage the cached states as a stack (b7462343) 2014-02-22 Michael Spencer * Only display the Music tab when there is no music (bb69bfbe) 2014-02-22 Andrew Hayzen * Add search button in wideAspect mode. (58400e0d) 2014-02-22 Michael Spencer * Improved the no music message (4e50a966) 2014-02-21 Andrew Hayzen * Add search button in wideAspect mode (acee1da0) * Refresh onPlayingTrackChange if same track is selected with different index (1ca8dfe1) * Patch for selecting the same track with a different index causes the track to be paused (8a3673da) * Fix reference error (976cd84a) * Fix for currentIndex within now playing component (8225cef8) * Merge of trunk (bcbeea78) * Add MusicSearch.qml to cmake. (3f901b72) * Fix issue where if the same song is in queue twice at index 1, 3 and trackClicked(index=3), index 1 is shown as selected (2162dba2) * Add MusicSearch.qml to cmake (fbb2facf) 2014-02-21 Sergio Schvezov * This is an arch specific package. (37114950) * This is really an arch specific package (dda6c7fb) 2014-02-20 David Planella * Fixes bug 1282500 whereby when building click packages the icon file is missing. Fixes: https://bugs.launchpad.net/bugs/1282500. (db38dbdd) 2014-02-20 DanielHolm * Added license file. (22364556) * Update version to 1.2. (3cb69d68) * Come on now. (b4f0ee5e) * Feb not Deb. (90a7d701) * Version upgrade. (e5d3389f) 2014-02-20 David Planella * Fixed path of icon file (01bee30c) * Fixes icon file installation in click package (38ddf2c7) 2014-02-20 DanielHolm * Search functionality. Fixes: https://bugs.launchpad.net/bugs/1269037. (e005ce17) * Added license file. (cd9b11eb) * Removed dev search button for the 100th time; and restored the manifest for the 1000th. (cbb00ad8) * Added expander to search results; shortned down the search time. added search icon to file and field; moved add to playlist button to bottom in sheet; when no search word, no results; only allow input without word help. (a6477f71) 2014-02-18 Alan Pope * New icon. Fixes: https://bugs.launchpad.net/bugs/1281781. (1c7abd3d) * New icon (4aee41de) 2014-02-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (30392b75) 2014-02-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (40e3ce48) 2014-02-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (66c31cd1) 2014-02-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6434127b) 2014-02-13 nskaggs * Add cmake build. (87b6b091) 2014-02-12 nskaggs * add more qml install (657190b7) * add js needed files (05709413) * specify needed qml, remove *.qml (747d71aa) * try open *.qml install (2ef828e2) * add LibraryListModel.qml MusicaddtoPlaylist.qml MusicNowPlaying.qml MusicToolbar.qml (9b0cf35b) * add Style to install (72c17fb5) * merge trunk, tweak cmake to include json (d4428909) * fix debian control, add directories to cmake build (d7e0d5cb) * fix qml name cmake (56af8795) * cmake tweaks (c4acb624) 2014-02-11 DanielHolm * Added the HUD action to enable search action; added highlight on start for search field. (55f2f231) 2014-02-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f37459be) 2014-02-10 DanielHolm * HUD action Search now actually opens the search sheet. (94acaab0) * Commented out the dev search button. (e53d3aec) * If no search term is entered, don't search at all. (2ee1044f) 2014-02-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (47727bcc) 2014-02-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (723d5ac0) 2014-02-09 Andrew Hayzen * Merge of trunk (bbd0cec4) 2014-02-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (35c82083) 2014-02-07 Carla Sella carla.sella@gmail.com * Autopilot test test_create_playlist_from_songs_tab fixed. Fixes: https://bugs.launchpad.net/bugs/1272996. (a920875b) 2014-02-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bb717bbb) 2014-02-06 Carla Sella carla.sella@gmail.com * Attempt to fix bug 1272996. (81497c2d) 2014-02-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4839acf3) 2014-02-05 Carla Sella carla.sella@gmail.com * Un-skipped test_create_playlist_from_songs_tab. (738cc24a) 2014-02-04 Nicholas Skaggs * tweak install (11f065dc) * fix build (5ad8a7d1) 2014-02-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (14925793) 2014-02-02 DanielHolm * Restored manifest.json (995e4bcc) * Removed the seach button again. (615235bd) 2014-02-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f433c253) 2014-02-01 Victor Thompson * Revert change to test (5af8efca) * Allow adding the contents of a song sheet to be added to the queue. (96738fcb) 2014-01-31 nskaggs * remove apparmor (04fb850a) * move to cmake for build (f9371a34) 2014-01-30 DanielHolm * Make the indicator stop some time. (e7e31d76) * Fixed issue with sql query; results now look like tracks in Songs tab; click adds to queue and plays it. (b6d6d8cd) * Made the timer work. (7d024e91) * Use models for search and longer search query. (1046d425) * Added wildcards so search query. (0ae5fff2) * Added some comments. (1807374f) * Added some initial search code. (f09cc3f0) 2014-01-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (eae6c820) 2014-01-28 Andrew Hayzen * Merge of trunk (747187c3) * Fix for labels (108ff681) * Merge of trunk (7e083130) * Fixes for trackQueue empty (e7b6b419) * Merge of trunk (5f319663) * Empty commit (9a1450ef) 2014-01-27 Sergio Schvezov * Skipping flaky test. Fixes: https://bugs.launchpad.net/bugs/1272996. (7877be0f) * Skipping flaky test (057f819f) 2014-01-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (7b7d98f5) 2014-01-26 Boren Zhang * Change new playlist dialog's textfield background color to white. Fixes: https://bugs.launchpad.net/bugs/1272154. (335ea2b5) * fix code indentation (c0948852) * set dialogue textField background color to white (e86d1359) 2014-01-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bbb1016e) 2014-01-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (be12f69c) 2014-01-25 Samer Masterson * Prevent pausing from elements that do not directly control playback. Fixes: https://bugs.launchpad.net/bugs/1272155. (6aa0bc67) 2014-01-24 Samer Masterson * Fixed bug #1272155. (b9d29dbc) 2014-01-24 Andrew Hayzen * Force full toolbar to be always shown in wideAspect; Added labels of metadata to full toolbar if in wideAspect . (41ccb508) * Ensure wideAspect labels are blank when queue is empty (55f72e62) * Display toolbar buttons as inactive when queue is empty (cdfeeeeb) 2014-01-24 Boren Zhang * Fix song sheet to stay at the top of the list; Fix the add to playlist sheet so items do not overlap the header. Fixes: https://bugs.launchpad.net/bugs/1272113, https://bugs.launchpad.net/bugs/1272151. (0a53ce5b) 2014-01-24 Andrew Hayzen * Fix for autopilot (180125a4) * Change default width/height for desktop mode (8a765130) 2014-01-24 Victor Thompson * Make sheets the same size. (f7e999ce) 2014-01-24 Boren Zhang * fix Bug #1272113 (8e4616ca) * fix Bug #1272151 (7d86e2d2) 2014-01-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (17d72189) 2014-01-21 Andrew Hayzen * Fix for pages going below toolbar (b1d501ac) 2014-01-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (12c3eaa7) 2014-01-21 Andrew Hayzen * Removal of View Queue button, instead use clicking on the metatags; Various tweaks (26768650) * Added labels of metadata to full toolbar if in wideAspect; Added temporary view queue button to full toolbar if in wideAspect; Fixes for wideAspect cases to show toolbar (925170df) 2014-01-20 Andrew Hayzen * Force full toolbar to be always shown in wideAspect (c9d2be1a) 2014-01-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e3a18db3) 2014-01-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (79b52cee) 2014-01-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (25c1c5ea) 2014-01-17 Victor Thompson * Update additional calls (88ee49e4) * Fix pep8 (1772f93c) * Fix typo causing expander not to collapse. Fixes: https://bugs.launchpad.net/bugs/1270258. (bec1d9d0) * Fix typo causing expander not to collapse. (dcd1709b) 2014-01-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f6517365) 2014-01-17 Victor Thompson * Use CoverRow in all cases where multiple cover arts can be found. (17936d23) 2014-01-16 Victor Thompson * Merge trunk (6be23ebd) * Wait for items (2145dea4) 2014-01-16 Andrew Hayzen * Show autopilot python files in QtCreator project view for easy editing. (930b23e9) * Show autopilot python files in QtCreator for easy editing (b4af3d32) 2014-01-16 Victor Thompson * Use cover row for AlbumsSheet. (b3c457df) * Make sheets the same size (2760e464) * Actually fix pep8 error (0c909676) * Use CoverRow in all cases where multiple cover arts can be found (98b4ee1c) * Fix pep8 (3d1b960a) 2014-01-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ff9511ce) 2014-01-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (65252d3a) 2014-01-15 Victor Thompson * Hide CoverRow's ShaderEffectSource. (d4702751) 2014-01-14 Victor Thompson * Hide ShaderEffectSource (2ebbae9a) 2014-01-15 Andrew Hayzen * Only display unique covers in playlists. (1fe5b396) * Rename getRandomCovers to getPlaylistCovers (6172b84e) * Refactor of CoverRow.qml (b25c6c58) 2014-01-14 Andrew Hayzen * Only display unique covers in playlists (240bb89f) * Only show blank cover if no covers exist (7957c7d6) * Ensure all unique covers are shown before randomly selecting (4fd6eebf) 2014-01-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3566f6a0) 2014-01-13 Victor Thompson * Add an AP test to test playing a song from the Artists tab. (121bdfb3) 2014-01-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (beaf5cfd) 2014-01-12 Andrew Hayzen * Merge of trunk (b36fac57) * Merge of trunk (8be57f95) 2014-01-12 Victor Thompson * Use sheet component for recent albums, artist albums, tracks in an artist's album, playlists, and genres. Fixes: https://bugs.launchpad.net/bugs/1201094, https://bugs.launchpad.net/bugs/1238801, https://bugs.launchpad.net/bugs/1238834, https://bugs.launchpad.net/bugs/1240032, https://bugs.launchpad.net/bugs/1267315, https://bugs.launchpad.net/bugs/1268061. (36f99d23) * Close sheet after album sheet is opened. (67b1e79c) * Fix issue with playlist sheet not populating. (8c80a1e7) * Show album art for playlists and genre sheets. (6a3d6738) 2014-01-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (52450758) 2014-01-11 Victor Thompson * Display blank cover art when playlist is empty (e509e8d3) 2014-01-11 Andrew Hayzen * Add support for seeking via Alt+Left/Right (3bb321ba) * Add sheet support to toolbar and goBack (7f45fa76) 2014-01-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (a1e2893a) 2014-01-10 Victor Thompson * Revert last change (93825d8c) * Small update to try to get cover art if it exists for any song in a genre (7d3a7936) * Ensure playlist sheet is defined with isAlbum = false (1798f716) * Order Artist album covers properly. (342423c1) * merge with trunk (0ee7729e) 2014-01-11 Victor Thompson * Use CoverRow for Artists tab and fix visibility for 0 elements. (bb3a03b0) 2014-01-11 Andrew Hayzen * Ensure toolbar is shown when jumping to current track (087819d0) 2014-01-10 Andrew Hayzen * Fix for autopilot (a981ca2a) * Fix autopilot (0cd06187) * Add basic keyboard shortcuts (0412f952) * Fix for previousSong() (371e1cd9) * Make it easier to change shuffle/repeat; Move MediaPlayer into its own file; Simplify bindings to MediaPlayer by using Connections (ca83b7be) 2014-01-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f358532b) 2014-01-10 Andrew Hayzen * Allow toolbar to be shown when Alt key is pressed; Auto-hide toolbar after a period of time (5s); Added toolbar hint at startup. (1d6d44aa) 2014-01-09 Victor Thompson * Update anchors (d54f62ad) 2014-01-10 Victor Thompson * Update translations. (d535fa1a) 2014-01-09 Andrew Hayzen * Code simplification (f7807632) * Simplifed startAutohideTimer(); Sorted out code formating (66e3f99b) * Always attempt to autohide (on alt and drag); Don't autohide on now playing page (a1c0eaaa) 2014-01-08 Victor Thompson * Use CoverRow for Artists tab and fix visibility for 0 elements (af890cf2) 2014-01-09 Nekhelesh Ramananthan * Added a component coverRow and converted MusicPlaylist.qml and MusicAddtoPlaylist.qml to use it. (58ef947d) * Corrected cover row component to match design spec (6f52d0ab) 2014-01-08 Andrew Hayzen * Fix wrong order of method calls (9638ce5a) * More fixes to auto-hide behaviour (27d01095) * Fixes for toolbar autohide (217ce499) * Added toolbar hint at startup (d1c32fe2) * Code comment tweaks (e9f3a3ee) * Allow toolbar to be shown when Alt key is pressed; Auto-hide toolbar after a period of time (5s) (ac62f71f) 2014-01-08 Nekhelesh Ramananthan * Added comments to the coverRow component (bcc71116) * Converted MusicAddtoPlaylist.qml to use the new cover row component (b2637d84) * Revert accidental change of manifest.json (8686445a) * Added new cover row component and converted musicPlaylists.qml to use it (e1db098d) 2014-01-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (468c9563) 2014-01-07 Victor Thompson * Update Translations (81f7851b) 2014-01-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (37f253f8) 2014-01-06 Victor Thompson * Start app with an empty queue so the empty queue state of the toolbar is used. (4563f375) * Comment out conditional and remove debug statement. (ddabf24f) 2014-01-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (5759e9d9) 2014-01-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (6ca8496c) 2014-01-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bbcb651d) 2013-12-31 Victor Thompson * Allow retry (149a0959) * Fix AP tests (0c245f60) 2014-01-04 Victor Thompson * Update queue population (a579e7da) * Update queue population (0a1da385) * Fix label height (ad6e7a2e) * Fix AP tests (370e92b5) * Add goBack function back in (d082aad4) * Remove pagestack from playlists page (c893fb62) * Remove back button (5dce13c0) * Updates for playlists and genres (8cf54534) 2013-12-31 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (136d1430) 2013-12-30 Victor Thompson * Collate items from database so lowercase is sorted properly. Fixes: https://bugs.launchpad.net/bugs/1263978. (ec6a85bc) 2013-12-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (25fd8eb7) 2013-12-29 Victor Thompson * Update translations (20f59c47) * Load the selected tab when the Grilo Model is finished loading. Fixes: https://bugs.launchpad.net/bugs/1264876. (4c070235) * Load the selected tab when the Grilo Model is finished loading (2b11e738) 2013-12-28 Victor Thompson * Remove commented out code (be237f23) * Use sheet component for recent albums, artist albums, and tracks in an artist's album (97e94bdd) 2013-12-25 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f3ecace4) 2013-12-24 Victor Thompson * Collate items from database so lowercase is sorted properly. (fcea58a8) 2013-12-23 Victor Thompson * Allow sufficient room for translations used in most expanded items. Fixes: https://bugs.launchpad.net/bugs/1262283. (6ca0c1fd) 2013-12-23 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f821576d) 2013-12-22 Victor Thompson * Add the infographic to translations. (84b1e910) 2013-12-22 Andrew Hayzen * Fix so that Unknown is shown for metadata when it doesn't exist rather than None or "". Fixes: https://bugs.launchpad.net/bugs/1261925. (e30dc4c7) 2013-12-20 Andrew Hayzen * Fixed issue of recent items with old unknown data being blank (c9fe97f0) 2013-12-20 Victor Thompson * Simplify translatable string in infographic (9636df00) 2013-12-19 Andrew Hayzen * Fix to show context of Unknown metadata (159162fb) * Fix a few missed cases (9469a0ba) * Fix so that unknown conversion is done before sorting (a7ff4a47) 2013-12-18 Victor Thompson * Allow sufficient room for translations used in most expanded items. (0a07acd4) 2013-12-18 Andrew Hayzen * Align loading text and icon at the horizontal centre of the display. Fixes: https://bugs.launchpad.net/bugs/1261926. (96de073f) * Align loading text and icon at the horizontal centre of the display (6d67d0e7) 2013-12-17 Andrew Hayzen * Fix for a few missed labels (47e976ae) * Fix so that Unknown is shown for metadata when it doesn't exist rather than None or "" (c4d9af1e) 2013-12-17 Victor Thompson * Fix the album sheet's year and song count. (94357dd8) * Force blurred background to repaint. Fixes: https://bugs.launchpad.net/bugs/1261078. (7c6cbc67) * Increment songs played metric when position changes instead of when next track is requested. Fixes: https://bugs.launchpad.net/bugs/1259962. (da318482) * Add the infographic to translations (34901a07) 2013-12-16 Victor Thompson * empty (bc83d22c) 2013-12-16 Carla Sella carla.sella@gmail.com * Autopilot test for music-app. Fixes: https://bugs.launchpad.net/bugs/1253453, https://bugs.launchpad.net/bugs/1253457, https://bugs.launchpad.net/bugs/1253697. (06da51a9) * Fixed pep8 error. (1c7f103d) * Fixed failure on input playlist name. (a939262c) 2013-12-15 Carla Sella carla.sella@gmail.com * Fixing running test on device. (7aa27be2) * Ran pep8 and pyflakes. (1cec8f1d) * Added test_swipe_to_delete_song. (199e2453) 2013-12-15 Victor Thompson * Remove old metric incrementer and reset songCounted when a new track is clicked. (14dc435f) 2013-12-15 Andrew Hayzen * Fix for when a model is empty the loading spinner remains visible * Loading spinner is now hidden when the first item is added to the model. Fixes: https://bugs.launchpad.net/bugs/1261029. (897ee0b5) 2013-12-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (926a561c) 2013-12-14 Victor Thompson * Force blurred background to repaint (1be60e60) 2013-12-14 Andrew Hayzen * Fix for when a model is empty the loading spinner remains visible * Loading spinner is now hidden when the first item is added to the model (0898928e) 2013-12-14 Carla Sella carla.sella@gmail.com * Fixed CI error. (975b92ea) * Fixed running tests in clean environment. (a5cad4f3) 2013-12-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (eb9a8028) 2013-12-13 Carla Sella carla.sella@gmail.com * Implemented running tests in clean environment. (a1e436d9) 2013-12-13 Victor Thompson * Put on single line (88550d41) * Fix year and song count in album sheet. (6d8d1063) 2013-12-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (eb4e0277) 2013-12-12 Carla Sella carla.sella@gmail.com * Fixed pyflake error. (181e528d) * Merged trunk. (ee176d98) * Fixed image detection error. (a9cf925a) 2013-12-12 nskaggs * Simplify shuffle test and make it consistent, fix next and previous as well -- don't force order. (89b1514b) * make queue size dynamic (read size) (e8016374) * fix mp3 test and add debug line (8c847d5f) * mp3 test fixed (29fcaef0) * tweaks for mp3 test, endswith check fails (880b20bc) * tweak comments (dc31f6b6) * pep8 and pyflakes :-) (17a926fa) * revamped next, previous tests and tweaked mp3 test (c3b0a09b) * fix pyflakes (f248834c) * fix pep8 (57afa4a3) * converted to Victor's idea for shuffle test (b20803eb) 2013-12-11 nskaggs * fix pep8 (98c61b06) * fix next and previous tests (96c06ee7) * add checks fo toggling buttons to ensure consistency (55f17b43) 2013-12-11 Carla Sella carla.sella@gmail.com * Fixed conflicts. (a7c19e62) 2013-12-11 nskaggs * tweak timing to prevent device failures (3ac20a91) 2013-12-11 Carla Sella carla.sella@gmail.com * Autopilot test for music app. Fixes: https://bugs.launchpad.net/bugs/1253449. (7b93abf0) 2013-12-11 Victor Thompson * Increment metric from within the onPositionChange function (d0816776) 2013-12-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0c490dba) 2013-12-10 nskaggs * fix pep8 and pyflakes (4a884b0e) * cleaned up function, added logger, required another song to be played before shuffling back (09535fc7) * tweak shuffle test to just check for original, and shuffle until we hit the original again (2d3dca37) 2013-12-09 Carla Sella carla.sella@gmail.com * fixed some indentation errors. (8a9552d3) * Added test_create_playlist_from_songs_tab (354ebb3b) 2013-12-08 Carla Sella carla.sella@gmail.com * Addes test_add_song_to_queue_from_songs_tab. (49bbab42) * Added test_add_songs_to_queue_from_songs_tab_and_play (b1b14bb7) 2013-12-08 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ff6fe178) 2013-12-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (70d740fe) 2013-12-06 Carla Sella carla.sella@gmail.com * Fixed mispelling. (d2989c6d) 2013-12-05 Andrew Hayzen * Pause loading of models when not needed. (857218d1) 2013-12-05 Carla Sella carla.sella@gmail.com * Fixed pep8 error. (6114e734) * Fixing bug #1253449. (ddc9119c) * Autopilot test for music-app. Fixes: https://bugs.launchpad.net/bugs/1253452. (865f9d8e) 2013-12-05 Andrew Hayzen * Improved fix for two models (e25c14cf) * Fix for when one of the models is empty on the start page the loading never completes (dc6d60b4) * Add protection for start tab models so only sets vars once (3b4e5e03) * Add support for start page to loader; Cleanup LibraryListModel.qml (4fa186f9) * Pause loading of models when not needed (2eb593cb) 2013-12-05 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (05405873) 2013-12-04 Victor Thompson * Merge trunk (3d0d1404) 2013-12-05 Andrew Hayzen * Performance tweak meaning that the database is only written to when data changes; Made loader for tabs more generic and linked songs and playlists tab; Playlists now uses LibraryListModel.filterPlaylists to populate; Fix so that songs tab is not loaded until required; Fix for songs tab grabbing trackQueue when focused; Various fixes and speed improvements; Fix for toolbar being shown/hidden at the wrong time in the now playing page. (0f1bf0b4) * Add logging back into worker (5c82ea4b) * Fix for worker-script (53666b5e) 2013-12-04 Andrew Hayzen * Fix for toolbar being shown/hidden at the wrong time in the now playing page (fa71ceb6) 2013-12-04 Carla Sella carla.sella@gmail.com * Added verity song's metadata matches the item added to the Now Playing view. (d3cbd376) 2013-12-04 Andrew Hayzen * Merge of trunk (f409bfda) 2013-12-03 Victor Thompson * Do not populate queue automatically with the full library. (c7c4b56f) 2013-12-03 Carla Sella carla.sella@gmail.com * Assert that the song added to the list is not playing (62a12364) 2013-12-02 Carla Sella carla.sella@gmail.com * Pep8 and pyflakes fixes. (778af8f8) * Added test test_add_song_to_queue_from_albums_sheet. (424bebe2) 2013-12-02 Victor Thompson * Fix album count on Artists tab.; Show the default cover art in the other covers in the stack on the Artists tab. Fixes: https://bugs.launchpad.net/bugs/1255811. (f52f685d) 2013-12-02 Andrew Hayzen * Merge of trunk (a370deb8) 2013-12-01 Victor Thompson * Change expanded item text for "adding to queue" to "Add to queue" * Wrap expanded item text to two lines. Fixes: https://bugs.launchpad.net/bugs/1255720. (1dfdb8ad) 2013-12-01 Andrew Hayzen * Fix for blurred background to work when the width is larger than the height. (cd8918ac) * Fix for blurred background to work when the width is larger than the height (7301e690) 2013-12-01 Victor Thompson * Fix expanded MouseArea sizes. (9c861ebe) 2013-11-27 Victor Thompson * Small fix so the default cover art is used in the other covers in the stack (1ec9dc58) * Fix album count on Artists tab. (d5d1f77b) * Change Now Playing to have wrapped text in expanded item as well (f8c9c94c) * Change text to add to queue in expanded item and wrap text to two lines (30527f0a) 2013-11-27 Carla Sella carla.sella@gmail.com * Autopilot test for music app. (e996833f) * Fixed asserts. (b4ce788c) * Deleted redundant asserts. (6bbb9ab6) * Ran pyflakes on tests. (82b01a69) 2013-11-26 Carla Sella carla.sella@gmail.com * Fixed pep8 error. (2860e572) * Fixed error on device for test_show_albums_sheet. (d92c52bd) * Fixed pep8 warnings. (5f77c4e0) * Added test_show_albums_sheet. (1fe3f26e) 2013-11-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (8456e5b3) 2013-11-24 Victor Thompson * Ensure that only one of the progress bars are shown at any given time. Fixes: https://bugs.launchpad.net/bugs/1254239. (7de68845) 2013-11-24 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d386969f) 2013-11-24 Victor Thompson * Sort Songs tab by song title. Fixes: https://bugs.launchpad.net/bugs/1252763. (8c3daf39) * Set current music toolbar's current page when Albums tab is made visible again. Fixes: https://bugs.launchpad.net/bugs/1254240. (34581455) 2013-11-23 Victor Thompson * Make change dependent on which toolbar is used, not whether the now playing screen is visible (e6daf96d) * Set current music toolbar's current page when Albums tab is made visible again (a7db90d2) * Small tweak (4787c626) * Ensure that only one of the progress bars are shown at any given time. (af8368ba) 2013-11-22 Victor Thompson * Fix shuffle and previous tests for when the play duration was over 5 seconds. Fixes: https://bugs.launchpad.net/bugs/1253480, https://bugs.launchpad.net/bugs/1253788. (0cdab219) * Update test for when toolbar collapses during shuffle test (a7e8f913) 2013-11-21 Victor Thompson * Fix shuffle and previous tests (9ce4acee) 2013-11-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (58211784) 2013-11-20 Andrew Hayzen * swipeDelete auto collapse on click or focus change. Fixes: https://bugs.launchpad.net/bugs/1252898. (4ec2c0db) * Code cleanups (73747f47) * SwipeDelete collapses on click or focus changes (44362747) 2013-11-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ac8d1ac7) 2013-11-20 Andrew Hayzen * Code comments and cleanups (94fc8529) * Fix for jump to beginning with shuffle enabled. Fixes: https://bugs.launchpad.net/bugs/1252871. (c79525c4) * Fix for jump to beginning with shuffle enabled (1d612029) * Removal of auto collapse swipeDelete (1ec15250) 2013-11-19 Victor Thompson * Sort Songs tab by song title (c15096d6) 2013-11-19 Andrew Hayzen * Implementation of undo support to swipeDelete; Fix for remove animation; Fix so only one swipeDelete can occur at one time; Fix for swipeDelete icon. Fixes: https://bugs.launchpad.net/bugs/1234915, https://bugs.launchpad.net/bugs/1240242. (860ed485) * Playlists now uses LibraryListModel.filterPlaylists to populat. Add playlists to new loader (183f4707) * Made loader for tabs more generic and linked songs tab; Merge of trunk (dce1b6aa) * Fix for swipeDelete icon; Fix so only one swipeDelete can occur at one time (355c0c69) 2013-11-19 Victor Thompson * Enhance shuffle test to show toolbar if it collapses. (36434685) * Allow Songs tab's header to be hidden/shown while navigating the list. Fixes: https://bugs.launchpad.net/bugs/1251475. (75a92723) 2013-11-18 Victor Thompson * No change (2db0421b) 2013-11-19 Victor Thompson * Only update the play count user metric under the following conditions: 1. The song has reached End of Media 2. The song has been playing for over 10 seconds and a different track has been selected 3. The song has been playing for over 10 seconds and the user has used a control to move on (next, previous, swipe to delete). Fixes: https://bugs.launchpad.net/bugs/1251642. (97f2d764) * Fix album art rounding on bottom corners with solid labels. (31a9c106) 2013-11-19 Andrew Hayzen * Implementation of undo support to swipeDelete; Fix for remove animation (4899cdf5) 2013-11-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (524a3ee3) 2013-11-16 Victor Thompson * no op (fb840168) * no op (6adb3762) * Load Artists and Albums tabs when selected instead of when visible; Show loading/busy indicator when other tabs are loading. (914e559a) * Fix syntax error (fe6c47d6) * Enhance shuffle test (9af7fb2a) * Make Albums tab scroll left to right. (83e6c9e4) 2013-11-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (dfc296dc) 2013-11-15 Victor Thompson * Remove extra debug (34a0ab05) * Increment the play count user metric in fewer cases. (efc21577) 2013-11-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ef3f8787) 2013-11-14 Victor Thompson * Fix album art rounding on bottom corners with solid labels (6a57fa69) * Show loading/busy indicator when other tabs are loading (0d261eb4) * Allow Songs tab's header to be hidden/shown while navigating the list (3a258948) * Make cover art bigger, so it is more apparent that scrolling is horizontal. (d3abec25) * Make Albums tab scroll left to right. (cf40eb2e) 2013-11-14 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (f874593d) 2013-11-13 nskaggs * Enable test for shuffle mode. (3d071885) * trialing increasing the failure count for starters (c4c5478b) 2013-11-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (8b57ec77) 2013-11-07 Victor Thompson * Remove unused package import (3c320c8f) * Merge trunk (11f9eda2) 2013-11-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9384c99b) 2013-11-05 chris.gagnon * autopilot test updated for autopilot version 1.4. (9d377ae9) 2013-11-05 Andrew Hayzen * Fix for songs tab grabbing trackQueue when focused (bdc0ed1d) 2013-11-04 chris.gagnon * use base.get_qmlscene_launch_command() to launch app (d04a11ba) 2013-11-04 Andrew Hayzen * Make use of binary search (a3d73ff8) * Support for an item being deleted in grilo; Various fixes and speed improvements (7270df1d) * Fix so that songs tab is not loaded until required; Performance tweak meaning that the database is only written to when data changes (3098dbd9) 2013-11-03 Victor Thompson * Attempt to fix shuffle autopilot test (e9b4bc1e) 2013-11-01 chris.gagnon * resync with trunk (2497d38a) 2013-10-31 Sergio Schvezov * Skipping shuffle test until ironed out. (c7037316) * Skipping shuffle test (e5c0733c) 2013-10-31 Victor Thompson * Remove timer used to load the models. Fixes: https://bugs.launchpad.net/bugs/1234990. (f182964c) 2013-10-30 Victor Thompson * Fix AP tests--should not need to explicitly show toolbar. (4b81fdd4) * Update version in manifest.json (e7cbea74) 2013-10-29 Victor Thompson * Still load songs tab, this reduces the speed improvements of this branch but a little--but the overall increas is still significant. (d1facf70) 2013-10-30 Daniel Holm * Added basic user metrics functionality. (e53218a0) 2013-10-29 Victor Thompson * Increment revision in anticipation of OTA upgrade (34c92b36) * Increment songs metrics when track is clicked and remove minutes of music for now (66dac6ec) * Fix AP tests (9686b16e) 2013-10-28 Victor Thompson * Add blank line (1132ab90) * oops (81fea030) * resolve AP test failures (adafffe3) 2013-10-28 Daniel Holm * Changed back manifest file. (8e2ed20e) * Changed back manifest file. (b73c883f) * Changed back manifest file. (8400368b) * Changed to songs played is handled incremently by API; added support for minutes as well. (df53c4fb) 2013-10-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (abca4d9f) 2013-10-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (dd2c54c1) 2013-10-26 Victor Thompson * Load Artist and Album models when tab is selected. (fe89125a) 2013-10-26 Daniel Holm * Restored manifest. (95adb69e) * Removed .execludes and music-app.json (44f0e4e7) 2013-10-26 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (1c521f20) 2013-10-25 Victor Thompson * Change one of the conditions. (523165e1) * Do not populate Songs tab until the tab is selected, fixed. (d624aae2) * Do not populate Songs tab until the tab is selected. (e977aeb8) * Remove timer used to load the models (39545b2b) 2013-10-25 chris.gagnon * update for autopilot 1.4 (5a8d5817) 2013-10-25 Daniel Holm * Forgot to add the function to when track is ended. (eca997c4) * Added basic usermetrics. (b17fe6a5) 2013-10-22 Victor Thompson * Add database schema to track recent items; Change models to query selected playlist or album; Update recent list when an album or playlist is selected from either its tab or the recent list. Fixes: https://bugs.launchpad.net/bugs/1238801, https://bugs.launchpad.net/bugs/1238834, https://bugs.launchpad.net/bugs/1240335. (3775d3c8) * When repeat is off, allow the next/previous buttons to navigate to loop around the queue. Fixes: https://bugs.launchpad.net/bugs/1241597. (7d7e8d89) 2013-10-22 Andrew Hayzen * Add seek to start on selecting previous after threshold (5s). (1b028509) * Fix for typo (758339e1) * Add seek to start on selecting previous after threshold (5s) (d47665ef) 2013-10-21 Victor Thompson * When repeat is off, allow the next/previous buttons to navigate to loop around the queue (dd2e9206) 2013-10-21 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (fb223423) 2013-10-20 Victor Thompson * Resolve warning upon initialization. (5db56f20) 2013-10-20 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9874f933) 2013-10-19 Victor Thompson * Fix button visibility (35f7052b) * Add a button to clear history. (a9ace4e5) 2013-10-19 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (405acb12) 2013-10-18 David Planella * Enable the translations infrastructure: expose translations in Launchpad and build/ship them in the Debian package. Fixes: https://bugs.launchpad.net/bugs/1199461. (68edab6b) * Updated translation template (60f3e162) * Merged from trunk (04ac7ff4) 2013-10-18 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (52bc0f8e) 2013-10-18 Victor Thompson * Add autopilot test for shuffle; Add mp3 content; Modify exiting test case to test mp3 (always last item). Fixes: https://bugs.launchpad.net/bugs/1188349, https://bugs.launchpad.net/bugs/1222024. (7a0405e6) 2013-10-17 Victor Thompson * Show recent list as empty instead of hiding it when it is empty (8e28c31a) * Intitial Recent list for playlists and albums (891684f6) * Fix shuffle test (6059ef06) * Initial db work for recent items. (578eb67d) 2013-10-17 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (53f8d74e) 2013-10-17 Andrew Hayzen * Fix for removing an item causing undo to error. (ceab0efb) * Fix for removing an item causing undo to error (40206f5b) 2013-10-17 Victor Thompson * Make transparent labels on cover art solid.; Cause labels to overlap to create square corners at the top of the label. Fixes: https://bugs.launchpad.net/bugs/1239647. (175786e2) 2013-10-16 Victor Thompson * Add some margins on the sides of the albums cover art (e1677f64) * Add some space at the top of Albums cover art (f7bf15b6) * Adjust font size and color on Albums tab (21e657e0) * Make transparent labels on cover art solid and overlap. (100e5fad) * Change proprietary codec package (7b8ffc6a) * Change proprietary codec package (fd6d4ac4) * Change proprietary codec package (4cd01aa3) * Change proprietary codec package (05546487) * Add blurred cover art background to Now Playing queue; Reduce opacity on black overlay from .95 to .75 so cover art background is more visible. Fixes: https://bugs.launchpad.net/bugs/1240556. (ae2f1ee7) * Add proprietary codec for mp3 playback and switch back to mp3 file (a6edd701) * For last item in queue, fix snap to track. Fixes: https://bugs.launchpad.net/bugs/1240610. (125c8e0e) * Change mp3 file to flac (f608ad9c) * Change mp3 file (ed96303c) * Change footer to Item (c2e78295) 2013-10-16 Andrew Hayzen * Fix so expander is left aligned to the album art; Fix alignment of labels on current track in now playing; Fix alignment of expander on now playing. Fixes: https://bugs.launchpad.net/bugs/1240546, https://bugs.launchpad.net/bugs/1240564. (ebe7fb74) 2013-10-16 Victor Thompson * For last item, fix snap to track (f06e7ed2) * Add blurred background to now playing (7f520ad1) 2013-10-16 Andrew Hayzen * Fix so expander is left aligned to the album art (ca000a88) * Fix alignment of labels on current track in now playing; Fix alignment of expander on now playing (510a3845) 2013-10-16 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (5f24f193) 2013-10-15 Victor Thompson * revert dependency test (bc50b145) * test dependency (b487aed5) 2013-10-16 Andrew Hayzen * Fix for album art for current track in now playing not fitting on the screen. (6b276c12) * Reduce width so it match width of normal tracks on a Nexus 4 (5426591c) * Fix for album art for current track in now playing not fitting on the screen (00af3bd5) * Fix so that the expand buttons are centred. (d62ea114) * Merge of trunk (1b572ea8) * Fix for now playing normal expanders (e0e86f27) * Fix so that the expand buttons are centred (f9d5a0cb) 2013-10-15 Andrew Hayzen * Fix for the expander on songs tab being too big and inconsistent with the other expanders. (9c1296c1) 2013-10-16 Andrew Hayzen * Fix for the expander on songs tab being too big and inconsistent with the other expanders (e4a0a604) 2013-10-15 Victor Thompson * Make expanded items in the now playing queue have full height backgrounds. (69093cd1) * Fix expander background, which had no top or bottom margins for normal items in the queue (5d09618b) 2013-10-15 Sergio Schvezov * Using package location to determine asset location. (021cbc3f) 2013-10-15 Victor Thompson * Increase item spacing in now playing queue; Increase cover art size of items in queue (not currently playing item). Fixes: https://bugs.launchpad.net/bugs/1240017. (6fe55d6a) * Merge trunk (7c4a9b87) 2013-10-15 Andrew Hayzen * Implement transparent background in the expander. Fixes: https://bugs.launchpad.net/bugs/1240068. (ea2ed648) * Use white as the colour for Icons so they can be seen on the expander; Modified images/queue.png to be white to match the icons (f7c1deac) * Fix so that labels are in centre (c824285f) 2013-10-15 Victor Thompson * Fix shuffle test (ad35649b) * Fix shuffle test (42f778b5) 2013-10-15 Andrew Hayzen * Implement transparent background in the expander (3005d8d1) 2013-10-15 Victor Thompson * Fix shuffle test breakage from merge (379808f3) * Fix mediascanner library again (d914260a) * Fix mediascanner library again (0fc70ad4) 2013-10-15 Andrew Hayzen * Only allow one expand to be visible at one time; Fix for expandable toggle not visible on playlists. Fixes: https://bugs.launchpad.net/bugs/1240012. (5e7a0c77) * Smaller font for progress time; Alignment progress time; Inner (dark) circle under the play/pause 1 GU smaller. (06de49d8) 2013-10-15 Victor Thompson * Fix mediascanner library (adcf1e12) * Add mp3 to files added (1fee3a4d) 2013-10-15 Andrew Hayzen * Smaller font for progress time; Alignment progress time; Inner (dark) circle under the play/pause 1 GU smaller (46d5e5f3) 2013-10-15 Victor Thompson * Merge trunk (b56262ca) * Fix range (ef8ee720) 2013-10-15 David Planella * Use SVG playback icons from the mobile theme in the toolbar. Swapped repeat and shuffle as per the visual spec. (b532c2ed) 2013-10-15 Victor Thompson * Fix content db location (80eb82ba) * Fix content directory location (b61bcecd) * Adjust item spacing in now playing queue and increase item size (20a440f1) 2013-10-15 Andrew Hayzen * Only allow one expand to be visible at one time; Fix for expandable toggle not visible on playlists (50341f8a) 2013-10-15 Sergio Schvezov * Using package location to determine asset location. Not the best way to do this, but better than multiple options depending on test type (a201adda) 2013-10-15 David Planella * Tweaked play control sizes (11701414) 2013-10-15 Victor Thompson * Remove translatable strings for LastFM. Fixes: https://bugs.launchpad.net/bugs/954702. (58546fc7) * Add item contraction indicator. Fixes: https://bugs.launchpad.net/bugs/1239850. (9d33e154) * Fix PEP8 (a7927be9) * Fix PEP8 (f308b510) 2013-10-15 David Planella * Merged from trunk (9f1d4c4c) * Swapped shuffle and repeat buttons as per the visual spec (f6fd51b8) 2013-10-15 Victor Thompson * Fix PEP8 (10bd0cff) 2013-10-15 David Planella * Added and started using play, pause, repeat, shuffle, back, forward SVG icons from the ubuntu-mobile-icons package (6bca8f41) 2013-10-15 Victor Thompson * Fix PEP8 (abbf003a) * Fix PEP8 (ae609645) * Fix PEP8 (96415f1d) * Fix PEP8 (2c30178c) * Fix PEP8 (1b4da0ea) * Add autopilot tests for shuffle and for mp3 playback (d16c0abe) 2013-10-15 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (3add5cc9) 2013-10-15 Victor Thompson * Add item contraction indicator. (85920d50) 2013-10-14 Victor Thompson * Remove translatable strings for LastFM (c46cf8c5) 2013-10-15 Victor Thompson * Place player controls as icons inside background.; Make Now Playing background 5% less transparent. Fixes: https://bugs.launchpad.net/bugs/1239699, https://bugs.launchpad.net/bugs/1239731. (42ac2633) 2013-10-14 Victor Thompson * Fixed back button (1f07f75e) * Make shuffle, previous, next, and repeat icons a bit smaller to match the spec (2a25ca15) * Remove UbuntuShape from surrounding the back button in the library mode controls (c10c7c51) * Darken controls in library mode (436723f2) * Make border for back button and progress bar stand out. (80fe0cc8) 2013-10-15 Andrew Hayzen * Fix for header background becoming stuck on top of the now playing page. Fixes: https://bugs.launchpad.net/bugs/1239106. (3781e9e6) 2013-10-14 Victor Thompson * Darken background and make back button match toolbar color (cf1840c0) 2013-10-15 Andrew Hayzen * Fix for when there is only one track (53ec624d) * Fix for topMargin and snaptrack therefore removing the overflows (db972f85) * Use header.y to move it out of view (735e6e51) 2013-10-15 David Planella * Adjusted font sizes in the play queue song metadata, as per visual design. Fixes: https://bugs.launchpad.net/bugs/1239840. (44c84a51) 2013-10-15 Andrew Hayzen * Fix to ensure that first track is visible at startup (ee7e2823) 2013-10-15 David Planella * Updated font colors in the Music view to match visual design spec. (3494883c) 2013-10-15 Andrew Hayzen * Use rectangle as listitem has a border (3b2b051a) * Fix track appearing in the centre of the screen when there is only one track in the queue (137a785f) 2013-10-14 Victor Thompson * Remove transparency, switch shuffle and repeat icons, and make play button a bit bigger. (f46b5579) * Fix failing tests (11fcc083) * Place player controls as icons inside background. (28892452) 2013-10-14 Andrew Hayzen * Fix for header background becoming stuck ontop of the now playing page (80a25334) 2013-10-14 Sergio Schvezov * Using powerd from the archives. (76b4411a) * Using powerd from archives (dc2b5e43) 2013-10-14 David Planella * Updated font colors in the Music view to match visual design spec (62bb7cc8) * Adjusted font sizes in the play queue song metadata, as per visual design (51a95d55) 2013-10-14 Andrew Hayzen * Fix so that album and artist are separate on MusicNowPlaying.qml * Fix so that meta data in the current item is indented by 2 units; Fix for snaptrack to snap data to the beginning, rather than just contain, to ensure metadata can be seen. Fixes: https://bugs.launchpad.net/bugs/1239785. (972df199) * Merge of trunk (75042ce8) * Select back from MusicNowPlaying.qml now hides the toolba. Scrolling on the MusicNowPlaying.qml now hides the toolbar * Selecting back from the toolbar now hides the toolbar. Fixes: https://bugs.launchpad.net/bugs/1239715. (a1292c30) * Fix for snaptrack to snap data to the beginning, rather than just contain, to ensure metadata can be seen (d3a42017) * Fix so that meta data in the current item is indented by 2 units (78cf97ac) * Fix so that album and artist are separate on MusicNowPlaying.qml (50ab51a7) * Merge of trunk (c599de73) * Fix so that normal height is 10 grid units. Fixes: https://bugs.launchpad.net/bugs/1239661. (a4d2acda) * Merge of trunk (3e4daa59) * Fix so that normal height is 10 grid units (60b81eb5) * Fix to use the cover art from design. Fixes: https://bugs.launchpad.net/bugs/1239095. (63d6e3a0) 2013-10-14 David Planella * Fixed duplicate messages typos (35005e54) * Some i18n improvements on plurals (9d6e0af9) * Updated translation template (db572921) 2013-10-14 Andrew Hayzen * Fix to use the cover art from design (10893d25) 2013-10-14 David Planella * Merge from trunk again (82fd3919) * Merge from trunk (6d0fd2bb) 2013-10-14 Andrew Hayzen * Move the meta data below the cover art for the current item. Fixes: https://bugs.launchpad.net/bugs/1239700. (35c834f2) * Implementation of expander in the Now Playing page. Fixes: https://bugs.launchpad.net/bugs/1239096. (e3a22262) 2013-10-14 nskaggs * Updating tests for click, not mangling the media scanner and only saving ~/Music. Leaving commented code on mediascanner as hints for improvement. Fixes: https://bugs.launchpad.net/bugs/1238696. (59418d79) 2013-10-14 Sergio Schvezov * merging fixes to toolbar (6619ded1) 2013-10-14 Victor Thompson * Fix tests to use pointing device instead of mouse to prevent failures on device. Fixes: https://bugs.launchpad.net/bugs/1238696, https://bugs.launchpad.net/bugs/1239600. (f99bc445) 2013-10-14 Andrew Hayzen * Fix for back behaviour (2770d40b) * Select back from MusicNowPlaying.qml now hides the toolba. Scrolling on the MusicNowPlaying.qml now hides the toolbar (896e4a41) 2013-10-14 Sergio Schvezov * Reverting installed_location detection (f0f408e6) 2013-10-14 Victor Thompson * Adjust Recent and Genres item sizes; Rename "Recently played" list to "Recent". Fixes: https://bugs.launchpad.net/bugs/1239649, https://bugs.launchpad.net/bugs/1239663. (07e0f3f1) * Fix tests to not use mouse. (ffb664e0) 2013-10-14 Andrew Hayzen * Fix for expander Y position (e721187a) * Move the meta data below the cover art for the current item (b31fed5a) 2013-10-14 Victor Thompson * Fix Genres (392a22eb) * Adjust Recent and Genres item sizes and rename Recent list (df832135) 2013-10-14 Andrew Hayzen * Merge of trunk (b5257758) 2013-10-14 Sergio Schvezov * Merging trunk misshaps in emulators, not mangling the mediascanner to avoid mediascanner crashes on click. Leaving commented code on mediascanner for future improvement (e1f379ca) * Merging trunk (b13d178b) 2013-10-14 Andrew Hayzen * Fix for labels on the MusicStart.qml not using elide. (f73e3e08) 2013-10-14 Victor Thompson * Add ap tests for previous button and play/pause in now playing. (c9847649) * Add ap tests for previous button and play/pause in now playing (46a90838) 2013-10-13 Andrew Hayzen * Fix for labels on the MusicStart.qml not using elide (2bc9c28d) 2013-10-13 Victor Thompson * Disable settings until it contains features the user can change. Fixes: https://bugs.launchpad.net/bugs/1239165. (ad4ab0c2) 2013-10-13 Andrew Hayzen * Removed BlurredBackground from the album sheet as it causes black bands down the side. (b246ef10) * Removed BlurredBackground from the album sheet as it causes black bands down the side (c9dc46d3) * Added elide support to labels in Albums, Artists, Playlists, Tracks and AddToPlaylist. Fixes: https://bugs.launchpad.net/bugs/1239116. (b5605cfd) 2013-10-13 Victor Thompson * Use higher resolution play, pause, forward, and back icons with no gradients. Fixes: https://bugs.launchpad.net/bugs/1239094. (68c3e087) 2013-10-13 Andrew Hayzen * Fix to add margins to the album page. Fixes: https://bugs.launchpad.net/bugs/1239112. (6f5b0643) * Added border to back button in player mode. Fixes: https://bugs.launchpad.net/bugs/1238867. (1f8c3ae5) 2013-10-13 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4bcf1583) 2013-10-13 Victor Thompson * Remove settings for 1.0 release (bdc40bfe) 2013-10-13 Andrew Hayzen * Tweak to opacity (ca470a36) * Added border to back button in player mode (3f4526a0) * Tweaks to the position of the expand button for the current track (487a30fc) * Fix for onCollapseExpand() for offscreen tracks (8201788a) * Implementation of expander in the Now Playing page (c3ea64b0) 2013-10-12 Andrew Hayzen * Fix for width (a0fe6a86) * Hide the back button in the now playing page when the toolbar is hidden. Fixes: https://bugs.launchpad.net/bugs/1238877. (a14260d7) * Fix for labels in now playing for the current track (47968c93) 2013-10-12 Victor Thompson * Fix autopilot tests (45c8ff65) 2013-10-12 Andrew Hayzen * Show toolbar when a track is clicked. Fixes: https://bugs.launchpad.net/bugs/1238875. (523c7521) 2013-10-12 Victor Thompson * Add bezel to play indicators. (30dcc45d) 2013-10-12 Andrew Hayzen * Fix for selecting Recently Played or Genre (92434cfe) * Fix to add margins to the album page (c7d9aa7a) * Hide the back button in the now playing page when the toolbar is hidden (cc84fa88) * Fix for MusicNowPlaying.qml labels (bce6932d) * Show toolbar when a track is clicked (0ebe9e1a) 2013-10-12 Victor Thompson * Use higher resolution play, pause, forward, and back icons with no gradients (cb656251) 2013-10-12 Andrew Hayzen * Added elide support to labels in Albums, Artists, Playlists, Tracks and AddToPlaylist (f35a6939) 2013-10-12 Victor Thompson * Set initial values for snaptrack, shuffle, and repeat. (0c35ab13) * Set initial values for snaptrack, shuffle, and repeat. (64eee3f5) 2013-10-12 Andrew Hayzen * Implementation of a basic optional repeat system. Fixes: https://bugs.launchpad.net/bugs/1239098. (b3077132) * Fix for manifest.json (e08a591d) * Merge of trunk (27bd81d4) 2013-10-12 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (d8d404af) 2013-10-12 Andrew Hayzen * Expanable item in playlists tab, playlists, artists, albums and in tracks tab.; Removed the press and hold on above. Removed shuffle setting from settings since its now in new toolbar.; Changed color of swipe to delete; added some translatable strings; added back action into HUD.; Use default black in SwipeDelete.; Added add to playlist in now playing page.; Commented out a lot of output.; Fix for shuffle requiring a restart to take affect; Fix for blank images in MusicaddtoPlaylist and fallback imag. Fix for cover art in header of playlist tracks; Fix for fallback cover art in the artist tab; Add proper manifest file; Make the Recent and Genre horizontal list cover arts a bit smaller. They clipped at the bottom.; Force header to disappear when now playing page is shown, this helps stop a glitch where the header overlays the now playing page preventing the user from going back - unless they use the HUD; Use UbuntuShape for play/pause in Now Playing Toolbar.; Fix so that count is updated in MusicaddtoPlaylist.qml when a track is removed from a playlist; Update version to 1.0 prior to release; Added screenshots.; Updated translations.; Back button on MusicNowPlaying.qml now uses the images/dropdown-menu.svg as per design spec; Fixes for the music-app.deskto. Fixes to the manifest.json. Fixes: https://bugs.launchpad.net/bugs/1237893. (b54691c1) 2013-10-11 Victor Thompson * Fix manifest.json yet again (dd650480) * Add icons for repeat and shuffle. Toggle icon opacity when setting the value. (53bc24c2) * Add a back button to MusicToolbar. (5c9055af) 2013-10-11 nskaggs * add manifest and fix click support (7cdaf182) 2013-10-11 Victor Thompson * Removing screenshots that are not needed, are not even taken from a device, and aren't linked to the desktop file (94de3338) 2013-10-11 Andrew Hayzen * Fix for playing the same track from different models not reloading the queue. (b0bb25ea) 2013-10-11 nskaggs * fix local and deb checks (d0e5acd3) * pep8 fix (64f8a36e) * fix show toolbar (46a00696) * get local desktop working (94652ed9) * add Sergio's fixes for home patching (8e52503a) * return to custom emulator for the time being, but use pointing device not mouse (6fab9551) 2013-10-11 Sergio Schvezov * Test cleanup and initial support for click (ac4ec090) 2013-10-11 nskaggs * fix pyflakes and pep8 (399d83d2) * fix units typo (f90f8d69) * remove custom toolbar opening and cleanup test (5f086e0f) * play with removing home patching (7171caf5) 2013-10-11 Andrew Hayzen * Fixes to the manifest.json (63004fcf) * Fixes for the music-app.desktop (f18d8909) * Back button on MusicNowPlaying.qml now uses the images/dropdown-menu.svg as per design spec (843c6ae3) 2013-10-11 Daniel Holm * Updated translations. (e6f54761) * Added screenshots. (1ffe56f1) 2013-10-11 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bb3c6ff3) 2013-10-10 Victor Thompson * Update version to 1.0 prior to release (21da3c9a) 2013-10-11 Andrew Hayzen * Extra protection of the cover vars when creating a playlist (27f6524f) * Fix so that count is updated in MusicaddtoPlaylist.qml when a track is removed from a playlist (34b69d9c) 2013-10-10 Victor Thompson * 4th round of bug fixes (77c27e3d) 2013-10-11 Andrew Hayzen * Third round of bug fixes (b11a3ca4) 2013-10-10 Victor Thompson * Use UbuntuShape for play/pause in Now Playing Toolbar. (20eaf7f4) 2013-10-11 Andrew Hayzen * Second round of bug fixes (532e5257) * Round of bug fixes (76ec820d) * Implementation of a basic optional repeat system (ea55a04e) * Fix for playing the same track from different models not reloading the queue (4df40692) * Force header to disappear when now playing page is shown, this helps stop a glitch where the header overlays the now playing page preventing the user from going back - unless they use the HUD (e48e3656) 2013-10-10 Victor Thompson * Make the Recent and Genre horizontal list cover arts a bit smaller. They clipped at the bottom. (55d9a8a2) 2013-10-11 Andrew Hayzen * Tweaked mouseArea to make it easier on a touch device to click the expander by making the area larger (b1ed3796) 2013-10-10 Victor Thompson * Add proper manifest file (891976a0) * Some file cleanup. (f0280f0b) 2013-10-11 Andrew Hayzen * Fix for queuing items from the expandable item (96f9a3fb) * Fix for fallback cover art in the artist tab (57d91862) * Fix for cover art in header of playlist tracks (633e3cdc) 2013-10-11 Daniel Holm * Fix for blank images in MusicaddtoPlaylist and fallbCK IMAGE (076855d7) 2013-10-11 Andrew Hayzen * Fix for blank images in MusicaddtoPlaylist.qml; Fix for fallback image (c1250200) 2013-10-11 Daniel Holm * Forgot to comment out. (3a88db76) * Toolbar should have back icon. (68816364) * Added missing plugin into nowplaying file. (7c1958a5) * Removed expandable items from nowplaying anc replaced with a simple add to playlist. (437b78ac) * Merge with shuffle change fix. (80e04c58) * Merge with expand playlist reorder fix. (058a711f) * COmmented out a lot of output. (f380b07b) * Added expandable to nowplaying plus other stuff. (7d5b7fe9) 2013-10-10 Andrew Hayzen * Fix for reordering in playlists (c7158719) * Fix for shuffle (65bf9004) 2013-10-11 Daniel Holm * more margin changes. (d181a240) 2013-10-10 Daniel Holm * Fix height issues with expandable items in albums and artists; use darker font color for focus; margin and font size changes all over the place; more. (21f7c2f6) * Merge with: Fix for the playlist tracks only displaying one track. (4500f36f) 2013-10-10 Andrew Hayzen * Fix for count in playlists (a90a521f) * Fix for the playlist tracks only displaying one track (e1a6b211) 2013-10-10 Daniel Holm * Merge with Andrew proposal. (d9beb66f) 2013-10-10 Andrew Hayzen * Fix for expanding on album and artist pages (d763f40d) 2013-10-10 Daniel Holm * Use default black in SwipeDelete. (041a21d0) * Changed color of swipe to delete; added som translatable string. added back action into HUD. (9926c77b) 2013-10-10 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (bf280988) 2013-10-10 Daniel Holm * Removed shuffle setting from settings since its now in new toolbar. (17ede77a) * Added copy of default cover just to fix the greyish issue when missing; expandable icons in albums and playlist - though not working for some reason. (857a1255) * Update to v. 0.9 (362cc313) * Bigger album on start tab and changes to labels; default art in playlist. (c6339a7a) 2013-10-09 nskaggs * Increase robustness of music app autopilot tests; add waits for app to load, respect activity indicators, fix pep8 and pyflakes errors. (d8dd8ab8) 2013-10-09 Daniel Holm * Added the dropdown menu manually for now. (3c2e3abc) 2013-10-09 nskaggs * migrate to main_view and remove unneeded functions (95c4376b) 2013-10-09 Daniel Holm * Merge with trunk. (35d4eea7) 2013-10-09 nskaggs * rebase to trunk (4cf9ae84) * make pep8 and pyflakes compliant add spinner check (d74729ac) 2013-10-09 Daniel Holm * Save. (3f50fef7) 2013-10-09 Andrew Hayzen * Custom toolbar created; Disabled normal toolbar; Snaptrack implemented; Controls now shown in the toolbar and page aware; Restyled player controls; Added proper back button for now playing page; Added some colours in Style.qml; Added temporary back button for pageStacks. Fixes: https://bugs.launchpad.net/bugs/1202078, https://bugs.launchpad.net/bugs/1227183, https://bugs.launchpad.net/bugs/1231123. (0e6de9ed) 2013-10-09 nskaggs * add setup, enforce app loads with and uses uitk emulator :-) (f11e6443) * rebase to andrew and upstream (bdfc1402) 2013-10-09 Andrew Hayzen * Merge of trunk (81a0e211) 2013-10-09 nskaggs * merge Andrew's changes with upstream (7bc60525) 2013-10-09 Daniel Holm * Replaced some of our own icons with using system's. (4b150c61) 2013-10-09 Andrew Hayzen * Fix for 'clear' text not being centred in 'current' items; Fix for labels overflowing into the swipeDelete object. (07d9a5c0) 2013-10-09 Victor Thompson * Make Album, Artist, and Playlist secondary content a sheet.; Fix bottom align of the Albums tab so if many albums are shown, they can anchor to the bottom of the controls. Fixes: https://bugs.launchpad.net/bugs/1224369, https://bugs.launchpad.net/bugs/1237344. (6087e7df) 2013-10-09 Daniel Holm * remove the random color function. (052b2ba6) * Use icons instead of colors. (b85f80bb) * Merge with other branch (2d0c4cef) * Merge with trunk. (8d9cce18) * Trying to get random cover art based on tracks in playlist working. (adec2c6a) 2013-10-09 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (b6471182) 2013-10-09 Andrew Hayzen * Fix for the libraryEmpty overlay to work with grilo. (4a3cbbd0) * Fix so that if a file is passed in the args no other tracks appear in the queue. (4625f31e) 2013-10-08 Victor Thompson * Merge with trunk (5d8bde51) * Remove unused code (9a725727) 2013-10-08 Andrew Hayzen * Code fix (fa043e25) * Merge of trunk (99489cb1) * Make use of the grilobrowse finished property (26e8f638) 2013-10-08 Sergio Schvezov * Using the unconfined template, adding list of plugins to download for setup; applicationName fixes and removal of incorrect use of sidestage hint in desktop file. (2920290b) * Allowing plugins to be specified for provisioning package (2de8c65a) * Fixing test domain (4d4f3adc) * fixing applicationName (5e844b0c) * Fixing apparmor template (3ddb3640) * Removing sidestage hint (ba7e2176) 2013-10-08 Andrew Hayzen * Fix for labels overflowing into the swipeDelete object (091d432f) * Fix so that if a file is passed in the args no other tracks appear in the queue (425cbaa6) 2013-10-07 Loïc Minier * Add URI handler to handle signal to open new URI. (39a1944b) 2013-10-07 Andrew Hayzen * Merge of trunk (169253f5) * Fix so that selecting the currently selected track shows the now playing page. (a39c668a) 2013-10-07 Loïc Minier * Merge with trunk. (40f2c8a7) 2013-10-07 Sergio Schvezov * Using com.ubuntu and arch specific to include qtpowerd (and possibly grilo). (cc9f0c15) 2013-10-07 Andrew Hayzen * Fix so that selecting the currently selected track shows the now playing page (4138fcc4) 2013-10-07 Sergio Schvezov * Removing generated manifest extensions (800b7eac) * Removing stale apparmor rules (8e37ddd6) * Using com.ubuntu and arch specific to include qtpowerd (and possibly grilo) (81652e08) 2013-10-07 Andrew Hayzen * Remove album art from toolbar; Moved back button for pageStacks into the toolbar; Selecting the title/artist/album in the toolbar now displays the play queue (986af46a) 2013-10-07 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (4bc331b6) 2013-10-07 Andrew Hayzen * Merge of trunk (74cb162a) * Fix for autopilot (51878954) 2013-10-06 Andrew Hayzen * Fix for 'clear' text not being centred in 'current' items (d60c8ab1) * Fix for manifest.json (05f8b3e8) 2013-10-06 Omer Akram * fixes a few of the alignments in the settings pane. (1b1ce1c7) * fix minor alignment problems (dcabfbc4) * aligns the queue list with the currently playing song's coverart. (25bae891) 2013-10-06 Andrew Hayzen * Fix for the libraryEmpty overlay to work with grilo (a984bce6) 2013-10-06 Omer Akram * make the UI a tad better (e3c03f75) 2013-10-06 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (e07efc79) 2013-10-06 Victor Thompson * Show artist covers; Add number of tracks and albums for each artist. (b10e1cc1) 2013-10-05 Victor Thompson * Add number of tracks and albums for each artist. (9d690bd2) * Show artist covers (dde319a1) * Add background to sheet and made BlurredBackground a common component (ef74c26e) * Merge with trunk (8163d865) * Show bottom progress bar. (2ee24c92) 2013-10-05 Daniel Holm * Populate settings. (a2d5c4fa) * Merge with trunk. (c56a6740) * Resolved some issues with height. (c9064bda) * Fixes everywhere. (b9808c6c) * Merge with trunk. (53b1dd43) * Added expandable items to tracks, playlists and playlist items, also other fixes and stuff. (77657d91) 2013-10-05 Victor Thompson * Re-enable QtPowerd. (2f06dfeb) * Re-enable QtPowerd (4d3b4fab) 2013-10-05 Daniel Holm * Resized albums to follow design guidlines, as well as added the layer of albums when supposed to. (42af7abf) * Expandable items in playlists tab. (f8df48f9) * Populate settings again. (b980f797) 2013-10-05 Victor Thompson * Merge with trunk and updates to album sheet (21db34c4) 2013-10-04 Victor Thompson * Initial album sheet (a248accc) 2013-10-04 Andrew Hayzen * Changes to tests to show the toolbar (5fb34839) 2013-10-04 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (8e372c7a) 2013-10-04 Daniel Holm * More changes: new sizes for items in album. (03761cb9) 2013-10-03 Daniel Holm * Merge with trunk and added some padding on first tab. (bb0223aa) * Latest changes. (5a719f24) 2013-10-03 Andrew Hayzen * Merge of trunk (a73a3c95) 2013-10-03 Victor Thompson * Move LoadingSpinner to be on top of the blurred background. (20354cda) 2013-10-03 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (0555d3cb) 2013-10-02 Victor Thompson * Move LoadingSpinner to be on top of the blurred background (ba6b527e) 2013-10-02 Loïc Minier * Add URI handler to handle signal to open new URI; this clears the track queue, enqueues all URIs, and starts playing the first URI. This support requires ubuntu-ui-toolkit >= r768. (7a221dc9) 2013-10-02 Daniel Holm * Merge with trunk. (9e589988) * Minor changes. (71e2e56f) 2013-10-02 nskaggs * Fix autopilot tests to run in lab. (e7d041b5) * remove unneeded contains (5ce12cd0) * add the notequals (0773dcc6) * combine play/pause tests and add extra asserts to wait for objects to ensure they exist (273547cd) 2013-10-02 David Planella * Merged from trunk (5b75a741) 2013-10-02 nskaggs * add xauthority fix (c64351d6) 2013-10-02 Andrew Hayzen * Fix so that button can only be clicked when in the circle (ea47d5f4) 2013-10-02 nskaggs * fix directory (cef72da6) * fix files not found in lab (cde5bf7a) 2013-10-02 Andrew Hayzen * Merge of trunk (899c6f09) * Added proper back button for now playing page; Tweaks to colours and now playing toolbar; Added some colours in Style.qml (6dfe7dd5) 2013-10-02 Victor Thompson * Add a busy indicator while app is loading. Fixes: https://bugs.launchpad.net/bugs/1231433. (ac2e0c75) 2013-10-02 nskaggs * Clean up mediascanner autopilot tests and allow them to run properly in the lab. (f283b1f8) 2013-10-02 Daniel Holm * Cover art based and blurred background. (45aeb974) 2013-10-02 Loïc Minier * Use renamed QtPowerd interface to avoid a clash between qtpowerd and Unity 8 Shell's plugin. (9695ee39) 2013-10-02 Daniel Holm * Reactivate powerd (01c0a31f) * Resized albums to follow design guidlines, as well as added the layer of albumss when supposed to. (80e90c75) 2013-10-02 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (06682677) 2013-10-02 Andrew Hayzen * Merge of trunk (56ca59a9) 2013-10-01 Loïc Minier * Switch from Powerd to QtPowerd; renamed in qtpowerd to avoid a clash with Unity8 Shell plugin; bump qtpowerd dep. (6dd7c27d) * Simplify code to use QtPowerd and rename interface to Powerd 0.1. (dbf8d35d) * Bump qtpowerd dep to >= 0.1. (02583bba) * Use Powerd instead of Ubuntu.Powerd and simplify handling of keepAlive. (4851e2d9) 2013-10-01 nskaggs * revert some of the emulator changes (b31d0bd5) 2013-10-01 Daniel Holm * Merge with trunk. (c9cc6fe7) * Center the background image and add opacity to now playing. (e9988de9) * Changed from gaussian to fast blur and rasied the radius. (eb3137a9) * Fixed the sorting of album art in playlists, also made thm bigger. (ec798038) 2013-10-01 nskaggs * the point at which I break everything. converted sed calls, added explicit setup call to tests, fiddled with emulator (a7229254) * add logging, clean up test names (ab2c961d) 2013-10-01 Daniel Holm * Changed background to currently played tracks cover art, with blur and white transparent layer. (25f02d8b) * Fixed the sorting of album art in playlists, also made thm bigger. (f0566b0d) 2013-10-01 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9af56464) 2013-10-01 Andrew Hayzen * Improvements to how clicks and drags are differentiated across the different layers (986d2e83) 2013-09-30 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (365b7e35) 2013-09-29 Victor Thompson * Add a busy indicator while app is loading. (17b83a54) 2013-09-29 Andrew Hayzen * Fix for artist and album tracks being cut off (29d3dd79) * Centre player controls; Increase mouseArea height for duration slider (4a986044) 2013-09-29 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (2c813724) 2013-09-29 Andrew Hayzen * Fix for background colour of toolbar, making a smoother transition; Fix so that margins are large enough to be able to select the last item (20b41a81) 2013-09-28 Andrew Hayzen * Added temporary back button for pageStacks (621099ec) * Custom toolbar created; Disabled normal toolbar; Snaptrack implemented; Controls now shown in the toolbar and page aware; Restyled player controls (703f7790) 2013-09-28 David Planella * Merged from trunk (b1426b56) 2013-09-28 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (9b76997b) 2013-09-28 nskaggs * Add support for testing via click packages Fix tests to work with new mediascanner (fd69970a) 2013-09-27 nskaggs * add in db patching (e62b19d7) * cleanup for review (3613c248) * slightly less rough, working (1d5843df) * hacky version showing it's possible to fake mediascanner db (d57d4662) 2013-09-27 Andrew Hayzen * Fix for playing tracks onstartup from command line. Fixes: https://bugs.launchpad.net/bugs/1229905. (56f56b6a) 2013-09-27 nskaggs * add click testing support, rename and add second off file for tests, remove example-content dependency (a9095444) 2013-09-27 Andrew Hayzen * Fix for playing tracks onstartup from command line (2bd82af5) 2013-09-27 Launchpad Translations on behalf of music-app-dev * Launchpad automatic translations update. (ad8326a6) 2013-09-26 David Planella * Merged from trunk (1071cfe8) 2013-09-26 Victor Thompson * Order by tracks numerically. Fixes: https://bugs.launchpad.net/bugs/1231141. (0d7df9b4) * Show labels on recent items. (cdeaec75) * Resolve spacing issues. Fixes: https://bugs.launchpad.net/bugs/1228869. (47d38634) 2013-09-26 Loïc Minier * Add X-Ubuntu-Single-Instance=true and reorder X- fields alphabetically; X-Ubuntu-Single-Instance=true allows with recent upstart-app-launch versions to prevent multiple instances of the same app to be launched (Click or non-Click apps). This is useful to reuse a running a music-app instance to load a new music:// URL. Fixes: https://bugs.launchpad.net/bugs/1228345. (6a370c42) 2013-09-26 David Planella * Updated app version (3e08a879) * Fixed the qmlproject file to display the desktop file instead of the debian rules file (1a66d508) * Fix VCS field in debian/control to point to the music app branch (0076ab3e) * Fixed packaging warnings and errors (2bd510d6) * Fixed debian rules tabbing (a985e232) * Added support for building and shipping translations in the Debian package (14fc13ee) * Updated translations template, ready to be exposed for translations in Launchpad (5a1da6dd) * Added translations build infrastructure (20f90c08) 2013-09-26 Victor Thompson * Fix centering of now playing cover art. (f55a0df1) 2013-09-25 Victor Thompson * Resolve spacing issues (e54710be) * Order by tracks numerically. (2cc676b2) * Show labels on recent items (219ee62c) * Fix dependencies (ee95ee45) * Use QtPowerd Plugin (093e6cad) 2013-09-25 Loïc Minier * Add X-Ubuntu-Single-Instance=true and reorder X- fields alphabetically; X-Ubuntu-Single-Instance=true allows with recent upstart-app-launch versions to prevent multiple instances of the same app to be launched (Click or non-Click apps). This is useful to reuse a running a music-app instance to load a new music:// URL. (92d6f2da) 2013-09-25 Victor Thompson * Add a label to the Album grid items on the Albums page. (4e23a1ba) 2013-09-24 Victor Thompson * When resetting the meta-database or playlist db, do not try to drop a table that does not exist. Fixes: https://bugs.launchpad.net/bugs/1229153. (dc212885) 2013-09-24 Francis Ginther * Merge trunk (f66d8cf5) 2013-09-24 Andrew Hayzen * Updated common/swipeDelete to new object; Added support in playlist tracks for new swipeDelete object; Reordering in the play queue; Reordering in playlists; Rewrite of swipeDelete to allow for reordering in the listview; Fix to remember state of player when removing the current track. (f20ec45c) 2013-09-24 nskaggs * Add toolkit dependency for autopilot package. (e8ce0cbd) 2013-09-24 Loïc Minier * Unquote --file="%f"; this is undefined according to desktop entry spec and upstart-app-launch now correctly handles %f (but will cope with "%f" too ;-). (8d5621d4) 2013-09-23 Victor Thompson * Add playlist to the mix (40401f77) * New Album grid labels to match style elsewhere. (f217dd31) 2013-09-24 Andrew Hayzen * Fix for duplicate primary keys; Fix so that ids are correctly updated across playlists (bcd17ec3) 2013-09-23 Victor Thompson * When reseting meta-database, do not try to drop a table that does not exist (87a58bd7) 2013-09-24 Loïc Minier * Unquote --file="%f"; this is undefined according to desktop entry spec and upstart-app-launch now correctly handles %f (but will cope with "%f" too ;-). (7ed2ba2e) 2013-09-23 Daniel Holm * Update version to 0.7. (091bf2e1) 2013-09-23 nskaggs * add ubuntu-ui-toolkit-autopilot as dependency for autopilot package (d56fad2b) 2013-09-23 Daniel Holm * Merge with branch and update to 0.7. (c45360e6) 2013-09-23 Andrew Hayzen * DB version fix (16147ed5) 2013-09-23 Victor Thompson * Remove references to the FolderListModel. Fixes: https://bugs.launchpad.net/bugs/1229123. (30cf8e4a) * Remove references to the FolderListModel. (16582981) 2013-09-23 Andrew Hayzen * Code fix (02329a70) * Merge of trunk (5ceac012) * Fix for reordering/removing in playlists (bbb385e9) 2013-09-22 Victor Thompson * Add genres to Library Models and Music Start page. (63cec03f) 2013-09-22 Daniel Holm * Some cleanup; removal of error messages; devel button listens to --debug argument; some comments. (7ce0ab48) 2013-09-22 Victor Thompson * Resolve conflicts (812bf06d) * Resolve conflicts (d6a3f5f2) * Resolve conflicts. (60db7509) 2013-09-22 Daniel Holm * Merge with trunk. (14bc3e92) 2013-09-22 Victor Thompson * use Grilo for accessing metadata; fixes related to making this transition. Fixes: https://bugs.launchpad.net/bugs/1200368, https://bugs.launchpad.net/bugs/1200513. (4a7eb85f) * Resolve conflicts (29ab0691) * Merge with trunk. (1f2cfc1b) 2013-09-21 Daniel Holm * Update version to 0.6.5. (d3730371) 2013-09-20 Daniel Holm * Resolved bug that count is missing newly created playlists. (98866018) * Resolved toolbar not showing up in playlists tab. Fixes: https://bugs.launchpad.net/bugs/1227642. (f4701e99) 2013-09-20 Ted Gould * Quote the file name to handle spaces. Fixes: https://bugs.launchpad.net/bugs/1228125. (1a717658) 2013-09-20 Daniel Holm * Resolve issue with file argument with "file://" not working. Fixes: https://bugs.launchpad.net/bugs/1227677. (8f56e5ac) * Resolved issue with having file:// in file argument. (eca62425) * Merge with trunk. (70a3ff83) * Merge with trunk. (8ee7f077) 2013-09-20 Ted Gould * Quote the file name to handle spaces (45b1db87) 2013-09-19 Andrew Hayzen * Merge of trunk (d1226e90) * Added UI support for reordering in playlists (5f25fcd3) 2013-09-19 Bill Filler * fix for lp:1227677 to use %f in desktop file instead of %u as app only currently handles file paths and not file urls. (d357eea0) * short term fix for lp:1227677 (6862b5dc) 2013-09-19 Andrew Hayzen * Merge of trunk (30b98ea0) 2013-09-19 Daniel Holm * Resolved toolbar not showing up in playlists tab. (5cf5d921) * Edited condition for customdebug. (5ba9386c) * Resolved bug that count is missing newly created playlists. (43438751) * More clean up. (5034cb73) * Some cleanup; removal of error messages; devel button listens to --debug argument; some comments. (faf92867) 2013-09-18 Daniel Holm * Resolved bug with duplicate track removal based on name; Resolve bug with playlist trying to use already used IDs; added a reorder function for IDs; some clean up. (70f2b73d) * Resolved bug regarding settings sheet is to wide on phones. Made it smaller until later. (69978fe3) * Removed dev button. (1ee3fe2e) * Merged and fixed some of Victors code. (e945947c) * Merge with trunk. (b344b291) * Added the db update stuff from Victors branch. (0b439606) * Change width of items on Playlist sheet to better work on device. (45dac8d2) * Added arguments. One for debug option to use later, and one to play a track on startup. Fixes: https://bugs.launchpad.net/bugs/1226164. (b6c21d83) * Fixing a lot of the error output. (376c1008) 2013-09-18 Andrew Hayzen * Disabled reordering the current item (96a2ec90) 2013-09-17 Daniel Holm * Playlist changes should not be in there. (4953fa4a) * Trying to change the cover art; moved the button in Playlist sheet to be at the bottom and full width. (72c8c9d7) * Turned some unused stuff to non-visible; made switches stick to the right. (6849ac99) 2013-09-17 Andrew Hayzen * Fix for reordering item from after the current item to before it sometimes jumping too far (b261a807) * Merge of trunk (6ae006a6) * Updated common/swipeDelete to new object; Added support in playlist tracks for new swipeDelete object (7830b683) 2013-09-17 Daniel Holm * Update metadata and populate queue. (295f7535) * Fixed the statement of track as argument; some other stuff. (d648d66a) * Added arguments. One for debug option to use later, and one to play a track on startup. (78210310) * Playlist changes should not be in there. (b184f198) * Change delegation items for Playlists; added future rectangles for cover art with now random color. (df2fac6c) * Playlist changes should not be in there. (21853cd2) * Resolved bug regarding settings sheet is to wide on phones. Made is smaller until later. (4a3e95b2) 2013-09-16 Andrew Hayzen * Initial work on reordering in the play queue; Rewrite of swipeDelete to allow for reordering in the listview; Fix to remember state of player when removing the current track (6107b9d6) 2013-09-15 Daniel Holm * New settings and now use Sheets instead. (ffa54d96) * Move to sheet, added icon in addtoPlaylist and fixed the update count on add. (7edf3e8e) * Merge with trunk. (f73c8cdb) * Added a bug report note. (448add91) * Sheet now fills parent. (a6976885) * Sheet now fills parent. (73c9e7c3) * Added a column to playlist table to resolve the bug regarding all tracks with same names are removed: is now removed based on ID; db upgrade to 1.2 (e59436e0) * Merge with trunk. (55706164) * Changed text color in settings. (361c37b1) 2013-09-15 Carla Sella * music-app autopilot test migrated to emulator. (4b3ee4f6) * Fixed launching from local o installed app. (ecffad8b) 2013-09-15 Daniel Holm * Move to sheet, added icon in addtoPlaylist and fixed the update count on add. (56ca1c91) * Disabled some stuff which aren't suppose to work untill 1.+ anyway (a7dfa509) 2013-09-14 Victor Thompson * Add genres to Library and Music Start page. (16ecf977) * Reduced the initial timer value. (810be040) 2013-09-14 Carla Sella * Fixed missing file. (291f2afc) * Migrated to emulator. (95b6e0fc) 2013-09-13 Victor Thompson * Remove dependency on FolderListModel (7547380d) * Upgrade playlist storage db. (6f1c8ab5) * Add Grilo dependencies (71d35ac3) 2013-09-12 Victor Thompson * Updates for speed, but allow time for plugin to register. (7d8f7727) * Merge with trunk (a83367da) 2013-09-12 Daniel Holm * Added initial undo functionality. (6a64b27c) 2013-09-11 Victor Thompson * Use Grilo to build the existing Metadata library. (a8295f01) 2013-09-11 Andrew Hayzen * Implementation of empty states. (324a2598) * Fixes for when using the clear button (2b596f30) 2013-09-11 Daniel Holm * Redifined the last.fm login. (dad4f685) * Merge with trunk. (49cad635) * Settings now in order and some inital settings save. (6d7acff2) * Turned the whole thing to a PageStack so that add to Playlist could be a Page. (f0957cdd) 2013-09-10 Andrew Hayzen * Fix for missing items; Fix for highlight incorrectly showing selected track when the queue is empty (a07376f2) * Implementation of empty states (4b3e7f71) 2013-09-10 Daniel Holm * Inital move of settings to a Sheet and added the new stuff. (87dfcde8) 2013-09-03 Daniel Holm * Version change (0.6) to celebrate 100th rev. (d73363da) * Re-added chosenIndex = index (198978ee) * Old icon was back. Replaced. Remove conflict files. (8ed117b7) * Version change (0.6) to celebrate 100th rev. (554f278a) * Moved page to external file and other stuff. (ce870470) 2013-09-02 Daniel Holm * Changed back som reverts. (cbdf736d) 2013-09-02 Andrew Hayzen * Ensure that the selected track is visible in the now playing page (only on a call to trackClicked). (42197680) 2013-09-02 Daniel Holm * Merge with trunk (e50ed589) * Added number of tracks in playlist in Playslists tab. (58145c80) 2013-09-02 Andrew Hayzen * Ensure that the selected track is visible in the now playing page (only on a call to trackClicked) (3f35586d) 2013-09-02 Daniel Holm * Merged with trunk. (ae872110) * NowPlaying visible is set automatically now. Removed duplicate (b8d5e77e) * Moved back to some old code to handle each playlist. (beda62cf) 2013-09-02 Sam Hewitt * Merge of refined Music app icon. (0bf0ccbc) 2013-09-02 Victor Thompson * Move initial tracks tab to a "Songs" tab; Add basic headings for the initial tab; Add recent album to queue; All views now go straight to Now Playing when an item is selected. (53af41b9) 2013-09-02 Daniel Holm * Tabs doesn have to be in a seperate page; moved dialog to add playlist. (7bbcc8e5) 2013-09-01 Victor Thompson * Make Now Playing active from trackClicked function. (68a6faf6) * Make Now Playing active from trackClicked function. (0a6e36e2) 2013-09-01 Daniel Holm * Added add playlist listitem and icon. (fa758a14) * Turned the whole thing to a PageStack so that add to Playlist could be a Page. (41800648) 2013-08-31 Andrew Hayzen * Fix for 'Unable to assign null to QString' in MusicPlaylists.qml. (5e83a10e) 2013-08-31 Daniel Holm * Added number of tracks in playlist in Playslists tab. (2f8a8243) 2013-08-30 Andrew Hayzen * Fix for 'Unable to assign null to QString' in MusicPlaylists.qml (76a26683) 2013-08-30 Sergio Schvezov * Adding apparmor manifest for when running confined. Fixes: https://bugs.launchpad.net/bugs/1218392. (5506ce8d) 2013-08-30 Victor Thompson * Include test media as OGG instead of MP3 to avoid codec dependency issues. Fixes: https://bugs.launchpad.net/bugs/1217953. (61b15b45) * Use ogg file for autopilot tests (ff3076be) 2013-08-30 Sergio Schvezov * Adding apparmor profile for running confined. (557143a9) 2013-08-30 Andrew Hayzen * Fix for debian/install to include common folder. (daa887e6) * Fix for debian/install to include common folder (ec6547f7) 2013-08-30 Victor Thompson * Use a separate model for the recent albums (42fe3e29) * Add recent album to queue, play first item, and go staight to Now Playing. (01597e77) 2013-08-29 Victor Thompson * Update copyright to include Andrew. (50850ece) * Initial music tab. Nothing is functional yet. (569597ab) 2013-08-30 Andrew Hayzen * Fix so that cached queue is correctly cleared after an item is remove from the queue; Fix so that items selected by mouse are always visible in the queue. (878918b1) * Fix so that cached queue is correctly cleared after an item is remove from the queue; Fix so that items selected by mouse are always visible in the queue (21112cd0) 2013-08-29 Andrew Hayzen * Added common SwipeDelete.qml; Added support for SwipeDelete in play queue; Added support for SwipeDelete in playlist tracks. (527d9dc2) * Fix when adding item to queue from album page that album data does not appear in the play queue. (77b3e7f7) * Fix when adding item to queue from album page that album data does not appear in the play queue. (5cc5c257) * Added common SwipeDelete.qml; Added support for SwipeDelete in play queue; Added support for SwipeDelete in playlist tracks (4ff3810a) 2013-08-29 Victor Thompson * Add a header item to the Artist view; Remove artist name from track items. (c24781cd) 2013-08-28 Victor Thompson * Remove commented code (1f66829a) * Re-add the album name to the Artist track items (673e830f) * Updated Artist view. (6a3da604) * Add year data to extracted metadata; Remove cover art from Album list view items; Add header item with cover and album information to the Album list view. (93282e98) 2013-08-28 Sam Hewitt * Redesign of main icon. (9993ed4f) 2013-08-28 Andrew Hayzen * Removal of queue from Playlists page; Addition of queue to Now Playing page; Restyling of progress bar and other items on Now Playing page. (7f05aaee) 2013-08-28 Victor Thompson * Make secondary page not visible so the contents are not displayed until the page is pushed on the stack. (b11f53e1) 2013-08-28 Andrew Hayzen * Fix for text which is too long (ce5d5e39) * Merge of trunk (e9ab660f) * Fix so that all colours are in styleMusic for the now playing page (627207aa) * - Fix for header showing on top of the now playing list - Fix so listview doesn't follow current item (0413aec7) 2013-08-27 Victor Thompson * Fix small spacing issues and use ListItem.Standard. (9bbc01ac) * Initial album view per new design spec. (90cd4810) 2013-08-25 Victor Thompson * Fix location of added music content. Fixes: https://bugs.launchpad.net/bugs/1215932. (b1873ab9) 2013-08-25 Andrew Hayzen * Removal of queue from Playlists page; Addition of queue to Now Playing page; Restyling of progress bar and other items on Now Playing page (91a6b174) 2013-08-24 Victor Thompson * Fix location of added music content. (eb296b4b) 2013-08-22 Victor Thompson * Add autopilot test for going to the next track. Fixes: https://bugs.launchpad.net/bugs/1188804. (1f6cb6d2) * Prevent the ListView from jumping around when current item is being changed. Fixes: https://bugs.launchpad.net/bugs/1213222. (28aac997) 2013-08-17 Victor Thompson * Code cleanup (3ccc49b8) * Prevent the ListView from jumping around when current item is being played. (8043461d) * Shorten sample song and reduce bit rate to 32. (a8800696) 2013-08-16 Victor Thompson * Add autopilot test for going to the next track (35b3dbc4) 2013-08-11 Daniel Holm * HUD support. (c4b277fc) * Use new Unity/HUD actions (ae832308) 2013-08-07 Andrew Hayzen * - Added layer with a message for when the library is empty - Extra protection to getSong, trackClicked and onSourceChanged to make sure that a track actually exists. Fixes: https://bugs.launchpad.net/bugs/1206269. (f5d34691) 2013-08-02 Andrew Hayzen * - Added layer with a message for when the library is empty (694de260) 2013-08-02 Daniel Holm * Changed versioning. (ccf8fb2a) * Added settings to HUD; use same code for play pause in HUD as for nowplaying. (c8710dcc) 2013-08-01 Andrew Hayzen * - Fixes for autopilot. Fixes: https://bugs.launchpad.net/bugs/1204711. (624c55fe) * - Code cleanup (05d8ccab) * - Extra protection to getSong, trackClicked and onSourceChanged to make sure that a track actually exists (c9810f32) * - Fixes for autopilot (90fdfc67) 2013-07-30 Daniel Holm * Moved HUD code to central file, and added onTriggered. (da738cf5) 2013-07-30 Andrew Hayzen * - Subsections of Artist, Album and Playlist page are now correctly cleared - Worker can now clear the model. (8f0c40ad) * - trackQueue is now used for the queue, with currentIndex as the current position in the trackQueue - LibraryListModel can now saves the current query - addQueueFromModel has been added to build the trackQueue from a LibraryListModel - trackClicked has been refactored - updateMeta has been added to update the metadata of the current track and is trigged onSourceChange from the player - currentCover is now set from Library.hasCover so it works with all pages/models - playing-list.js has been removed as it is not used anymore - Various code cleanups. Fixes: https://bugs.launchpad.net/bugs/1200393, https://bugs.launchpad.net/bugs/1204293. (99a5cc93) 2013-07-29 Andrew Hayzen * - Subsections of Artist, Album and Playlist page are now correctly cleared (7c6072a2) * - Extra protection for addQueueFromModel - Fix of code comment (97192935) 2013-07-28 Andrew Hayzen * - Fix for when playing with shuffle disabled - Removal of old imports of PlayingList (bdccdb68) * - trackQueue is now used for the queue, with currentIndex as the current position in the trackQueue - LibraryListModel can now saves the current query - addQueueFromModel has been added to build the trackQueue from a LibraryListModel - trackClicked has been refactored - updateMeta has been added to update the metadata of the current track - currentCover is now set from Library.hasCover so it works with all pages/models - playing-list.js has been removed as it is not used anymore - Various code cleanups (3d2a32c6) * - Highlight now listens to onPlayingChange signal on all pages - PlaylistTracks now uses LibraryListModel.qml. (e72711f5) 2013-07-27 Andrew Hayzen * - Merge of trunk (6988bcb1) 2013-07-26 Andrew Hayzen * - PlaylistModelTracks and trackQueue now use LibraryListModel.qml - Added filterPlaylistTracks(playlist) to LibraryListModel.qml. (f4f1c0f3) * - Fix for playlist query (70ca626c) * - PlaylistModelTracks and trackQueue now use LibraryListModel.qml - Added filterPlaylistTracks(playlist) to LibraryListModel.qml (5a06f0c8) 2013-07-26 Victor Thompson * fix playlist/queue cover art icons; update playlist Listview icons. (a697f2d6) * Add python-mock dependency to autopilot package. Fixes: https://bugs.launchpad.net/bugs/1204768. (b8956b8c) 2013-07-25 Victor Thompson * Update commentary (27bf90f4) * Remove unnecessary conditional operator. (e05513cf) * Fix default cover art in playlist and queue (88b67f7b) 2013-07-26 Andrew Hayzen * - Fix so new hightlights use Style.qml (0df31662) 2013-07-25 Andrew Hayzen * Merge of trunk (a79b0d15) * - trackQueue now uses LibraryListModel - Highlighter added to trackQueue listview (be51582c) 2013-07-25 Victor Thompson * Add python-mock dependency to autopilot package. (153065de) 2013-07-24 Andrew Hayzen * - Style.qml now used to manage all the colours - UbuntuColors used in Style.qml where possible. (7c595e0f) 2013-07-24 mhall119 * Updated attribution in debian/copyright. (3da44453) * Updated with latest commits (6d066133) * Add individual contributors to debian/copyright (5f1aa7e0) 2013-07-24 Andrew Hayzen * - Style.qml now used to manage all the colours - UbuntuColors used in Style.qml where possible (0d8a61fd) * - Removal of unneeded code from highlight (68d28203) 2013-07-23 Victor Thompson * Fix part of queue and playlists (349a98a1) 2013-07-23 Andrew Hayzen * - Fix for highlighter in Playlist page (ef11e4bc) * - Highlight now listens to onPlayingChange signal on all pages - PlaylistTracks now uses LibraryListModel.qml (29d4576e) 2013-07-21 Victor Thompson * Autopilot test for pausing a track. Fixes: https://bugs.launchpad.net/bugs/1188803. (f6bd2eb2) * Cover art icon does not show in the ListView in Albums tab after selecting an album. (bdbf11d2) 2013-07-21 Daniel Holm * Show tracks in playlist; click on track to play it. Fixes: https://bugs.launchpad.net/bugs/1199716. (d72a8431) * Use trackClicked() instead. (e1eb85c7) 2013-07-20 Victor Thompson * Cover art icon does not show in the ListView in Albums view after selecting an album (6908dd05) 2013-07-20 Daniel Holm * Merge with trunk, small fixes. (b388ead2) * Changed version; changelog; small fixes. (375084f1) * Small changes. (7718b1e6) 2013-07-20 Victor Thompson * Resolution independent Now Playing control icons.; Resolution independent current item indicator (vertical white bar highlighting the current item).; Resolution independent small cover art icon/button in the bottom player controls. * Resolution independent track title/album/artist in bottom player controls.; Resolution independent track progress bar (now at very bottom) in bottom player controls. Fixes: https://bugs.launchpad.net/bugs/1200188. (fae0dbbb) 2013-07-20 Daniel Holm * Show tracks in queue in a page. (2d09f643) 2013-07-20 Victor Thompson * Initial albums tab implementation. (a18754f6) 2013-07-20 Daniel Holm * Changes to scheme upgrade. (5a506c41) 2013-07-20 Victor Thompson * Fix ordering of calls that affect whether cover art properties are set properly. Prevents segfault on startup. Fixes: https://bugs.launchpad.net/bugs/1203181. (54b5c234) * Tweak small cover art on play controls to be slightly larger (243cb8e4) 2013-07-19 Victor Thompson * Enlarge cover art on Albums tab and add title and artist info. (c77b902c) * Initial albums tab implementation. (a796233a) * Fix progress bar clipping off the bottom of the control icons (fe98ad23) * Fix ordering of calls that affect whether cover art properties are set properly. (6a25225c) * Resolution independent icons and layouts. (cd711e59) * Autopilot test for pausing a track (b88e9925) * Autopilot test for playing a track. Fixes: https://bugs.launchpad.net/bugs/1188802. (706598c9) * Autopilot test for playing a track (8456bb55) 2013-07-19 Andrew Hayzen * - Artists page now has popup menu - Code cleanups. (505df09d) * - Artists page now has popup menu - Code cleanups (568f1c64) 2013-07-19 Daniel Holm * Put queued tracks in a page just like tracks in playlists, instead of a dialog. (36b5923c) * Added a DB scheme update. (7f80e53f) 2013-07-19 Victor Thompson * Code cleanup; remove LibraryLoader.qml; reduce the duplicate cover art icons; remove unused icons. (7044c9f1) 2013-07-18 Victor Thompson * Code cleanup, remove LibraryLoader.qml, reduce the duplicate cover art icons, and remove unused icons (e691d166) * Code cleanup, remove LibraryLoader.qml and reduce the duplicate cover art icons (60c2caf2) * Autopilot play track test (7a02dbea) 2013-07-19 Andrew Hayzen * - Tracks are now selectable on the Artist page - getSong() is now independent of the model, so they can be hotswappable - trackClicked() has been added which starts a song from any page and sets up the dependencies of getSong() - Highlighter has been added to the Artist page. (038b3846) 2013-07-18 Daniel Holm * Moved queue from toolbar to Playlist. (e4f6da3b) 2013-07-18 Andrew Hayzen * - Fix so that pausing works by clicking on the playing track (69c23117) * - Tracks are selectable on the Artist page now - getSong() is now independent of the model, so they can be hotswappable - trackClicked() has been added which starts a song from any page and sets up the dependencies of getSong() - Highlighter has been added to the Artist view (d7712e0f) 2013-07-18 Victor Thompson * Add initial Suru gradient being used by the other Core apps. (ead5b50d) 2013-07-18 Daniel Holm * Resolved merge failure. (2baa810b) * Turned version number in desktop file to 1.0 (c37181c8) * Show tracks in playlists.; Provide new icons.; Added worker for adding rows to Library model (allows gui to respond while adding to the ListModel); Tracks are now sorted by Artist->Album->File; Text on rows in MusicTracks and MusicArtists now doesn't wrap. This means that if it is too long it now doesn't cover the row below.; Rows in MusicTracks and MusicArtists now expand to fit their parent, therefore expanding as the window expands.; Use resolution independent font sizes for text.; Create new playlists.; Edit name of existing playlists.; Remove playlists.; Add track to playlist.; Popover in track list. (ad28576c) * Save changes that I've forgot, before merge. (1637d42f) 2013-07-18 Victor Thompson * Fix removing a playlist (lp:1202243). Fixes: https://bugs.launchpad.net/bugs/1202243. (76b7f2d7) 2013-07-17 Victor Thompson * Fix removing a playlist. (6c9eaaff) * Make playlist popover text visible wile using new Suru gradient. (cd60ec70) * Make track popover text visible wile using new Suru gradient. (c3aba01f) * Make current iitem indicator white per new Lucas design (197f8c49) * Set Tab header to invisible when in Now Playing (63dfc582) * Initial Suru gradient. (7d46db9a) 2013-07-17 Andrew Hayzen * - Now Playing view items are all horizontally aligned - Fixes tags, progress bar and timecode being split from the other content when the app is maximised on the desktop - In now playing view previous, play and next buttons are now closer to the bottom of the screen - The position/duration label in now playing has been aligned to the right. (080fa6a2) 2013-07-18 Andrew Hayzen * - In now playing view previous, play and next buttons are now closer to the bottom of the screen - The position/duration label in now playing has been aligned to the right (516f7fad) 2013-07-17 Victor Thompson * Initial autopilot test for playing a track (7d5a8cd2) 2013-07-17 Andrew Hayzen * - Now Playing view items are all horizontally aligned - Fixes tags, progress bar and timecode being split from the other content when the app is maximised on the desktop (bdc8c88e) 2013-07-17 Daniel Kessel * add testcase for bug #1202323: Autopilot Testcase Needed: Test loading your library. Fixes: https://bugs.launchpad.net/bugs/1202323. (97f1efba) * add testcase for bug #1202323: Autopilot Testcase Needed: Test loading your library (21a845f6) 2013-07-17 Daniel Holm * Show tracks in playlist; click on track to play it. (4ab8dec6) * Updated changelog; version; added debug info of running version. (5f1ccba4) * Changed version number in .desktop to follow desktop file standard. (da6d7667) * Updated changelog and version. (698477db) * Move queue to Playlist tab. (e1efce46) * Updated changelog, version number and added a console output of the current version. (d616ea23) 2013-07-17 Victor Thompson * Use Queue toolbar icon that matches the other icons. Fixes: https://bugs.launchpad.net/bugs/1202081. (424e3099) * Use Queue toolbar icon that matches the other icons (7c48719c) 2013-07-17 lucasromerodb@gmail.com * Provide new icons. Fixes Bug #1199719. Fixes: https://bugs.launchpad.net/bugs/1199719. (c3ae8a2d) 2013-07-17 Victor Thompson * Put together some initial functionality for the Albums tab. Fixes: https://bugs.launchpad.net/bugs/1201702. (52e1355a) 2013-07-17 David Planella * Changed wording on Queue action to be consistent with the Add to playlist action. (21fe797e) * Changed wording on Queue action to be consistent with the Add to playlist action (009729f9) 2013-07-16 Victor Thompson * Start to implement the Artists tab. (8c2e83b2) 2013-07-16 Andrew Hayzen * - Added worker for adding rows to Library model (allows gui to respond while adding to the ListModel) - Tracks are now sorted by Artist->Album->File - Text on rows in MusicTracks and MusicArtists now doesn't wrap. This means that if it is too long it now doesn't cover the row below - Rows in MusicTracks and MusicArtists now expand to fit their parent, therefore expanding as the window expands. (209e19c7) 2013-07-16 Victor Thompson * Use resolution independent font sizes for text. Fixes: https://bugs.launchpad.net/bugs/1200188. (d9f1edb3) 2013-07-16 lucasromerodb@gmail.com * new-icons-some-links-edited-and-darkest-background (eb3bbc5e) 2013-07-15 Victor Thompson * Use resolution independent font sizes for text. (8ca13067) 2013-07-15 Andrew Hayzen * - Refactor of SQL query (19f8cf6a) * - Added worker for adding rows to Library model (allows gui respond slightly quicker) - Tracks are now sorted by Artist->Album->File - Text on rows in MusicTracks and MusicArtists now doesn't wrap. This means that if it is too long it now doesn't cover the row below - Rows in MusicTracks and MusicArtists now expand to fit their parent, therefore expanding as the window expands (98531a7b) 2013-07-15 Daniel Holm * Added playlist support. (123a14cc) * New default album icon for when album art is missing. (2112f4cc) * Resolved issue with buttons in queue being too far down. Fixes: https://bugs.launchpad.net/bugs/1199792. (071fd3ed) 2013-07-15 Andrew Hayzen * A limit has been introduced into the buffer to stop large memory allocations. (a15b67a8) * - Ability to seek on the Now Playing view. (e6f44410) 2013-07-15 Daniel Holm * Debug function that easily can be shut off. (6555a590) * Set a new, but still lower, height to queue dialog. (9485d637) * Made sure that only the new function is pushed into branch. (236e6fd2) 2013-07-14 Daniel Holm * Removed the back button since that merge is requested in another branch. (b7abe1bd) * Forgot to change back to default path. (bf57120e) * Updated version and changelog. (d3bcf712) * Add track to playlist dialog now works. (6cebe4d8) * Added popover to track list to be able to add track to playlist. (8ab685aa) 2013-07-14 Andrew Hayzen * - Removed handle for progress bar on main view as it is not selectable (b814c9ba) 2013-07-14 Daniel Holm * Creating, editing and showing playlists in tab now works. (30890077) 2013-07-12 Andrew Hayzen * - Code cleanups - Addition of some code comments (498c55e9) * - Ability to seek on the Now Playing view - Improved progress bars to allow for seeking (6197a085) * A limit has been introduced into the buffer to stop large memory allocations (ac084db9) * Performance tweaks so database is written in a single transaction. (f34b1649) 2013-07-12 Daniel Holm * Added a dialog to add playlists. Also, toolbar action for creating a new playlist should only be visible in Playlists tab. Fixes: https://bugs.launchpad.net/bugs/1198914. (f537f0c9) 2013-07-12 Andrew Hayzen * - Removed commented code - Added code comments for new code (71d234a0) 2013-07-11 Andrew Hayzen * Performance tweaks so database is written in a single transaction (01448a29) 2013-07-12 Daniel Holm * New default album icon for when album art is missing. (fb7eeddb) * Added a back button on track navigation. (b33539ec) 2013-07-11 Daniel Holm * Resolved issue with buttons in queue being too far down. (d3384fb2) * Changed version number and updated changelog. (8546fc03) * Removed playlist buttons from toolbars in tabs other then playlist. (8b441321) * Added a working dialog to add a playlist. (0276709e) 2013-07-10 Victor Thompson * Fix some of the toolbar issues when switching tabs and populate music library on every run of the app. Fixes Bug #1198773 and Bug #1193633. Fixes: https://bugs.launchpad.net/bugs/1193633, https://bugs.launchpad.net/bugs/1198773. (8de36f1c) 2013-07-09 Victor Thompson * Reset music folder when a previous version had a different path. (870a2f19) * Fix some of the toolbar issues when switching tabs and populate music library on every run of the app. (4299f509) 2013-07-09 Daniel Holm * Resolve bug #1198889 and added some other new icons by Lucas. Fixes: https://bugs.launchpad.net/bugs/1198889. (8e79f046) * Remove link to old settings icon; take back previous dir icon, and removed default-album icon. (4dc74de8) 2013-07-09 Victor Thompson * Fix the call to scrobble so when a track finishes the next track will play. Fixes: https://bugs.launchpad.net/bugs/1199196. (f7b2309f) 2013-07-08 Victor Thompson * Fix the call to scrobble (4f9ae5f9) 2013-07-08 Daniel Holm * Some new icons. Also resolve bug #1198889. (fe4503c7) 2013-07-08 David Planella * Do not mark MainView internal properties as translatable. Fixes: https://bugs.launchpad.net/bugs/1198895. (2de89d27) * Do not translate MainView properties (a902244f) 2013-07-04 Guenter Schwann * Have a central place for current played track data Use declarative code for showing that. (7f2b61ba) * Have a central place for current played track data Use declarative code for showing that (9d0c7c99) 2013-07-03 Guenter Schwann * Fix warnings, update to new Toolbar API. (bf0b048c) * More declarative, less imperative code. (296e9855) 2013-07-02 Guenter Schwann * More declarative, less imperative code (ef0aedf7) * Fix warnings, update to new Toolbar API (daf32b86) 2013-06-24 Victor Thompson * Add autopilot packaging. (929d1e58) 2013-06-21 Victor Thompson * Add autopilot packaging. (badca14b) * Changes:; Fix icons and images when cover art is not available. Fix issue with scrobble that prevented the next track from being played.; Place the current path at the bottom of the screen in the LibraryLoader so it is always visible. (4a96da19) 2013-06-20 Victor Thompson * for some reason extracting deb files do not like invalid email addresses. (183a9ed5) * Fix icons with no cover art, fix a scrobble issue that prevented the next track to be played, and fix LibraryLoader to have the current path at the bottom of the screen so it's always visible (cdbb519c) 2013-06-19 Daniel Holm * Deactivate developer reset button. (604b344a) * Deactivated reset button: (3a80d77f) * Added inital scrobble code, back to tabs, some design changes. (71defc46) * Merged with Victor: Populate music library works again. (d06c8ba7) 2013-06-18 Victor Thompson * Populate music library works again. (58b4ac87) 2013-06-18 Daniel Holm * Added changes to changelog. (29196050) * Commented out the request to last.fm so that we won't spam the API before the function is done. (ee079fc4) * Added reset button in settings; after meta data is reset, it creates a brand new db; playlist aaction in toolbar. (bf851c2a) * Small changes before merge into trunk. (8b52190f) 2013-06-17 Daniel Holm * More code for Last.fm; request functions; import playlists from last.fm (24e8b4d3) * Added scrobble file with needed functions and stuff. (2e2c9b83) * More changes. (7733fc47) 2013-06-16 Victor Thompson * Populate Artists and Albums tabs. This still needs work. (cf798091) 2013-06-17 Daniel Holm * actally fixed the code so that it runs again. (e6d51d73) * Merged Lucas 1 and 2 branch into 1. (8c3fb7a5) 2013-06-16 Daniel Holm * More inital scrobble code. (77ffd04b) 2013-06-16 Victor Thompson * Move player controls and now playing page out of each tab and into the main view. Do assorted cleanup. (3fac4484) 2013-06-15 Daniel Holm * Beginning of Lucas' design ideas (0.04); back to tabs and start of scobble (1daa814c) 2013-06-15 Victor Thompson * Change folderlistmodel plugin dependency. Fixes lp:1191363. Fixes: https://bugs.launchpad.net/bugs/1191363. (942b480b) * Change folderlistmodel plugin dependency. Fixes #1191363. (d9527613) 2013-06-12 Victor Thompson * Changed the following:; Added a fix for when selecting the user's Music folder is done more than once while running the app * Added a dependency on qtdeclarative5-nemo-qml-plugins-folderlistmodel. (88241bbd) * Reverse order of songs listed (cb702715) 2013-06-11 Victor Thompson * Small fix for updating the Music directory subsequent times while running the app and depend on qtdeclarative5-nemo-qml-plugins-folderlistmodel. (3cd16824) * Renames app back to music-app, from ubuntu-music-app. (b2edac9c) 2013-06-09 Victor Thompson * Rename application name to music-app. (06a6bf08) * Added the following:; New LibraryLoader page to select music folder via MusicSettings; LibraryLoader reads file metadata via a nemo FolderListModel in a Repeater element * New LibraryListModel reads metadata from the LocalStorage Library and presents the data to the ap. Removed "About" from the MusicSettings dialog. (33e10a8e) * Fix the icon location in the .desktop file and simplify the install file for future maintainance reasons. (88ae2653) 2013-06-08 Victor Thompson * small change to display track title and artist/album to the length of the progress bar in the now playing page (b8b282b0) * Make use of the changes to lp:~vthompson/music-app/plugin for isRecursive (not implemented and readsMediaMetadata (109d86c7) * Remove About from Settings and add copyright to all files. (ef70e3a2) 2013-06-07 Victor Thompson * Ititial work to populate and use the music library in Local Storage. (f4ebfd00) 2013-06-05 Victor Thompson * Allow user to swipe the large cover art on the now playing page to the right to go back a track or swipe left to go forward a track. (de5b554d) 2013-06-05 Daniel Holm * I've changed name to ubuntu-music-app and also did some changes to debian install file so that users might actually start the app from command or desktop. (67554a5a) * Changed name of desktop file. (2ce18042) * Change package name in changelog as well. (1696bf0d) 2013-06-05 Victor Thompson * Merged my existing lp:ubuntu-music-app code into the trunk. Replaced current UI; Replaced playback functionality and managment; Added some UI (that wasn't in my upstream) so we can do context switching from a tracks view to a playlist view or artists/albums.; Fixed shuffling behavoir and retrieving/setting of the shuffle parameter setting; Currently the Queue will add items on "press and hold", but the tracks are not playable. As we move forward, the Queue should just be another ListView. The same will go for playlists. (a1d0ab48) 2013-06-04 Victor Thompson * Added a space... (20a37528) * Allow user to swipe the large cover art on the now playing page to the right to go back a track or swipe left to go forward a track. (3ba480cc) 2013-06-04 Daniel Holm * Changed name to ubuntu-music-app; added binary to /usr/bin so installed package actally are able to run the app. (319c1108) 2013-06-04 Victor Thompson * Small change to toggle play indicator when forward or back is selected. (260a042c) 2013-06-04 Daniel Holm * Edit changelog once more. (d9beb7c9) * Edit changelog again. (076e478b) * Removed NowPlaying.qml and edited changelog. (141191f2) 2013-06-04 Victor Thompson * Tweaked artist/album display on now playing. (b08abb72) * Tweaked some icon spacing and removed NowPlaying.qml. For now it is duplicate logic. (837d6ace) * Did some file management. Removed FirstRun.qml and Toolbar.qml. (63daaa7f) 2013-06-03 Victor Thompson * Add copyright and front matter to NowPlaying. (04e28e8b) * Initial commit of franken-merge branch. (0d9285c2) 2013-06-03 mhall119 * Rename packages and install location to music-app. (4aa0e879) * Rename files to match new package name and debian/install (94bc5dd2) 2013-05-31 mhall119 * Rename packages and install location to music-app (e92a7131) 2013-05-31 Daniel Holm * Some clean up; inital shuffle support; loaded tracks gets queued. (9a8c4108) * Added dialog so that user can set the music dir manually; disabled stuff that does not yet work. (bfaa8167) 2013-05-29 Daniel Holm * Merged add-packaging branch (d129614d) 2013-05-23 mhall119 * Add packaging (ea34db5a) 2013-05-20 Daniel Holm * Changes to support the new meta data database. (14a8ec8a) * Fixed bug with music dir resetting when unchanged; added desktop files; changes to meta database; changed to functions. (d81ca96a) * Added database for meta data and some code for it. Changed storage to settings to have seperate databases. (7b1cba02) 2013-05-17 Daniel Holm * Added setting and database to save users music dir. Now uses that setting, too. (73147253) * Begin transition to new folderlistmodel and added a reusable toolbar. (cdf1dcad) 2013-05-15 Daniel Holm * Created a updateUI() function to call; Almost there on playing next track after current ends; Playin tab name now show current tracks title. (c08781c8) 2013-05-14 Daniel Holm * Merged add-bzrignore branch. (9bdf43d3) * Ready to merge. Remove unused files. (7534c51f) 2013-05-14 Nekhelesh Ramananthan * Removed .qmlproject.user file and added bzrignore (9b178532) 2013-05-13 Daniel Holm * Added way to play next track automatically. Started on progressbar. (061ab54e) * Added functions to get track data, worked on previous track function and start of database. (a6516d1c) 2013-05-11 Daniel Holm * Next track press now plays next song in queue. (649c0532) * Play, pause function is now working properly. (b4b39d00) 2013-05-10 Daniel Holm * Queue list added. Some other stuff. (8a34725e) 2013-05-08 Daniel Holm * Trying to resolve issue with dialogs not working. (5a627d0a) * Tracks tab now lists set dirs music tracks; plays single file; paus and resume works; show track and artist of current trac. code changes. (8c32d0a3) 2013-03-07 Daniel Holm * Added some icons, demo of content in album, artist and tracks. Changed size of settings to the same as musicapp. (62079f36) * Added a theme file, some new stuff to settings and same toolbar to all tabs. (8e159639) * Added a progressbar for placeholding, also a new settings page with some demo stuff. (117f0bfb) 2013-03-04 Daniel Holm * Initial commit.m (d98990c5) lomiri-music-app-v3.0.3/LICENSE.txt000066400000000000000000001045131451274533600167330ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . lomiri-music-app-v3.0.3/README.md000066400000000000000000000062121451274533600163640ustar00rootroot00000000000000# Lomiri Music App Lomiri Music App is the official music player app for [Ubuntu Touch](https://ubuntu-touch.io/). We follow an open source model where the code is available to anyone to branch and hack on.   [![OpenStore](https://open-store.io/badges/en_US.png)](https://open-store.io/app/com.ubuntu.music) ## Ubuntu Touch This app is a core app for the [Ubuntu Touch](https://ubuntu-touch.io/) mobile OS developed by [UBports](https://ubports.com/). ### Contributing When contributing to this repository, feel free to first discuss the change you wish to make via issue, email, Matrix ( #ubcd:matrix.org ), or any other method with the owners of this repository before making a change. Please note we have a [code of conduct](https://ubports.com/code-of-conduct), please follow it in all your interactions with the project. ### Reporting Bugs and Requesting Features Bugs and feature requests can be reported via our [bug tracker](https://gitlab.com/ubports/development/apps/lomiri-music-app/-/issues). ### Translating You can easily contribute to the localization of this project (i.e. the translation into your language) by visiting (and signing up with) the [Hosted Weblate service](https://hosted.weblate.org/projects/lomiri/lomiri-music-app) The localization platform of this project is sponsored by Hosted Weblate via their free hosting plan for Libre and Open Source Projects. ### Contributing code #### Building with clickable The easiest way to build this app is using clickable by running the command: ``` clickable ``` See [clickable documentation](https://clickable-ut.dev/en/dev/index.html) for details. #### Building and running on Desktop Building and running the Ubuntu Music App on desktop is quite simple with clickable: ``` clickable desktop ``` Debugging on the Desktop is recommended. #### Code Style We are trying to use a common code style throughout the code base to maintain uniformity and improve code clarity. Listed below are the code styles guides that will be followed based on the language used. * [QML](http://qt-project.org/doc/qt-5/qml-codingconventions.html) * [JS, C++](https://google.github.io/styleguide/cppguide.html) * Python - Code should follow PEP8 and Flake regulations Note: In the QML code convention, ignore the Javascript code section guidelines. So the sections that should be taken into account in the QML conventions are QML Object Declarations, Grouped Properties and Lists. #### Prerequisites to approving a Merge Request (MR) Over time, it has been found that insufficient testing by reviewers sometimes leads to music app not buildable due to manifest errors, or translation pot file not updated. As such, please follow the checklist below before top-approving a MR. **Checklist** * Did you perform an exploratory manual test run of your code change and any related functionality? * Was the copyright years updated if necessary? The above checklist is more of a guideline to help music app stay buildable, stable and up to date. ## Donating If you love UBports and it's apps please consider dontating to the [UBports Foundation](https://ubports.com/donate). Thanks in advance for your generous donations. lomiri-music-app-v3.0.3/app/000077500000000000000000000000001451274533600156645ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/CMakeLists.txt000066400000000000000000000004541451274533600204270ustar00rootroot00000000000000add_subdirectory(components) add_subdirectory(graphics) add_subdirectory(logic) add_subdirectory(ui) # make the qml files visible on qtcreator file(GLOB APP_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml *.js *.png *.js *.json) add_custom_target(music_ubports_APP_Files ALL SOURCES ${APP_FILES}) lomiri-music-app-v3.0.3/app/components/000077500000000000000000000000001451274533600200515ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/BlurredBackground.qml000066400000000000000000000050031451274533600241610ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import QtGraphicalEffects 1.0 // Blurred background Item { width: parent.width property string art // need to expose color so sidebar can set its own property string color: "black" // dark layer Rectangle { anchors { fill: parent } color: parent.color } // the album art Image { id: backgroundImage anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter asynchronous: true fillMode: Image.PreserveAspectCrop height: parent.height source: art // this has to be fixed for the default cover art to work - cant find in this dir // TODO: This should be investigated once http://pad.lv/1391368 // is resolved. Once it is, these can either be set to // "height" and "width" or a property exposed via the // SDK or Thumbnailer to avoid a regression caused by // these hardcoded values changing in the Thumbnailer. // 512 is size of the "xlarge" thumbnails in pixels. sourceSize.height: 512 sourceSize.width: 512 visible: false width: Math.max(parent.height, parent.width) } // the blur FastBlur { id: backgroundBlur anchors.fill: backgroundImage source: backgroundImage radius: units.dp(42) opacity: 0.2 } onArtChanged: { // TODO: This is a work around for LP:1261078 and LP:1306845. Ideally, // there should be a better way of getting the blur to repaint backgroundImage.source = art backgroundBlur.source = null backgroundBlur.source = backgroundImage } } lomiri-music-app-v3.0.3/app/components/BlurredHeader.qml000066400000000000000000000042221451274533600232740ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015 * Andrew Hayzen * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Item { width: parent.width property alias bottomColumn: bottomColumnLoader.sourceComponent property alias coverSources: coversImage.covers property alias rightColumn: rightColumnLoader.sourceComponent BlurredBackground { id: blurredBackground height: parent.height art: coversImage.firstSource } CoverGrid { id: coversImage anchors { bottomMargin: units.gu(2) left: parent.left leftMargin: units.gu(2) rightMargin: units.gu(2) top: parent.top topMargin: units.gu(3) } size: parent.width > units.gu(60) ? units.gu(27.5) : (parent.width - units.gu(5)) / 2 } Loader { id: rightColumnLoader anchors { bottom: coversImage.bottom left: coversImage.right leftMargin: units.gu(2) } } Loader { id: bottomColumnLoader anchors { left: parent.width > units.gu(60) ? coversImage.right : coversImage.left leftMargin: parent.width > units.gu(60) ? units.gu(2) : units.gu(0) right: parent.right rightMargin: parent.width > units.gu(60) ? units.gu(0) : units.gu(2) top: parent.width > units.gu(60) ? coversImage.top : coversImage.bottom topMargin: parent.width > units.gu(60) ? units.gu(0) : units.gu(1) } } } lomiri-music-app-v3.0.3/app/components/CMakeLists.txt000066400000000000000000000006651451274533600226200ustar00rootroot00000000000000add_subdirectory(Delegates) add_subdirectory(Dialog) add_subdirectory(HeadState) add_subdirectory(Helpers) add_subdirectory(Flickables) add_subdirectory(ListItemActions) add_subdirectory(ViewButton) add_subdirectory(Walkthrough) # make the qml files visible on qtcreator file(GLOB COMPONENTS_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_COMPONENTS_QMLFiles ALL SOURCES ${COMPONENTS_QML_FILES}) lomiri-music-app-v3.0.3/app/components/CoverGrid.qml000066400000000000000000000075131451274533600224560ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Nekhelesh Ramananthan * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Item { id: coverGrid height: size width: size // Property (array) to store the cover images property var covers // Property to set the size of the cover image property int size // Property to determine if the fallback art should be used property bool useFallbackArt: false property string firstSource onCoversChanged: { if (covers !== undefined) { while (covers.length > 4) { // remove any covers after 4 covers.pop() } } } // Flow of the cover arts in either 1, 1x1, 2x1, 2x2 Flow { id: imageRow anchors { fill: parent } Repeater { id: repeat model: coverGrid.covers.length === 0 ? 1 : coverGrid.covers.length delegate: Image { asynchronous: true fillMode: Image.PreserveAspectCrop height: coverGrid.size / (coverGrid.covers.length > 1 ? 2 : 1) width: coverGrid.size / (coverGrid.covers.length > 2 && !(coverGrid.covers.length === 3 && index === 2) ? 2 : 1) source: coverGrid.covers.length !== 0 && coverGrid.covers[index] !== "" && coverGrid.covers[index] !== undefined && ((coverGrid.covers[index].useFallbackArt !== undefined && !coverGrid.covers[index].useFallbackArt) || !useFallbackArt) ? (coverGrid.covers[index].art !== undefined ? coverGrid.covers[index].art : "image://albumart/artist=" + coverGrid.covers[index].author + "&album=" + coverGrid.covers[index].album) : Qt.resolvedUrl("../graphics/music-app.svg") // TODO: This should be investigated once http://pad.lv/1391368 // is resolved. Once it is, these can either be set to // "height" and "width" or a property exposed via the // SDK or Thumbnailer to avoid a regression caused by // these hardcoded values changing in the Thumbnailer. // 512 is size of the "xlarge" thumbnails in pixels. sourceSize.height: 512 sourceSize.width: 512 onStatusChanged: { if (status === Image.Error) { useFallbackArt = true // If this coverGrid is set to the Player's currentMeta, // then override the player's flag to show the fallback art if (coverGrid.covers[index].useFallbackArt !== undefined) { coverGrid.covers[index].useFallbackArt = true } } if (status === Image.Ready && index === 0) { firstSource = source } } opacity: status == Image.Ready ? 1.0 : 0.0 Behavior on opacity { LomiriNumberAnimation {} } } } } } lomiri-music-app-v3.0.3/app/components/Delegates/000077500000000000000000000000001451274533600217465ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/Delegates/ActionDelegate.qml000066400000000000000000000025551451274533600253400ustar00rootroot00000000000000/* * Copyright (C) 2015 * Andrew Hayzen * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Rectangle { color: currentColor width: height Icon { anchors { centerIn: parent } objectName: action.objectName color: pressed ? theme.palette.normal.focus : theme.palette.normal.foregroundText name: action.iconName height: units.gu(3) width: units.gu(3) } Rectangle { // FIXME: pad.lv/1507339 Workaround for gap between end of listitem and first action anchors { bottom: parent.bottom right: parent.left top: parent.top } color: currentColor width: units.gu(0.5) } } lomiri-music-app-v3.0.3/app/components/Delegates/CMakeLists.txt000066400000000000000000000003141451274533600245040ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB DELEGATES_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_DELEGATES_QMLFiles ALL SOURCES ${DELEGATES_QML_FILES}) lomiri-music-app-v3.0.3/app/components/Delegates/Card.qml000066400000000000000000000071701451274533600233370ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015, 2016 * Andrew Hayzen * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import "../" Item { id: card height: parent.parent.cellHeight width: parent.parent.cellWidth property alias coverSources: coverGrid.covers property alias primaryText: primaryLabel.text property alias secondaryText: secondaryLabel.text property alias secondaryTextVisible: secondaryLabel.visible signal clicked(var mouse) signal pressAndHold(var mouse) /* Animations */ Behavior on height { NumberAnimation { duration: LomiriAnimation.FastDuration } } Behavior on width { NumberAnimation { duration: LomiriAnimation.FastDuration } } /* Background for card */ Rectangle { id: bg anchors { fill: parent margins: units.gu(1) } color: "#2c2c34" } /* Column containing image and labels */ Column { id: cardColumn anchors { fill: bg } spacing: units.gu(0.5) CoverGrid { id: coverGrid size: parent.width } Item { height: units.gu(.5) width: units.gu(1) } // Labels are ~1.5GU per line // We are limiting to 3 lines long // with the preference on the first label Label { id: primaryLabel anchors { left: parent.left leftMargin: units.gu(1) right: parent.right rightMargin: units.gu(1) } color: "#FFF" elide: Text.ElideRight fontSize: "small" opacity: 1.0 maximumLineCount: 2 wrapMode: Text.WrapAtWordBoundaryOrAnywhere } Label { id: secondaryLabel anchors { left: parent.left leftMargin: units.gu(1) right: parent.right rightMargin: units.gu(1) } color: "#FFF" elide: Text.ElideRight fontSize: "small" // Allow wrapping of 2 lines unless primary has been wrapped maximumLineCount: primaryLabel.lineCount > 1 ? 1 : 2 opacity: 0.4 wrapMode: Text.WrapAtWordBoundaryOrAnywhere } Item { height: units.gu(1) + cardColumn.spacing width: units.gu(1) } } /* Overlay for when card is pressed */ Rectangle { id: overlay anchors { fill: bg } color: "#000" opacity: cardMouseArea.pressed ? 0.3 : 0 Behavior on opacity { NumberAnimation { duration: LomiriAnimation.FastDuration } } } /* Capture mouse events */ MouseArea { id: cardMouseArea anchors { fill: parent } onClicked: card.clicked(mouse) onPressAndHold: card.pressAndHold(mouse) } } lomiri-music-app-v3.0.3/app/components/Delegates/MusicListItem.qml000066400000000000000000000066261451274533600252260ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Nekhelesh Ramananthan * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import "../" ListItem { color: styleMusic.mainView.backgroundColor height: listItemLayout.height highlightColor: Qt.lighter(color, 1.2) // Store the currentColor so that actions can bind to it property var currentColor: highlighted ? highlightColor : color property alias imageSource: image.imageSource property bool multiselectable: false property bool pressAndHoldEnabled: true property bool reorderable: false property alias subtitle: listItemLayout.subtitle property alias title: listItemLayout.title signal itemClicked() onClicked: { if (selectMode) { selected = !selected; } else { itemClicked() } } onPressAndHold: { if (pressAndHoldEnabled) { if (reorderable) { ListView.view.ViewItems.dragMode = !ListView.view.ViewItems.dragMode } if (multiselectable) { ListView.view.ViewItems.selectMode = !ListView.view.ViewItems.selectMode } } } divider { visible: false } ListItemLayout { id: listItemLayout padding.bottom: image.visible ? units.gu(.5) : units.gu(1.5) padding.top: image.visible ? units.gu(.5) : units.gu(1.5) subtitle.color: styleMusic.common.subtitle subtitle.fontSize: "x-small" subtitle.wrapMode: Text.WrapAnywhere title.color: styleMusic.common.music title.fontSize: "small" title.wrapMode: Text.WrapAnywhere Image { id: image anchors { verticalCenter: parent.verticalCenter } asynchronous: true fillMode: Image.PreserveAspectCrop height: width SlotsLayout.position: SlotsLayout.Leading source: { if (imageSource !== undefined && imageSource !== "") { if (imageSource.art !== undefined) { imageSource.art } else { "image://albumart/artist=" + imageSource.author + "&album=" + imageSource.album } } else { "" } } sourceSize.height: height sourceSize.width: width width: units.gu(6) visible: imageSource !== undefined onStatusChanged: { if (status === Image.Error) { source = Qt.resolvedUrl("../../graphics/music-app.svg") } } property var imageSource } } } lomiri-music-app-v3.0.3/app/components/Dialog/000077500000000000000000000000001451274533600212505ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/Dialog/CMakeLists.txt000066400000000000000000000003031451274533600240040ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB DIALOG_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_DIALOG_QMLFiles ALL SOURCES ${DIALOG_QML_FILES}) lomiri-music-app-v3.0.3/app/components/Dialog/ContentHubErrorDialog.qml000066400000000000000000000021431451274533600261660ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 Dialog { id: dialogContentHubError property alias errorText: errorLabel.text Label { id: errorLabel color: styleMusic.common.black } Button { text: i18n.tr("OK") onClicked: PopupUtils.close(dialogContentHubError) } } lomiri-music-app-v3.0.3/app/components/Dialog/ContentHubNotFoundDialog.qml000066400000000000000000000025751451274533600266420ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 Dialog { id: dialogContentHubNotFound Label { color: styleMusic.common.black text: i18n.tr("Imported file not found") } Button { text: i18n.tr("Wait") onClicked: { PopupUtils.close(dialogContentHubNotFound) contentHubWaitForFile.dialog = PopupUtils.open(Qt.resolvedUrl("ContentHubWaitDialog.qml"), mainView) contentHubWaitForFile.start(); } } Button { text: i18n.tr("Cancel") onClicked: PopupUtils.close(dialogContentHubNotFound) } } lomiri-music-app-v3.0.3/app/components/Dialog/ContentHubWaitDialog.qml000066400000000000000000000022041451274533600257770ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 import "../" Dialog { id: dialogContentHubWait LoadingSpinnerComponent { anchors { horizontalCenter: parent.horizontalCenter top: undefined margins: units.gu(0) } loadingText: i18n.tr("Waiting for file(s)...") visible: true } } lomiri-music-app-v3.0.3/app/components/Dialog/EditPlaylistDialog.qml000066400000000000000000000052051451274533600255140ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 import QtQuick.LocalStorage 2.0 import "../../logic/meta-database.js" as Library import "../../logic/playlists.js" as Playlists Dialog { id: dialogEditPlaylist // TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist title: i18n.tr("Rename playlist") property string oldPlaylistName: "" TextField { id: playlistName inputMethodHints: Qt.ImhNoPredictiveText placeholderText: i18n.tr("Enter playlist name") } Label { id: editplaylistoutput color: "red" visible: false } Button { text: i18n.tr("Change") color: styleMusic.dialog.confirmButtonColor onClicked: { editplaylistoutput.visible = true if (playlistName.text.length > 0) { // make sure something is acually inputed console.debug("Debug: User changed name from "+oldPlaylistName+" to "+playlistName.text) if (Playlists.renamePlaylist(oldPlaylistName, playlistName.text) === true) { if (Library.recentContainsPlaylist(oldPlaylistName)) { Library.recentRenamePlaylist(oldPlaylistName, playlistName.text) } line2 = playlistName.text playlistChangedHelper() // update recent/playlist models PopupUtils.close(dialogEditPlaylist) } else { editplaylistoutput.text = i18n.tr("Playlist already exists") } } else { editplaylistoutput.text = i18n.tr("Please type in a name.") } } } Button { text: i18n.tr("Cancel") onClicked: PopupUtils.close(dialogEditPlaylist) } Component.onCompleted: playlistName.forceActiveFocus() } lomiri-music-app-v3.0.3/app/components/Dialog/NewPlaylistDialog.qml000066400000000000000000000051351451274533600253620ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 import QtQuick.LocalStorage 2.0 import "../../logic/playlists.js" as Playlists Dialog { id: dialogNewPlaylist objectName: "dialogNewPlaylist" title: i18n.tr("New playlist") TextField { id: playlistName objectName: "playlistNameTextField" placeholderText: i18n.tr("Enter playlist name") inputMethodHints: Qt.ImhNoPredictiveText } Label { id: newplaylistoutput color: "red" visible: false // should only be visible when an error is made. } Button { text: i18n.tr("Create") color: styleMusic.dialog.confirmButtonColor objectName: "newPlaylistDialogCreateButton" onClicked: { newplaylistoutput.visible = false // make sure its hidden now if there was an error last time if (playlistName.text.length > 0) { // make sure something is acually inputed if (Playlists.addPlaylist(playlistName.text) === true) { console.debug("Debug: User created a new playlist named: ", playlistName.text) playlistModel.filterPlaylists(); // reload model PopupUtils.close(dialogNewPlaylist) } else { console.debug("Debug: Playlist already exists") newplaylistoutput.visible = true newplaylistoutput.text = i18n.tr("Playlist already exists") } } else { newplaylistoutput.visible = true newplaylistoutput.text = i18n.tr("Please type in a name.") } } } Button { text: i18n.tr("Cancel") onClicked: PopupUtils.close(dialogNewPlaylist) } Component.onCompleted: playlistName.forceActiveFocus() } lomiri-music-app-v3.0.3/app/components/Dialog/RemovePlaylistDialog.qml000066400000000000000000000042331451274533600260640ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 import QtQuick.LocalStorage 2.0 import "../../logic/meta-database.js" as Library import "../../logic/playlists.js" as Playlists Dialog { id: dialogRemovePlaylist objectName: "dialogRemovePlaylist" // TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist title: i18n.tr("Permanently delete playlist?") text: "("+i18n.tr("This cannot be undone")+")" property string oldPlaylistName Button { text: i18n.tr("Remove") color: styleMusic.dialog.confirmRemoveButtonColor objectName: "removePlaylistDialogRemoveButton" onClicked: { // removing playlist Playlists.removePlaylist(dialogRemovePlaylist.oldPlaylistName) if (Library.recentContainsPlaylist(dialogRemovePlaylist.oldPlaylistName)) { Library.recentRemovePlaylist(dialogRemovePlaylist.oldPlaylistName) } playlistChangedHelper(true) // update recent/playlist models songStackPage.page = undefined PopupUtils.close(dialogRemovePlaylist) // need to destroy the dialog before popping fixes pad.lv/1428450 dialogRemovePlaylist.destroy() mainPageStack.goBack() } } Button { text: i18n.tr("Cancel") onClicked: PopupUtils.close(dialogRemovePlaylist) } } lomiri-music-app-v3.0.3/app/components/Flickables/000077500000000000000000000000001451274533600221105ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/Flickables/CMakeLists.txt000066400000000000000000000003171451274533600246510ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB FLICKABLES_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_FLICKABLES_QMLFiles ALL SOURCES ${FLICKABLES_QML_FILES}) lomiri-music-app-v3.0.3/app/components/Flickables/MultiSelectListView.qml000066400000000000000000000046721451274533600265550ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 MusicListView { // Can't access ViewItems externally // so we need to expose if in multiselect mode for the header states state: ViewItems.selectMode ? "multiselectable" : "normal" // Describes if model.move() should be called when a list item drag is completed // this is not required on the Queue as onReorder performs playlist.moveItem() property bool autoModelMove: true signal clearSelection() signal closeSelection() signal reorder(int from, int to) signal selectAll() onClearSelection: ViewItems.selectedIndices = [] onCloseSelection: { clearSelection() ViewItems.selectMode = false ViewItems.dragMode = false } onSelectAll: { var tmp = [] for (var i=0; i < model.count; i++) { tmp.push(i) } ViewItems.selectedIndices = tmp } // Can't access ViewItems externally // so for the header actions we need to expose the selectedIndices function getSelectedIndices() { var indicies = ViewItems.selectedIndices.slice(); indicies.sort(); // ensure indicies are in-order return indicies; } ViewItems.selectMode: false ViewItems.dragMode: false ViewItems.onDragUpdated: { // Only update the model when the listitem is dropped, not 'live' if (event.status == ListItemDrag.Moving) { event.accept = false } else if (event.status == ListItemDrag.Dropped) { if (autoModelMove) { // check the model should auto move model.move(event.from, event.to, 1); } reorder(event.from, event.to) } } } lomiri-music-app-v3.0.3/app/components/Flickables/MusicGridView.qml000066400000000000000000000036421451274533600253510ustar00rootroot00000000000000/* * Copyright (C) 2015, 2016 * Andrew Hayzen * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import QtQuick.Window 2.4 import Lomiri.Components 1.3 GridView { id: gridView anchors { bottomMargin: units.gu(1) fill: parent leftMargin: units.gu(1) rightMargin: units.gu(1) } cellHeight: cellSize + heightOffset cellWidth: cellSize + widthOffset displaced: Transition { NumberAnimation { duration: LomiriAnimation.FastDuration properties: "x,y" } } populate: Transition { NumberAnimation { duration: LomiriAnimation.FastDuration properties: "x,y" } } readonly property int columns: parseInt(width / itemWidth) || 1 // never drop to 0 readonly property int cellSize: width / columns property int itemWidth: units.gu(15) property int heightOffset: 0 property int widthOffset: 0 Component.onCompleted: { // "Screen.devicePixelRatio === 1" means scaling is managed by the OS, in that case tune scroll velocity, otherwise let Qt do the job if (Screen.devicePixelRatio === 1 ) { var scaleFactor = units.gridUnit / 8; maximumFlickVelocity = maximumFlickVelocity * scaleFactor; flickDeceleration = flickDeceleration * scaleFactor; } } } lomiri-music-app-v3.0.3/app/components/Flickables/MusicListView.qml000066400000000000000000000023661451274533600254010ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import QtQuick.Window 2.4 import Lomiri.Components 1.3 ListView { Component.onCompleted: { // "Screen.devicePixelRatio === 1" means scaling is managed by the OS, in that case tune scroll velocity, otherwise let Qt do the job if (Screen.devicePixelRatio === 1 ) { var scaleFactor = units.gridUnit / 8; maximumFlickVelocity = maximumFlickVelocity * scaleFactor; flickDeceleration = flickDeceleration * scaleFactor; } } } lomiri-music-app-v3.0.3/app/components/HeadState/000077500000000000000000000000001451274533600217135ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/HeadState/CMakeLists.txt000066400000000000000000000003171451274533600244540ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB HEAD_STATE_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_HEAD_STATE_QMLFiles ALL SOURCES ${HEAD_STATE_QML_FILES}) lomiri-music-app-v3.0.3/app/components/HeadState/EmptyHeadState.qml000066400000000000000000000040611451274533600253100ustar00rootroot00000000000000/* * Copyright (C) 2016 * Andrew Hayzen * Victor Thompson * Copyright: 2020 UBports * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 State { name: "default" property PageHeader thisHeader: PageHeader { flickable: thisPage.flickable leadingActionBar { actions: { if (mainPageStack.currentPage === tabs) { tabs.tabActions } else if (mainPageStack.depth > 1) { backActionComponent } else { null } } objectName: "tabsLeadingActionBar" } title: thisPage.title visible: thisPage.state === "default" Action { id: backActionComponent iconName: "back" objectName: "backAction" onTriggered: mainPageStack.pop() } trailingActionBar { actions: [ Action { id: settingsActionComponent iconName: "settings" onTriggered: mainPageStack.push(Qt.resolvedUrl("../../ui/SettingsPage.qml")) } ] } StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } } property Item thisPage PropertyChanges { target: thisPage header: thisHeader } } lomiri-music-app-v3.0.3/app/components/HeadState/MultiSelectHeadState.qml000066400000000000000000000103221451274533600264410ustar00rootroot00000000000000/* * Copyright (C) 2015, 2016 * Andrew Hayzen * Victor Thompson * Copyright: 2020 UBports * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import "../Flickables" State { name: "selection" property bool addToQueue: true property MultiSelectListView listview property bool removable: false property PageHeader thisHeader: PageHeader { id: selectionState flickable: thisPage.flickable leadingActionBar { actions: [ Action { text: i18n.tr("Cancel selection") iconName: "back" onTriggered: listview.closeSelection() } ] } title: thisPage.title trailingActionBar { actions: [ Action { iconName: listview.getSelectedIndices().length === listview.model.count ? "select-none" : "select" text: i18n.tr("Select All") onTriggered: { if (listview.getSelectedIndices().length === listview.model.count) { listview.clearSelection() } else { listview.selectAll() } } }, Action { iconName: "add-to-playlist" text: i18n.tr("Add to playlist") visible: listview !== null ? listview.getSelectedIndices().length > 0 : false onTriggered: { var items = [] var indicies = listview.getSelectedIndices(); for (var i=0; i < indicies.length; i++) { items.push(makeDict(listview.model.get(indicies[i], listview.model.RoleModelData))); } mainPageStack.push(Qt.resolvedUrl("../../ui/AddToPlaylist.qml"), {"chosenElements": items}) listview.closeSelection() } }, Action { iconName: "add" text: i18n.tr("Add to queue") visible: listview !== null ? (listview.getSelectedIndices().length > 0) && addToQueue: false onTriggered: { var items = []; var indicies = listview.getSelectedIndices(); for (var i=0; i < indicies.length; i++) { items.push(Qt.resolvedUrl(listview.model.get(indicies[i], listview.model.RoleModelData).filename)); } player.mediaPlayer.playlist.addItems(items); listview.closeSelection() } }, Action { iconName: "delete" text: i18n.tr("Delete") visible: listview !== null ? (listview.getSelectedIndices().length > 0) && removable : false onTriggered: { removed(listview.getSelectedIndices()) listview.closeSelection() } } ] } visible: thisPage.state === "selection" StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } } property Item thisPage signal removed(var selectedIndices) PropertyChanges { target: thisPage header: thisHeader } } lomiri-music-app-v3.0.3/app/components/HeadState/PlaylistHeadState.qml000066400000000000000000000056461451274533600260250ustar00rootroot00000000000000/* * Copyright (C) 2016 * Andrew Hayzen * Victor Thompson * Copyright: 2020 UBports * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 State { id: playlistHeadState name: "playlist" property PageHeader thisHeader: PageHeader { flickable: thisPage.flickable leadingActionBar { actions: { if (mainPageStack.currentPage === tabs) { tabs.tabActions } else if (mainPageStack.depth > 1) { backActionComponent } else { null } } objectName: "tabsLeadingActionBar" } title: thisPage.title trailingActionBar { actions: [ Action { id: settingsActionComponent iconName: "settings" onTriggered: mainPageStack.push(Qt.resolvedUrl("../../ui/SettingsPage.qml")) }, Action { objectName: "editPlaylist" iconName: "edit" onTriggered: { thisPage.currentDialog = PopupUtils.open(Qt.resolvedUrl("../Dialog/EditPlaylistDialog.qml"), mainView) thisPage.currentDialog.oldPlaylistName = line2 } }, Action { objectName: "deletePlaylist" iconName: "delete" onTriggered: { thisPage.currentDialog = PopupUtils.open(Qt.resolvedUrl("../Dialog/RemovePlaylistDialog.qml"), mainView) thisPage.currentDialog.oldPlaylistName = line2 } } ] objectName: "playlistTrailingActionBar" } visible: thisPage.state === "playlist" Action { id: backActionComponent iconName: "back" objectName: "backAction" onTriggered: mainPageStack.pop() } StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } } property Item thisPage PropertyChanges { target: thisPage header: thisHeader } } lomiri-music-app-v3.0.3/app/components/HeadState/PlaylistsHeadState.qml000066400000000000000000000057311451274533600262030ustar00rootroot00000000000000/* * Copyright (C) 2015 * Andrew Hayzen * Victor Thompson * Copyright: 2020 UBports * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 State { name: "default" property alias newPlaylistEnabled: newPlaylistAction.visible property alias searchEnabled: searchAction.visible property PageHeader thisHeader: PageHeader { id: headerState flickable: thisPage.flickable leadingActionBar { actions: { if (mainPageStack.currentPage === tabs) { tabs.tabActions } else if (mainPageStack.depth > 1) { backActionComponent } else { null } } objectName: "tabsLeadingActionBar" } title: thisPage.title trailingActionBar { actions: [ Action { id: settingsActionComponent iconName: "settings" onTriggered: mainPageStack.push(Qt.resolvedUrl("../../ui/SettingsPage.qml")) }, Action { id: newPlaylistAction objectName: "newPlaylistButton" iconName: "add" onTriggered: { customdebug("New playlist.") thisPage.currentDialog = PopupUtils.open(Qt.resolvedUrl("../Dialog/NewPlaylistDialog.qml"), mainView) } }, Action { id: searchAction iconName: "search" onTriggered: { thisPage.state = "search"; thisPage.header.contents.forceActiveFocus(); } } ] objectName: "playlistTrailingActionBar" } visible: thisPage.state === "default" Action { id: backActionComponent iconName: "back" objectName: "backAction" onTriggered: mainPageStack.pop() } StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } } property Item thisPage PropertyChanges { target: thisPage header: thisHeader } } lomiri-music-app-v3.0.3/app/components/HeadState/QueueHeadState.qml000066400000000000000000000061401451274533600252760ustar00rootroot00000000000000/* * Copyright (C) 2016 * Andrew Hayzen * Victor Thompson * Copyright: 2020 UBports * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 State { id: state name: stateName // Need to be able to change state name and State.name is not notifyable property string stateName: "default" property PageHeader thisHeader: PageHeader { id: headerState flickable: thisPage.flickable leadingActionBar { actions: { if (mainPageStack.currentPage === tabs) { tabs.tabActions } else if (mainPageStack.depth > 1) { backActionComponent } else { null } } objectName: "tabsLeadingActionBar" } title: thisPage.title trailingActionBar { actions: [ Action { enabled: !player.mediaPlayer.playlist.empty iconName: "add-to-playlist" // TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) text: i18n.tr("Add to playlist") onTriggered: { var items = [] items.push(makeDict(player.metaForSource(player.mediaPlayer.playlist.currentItemSource))); mainPageStack.push(Qt.resolvedUrl("../../ui/AddToPlaylist.qml"), {"chosenElements": items}) } }, Action { enabled: !player.mediaPlayer.playlist.empty iconName: "delete" objectName: "clearQueue" // TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) text: i18n.tr("Clear queue") onTriggered: player.mediaPlayer.playlist.clearWrapper() } ] } visible: thisPage.state === state.stateName Action { id: backActionComponent iconName: "back" objectName: "backAction" onTriggered: mainPageStack.pop() } StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } } property Item thisPage PropertyChanges { target: thisPage header: thisHeader } } lomiri-music-app-v3.0.3/app/components/HeadState/SearchHeadState.qml000066400000000000000000000057251451274533600254270ustar00rootroot00000000000000/* * Copyright (C) 2015 * Andrew Hayzen * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 State { name: "search" property PageHeader thisHeader: PageHeader { id: headerState contents: TextField { id: searchField anchors { left: parent ? parent.left : undefined right: parent ? parent.right : undefined verticalCenter: parent ? parent.verticalCenter : undefined } color: theme.palette.normal.fieldText focus: true hasClearButton: true inputMethodHints: Qt.ImhNoPredictiveText placeholderText: i18n.tr("Search music") // Use the page onVisible as the text field goes visible=false when switching states // This is used when popping from the pageStack and returning back to a page with search Connections { target: thisPage onStateChanged: { // ensure the search is reset (eg pressing Esc) if (state === "default") { searchField.text = "" } } onVisibleChanged: { // clear when the page becomes visible not invisible // if invisible is used the delegates can be destroyed which // have created the pushed component if (visible) { thisPage.state = "default" } } } } flickable: thisPage.flickable leadingActionBar { actions: [ Action { id: leaveSearchAction text: "back" iconName: "back" onTriggered: thisPage.state = "default" } ] } visible: thisPage.state === "search" onVisibleChanged: { if (visible) { searchField.forceActiveFocus() } } StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } } property Item thisPage property alias query: searchField.text PropertyChanges { target: thisPage header: thisHeader } } lomiri-music-app-v3.0.3/app/components/HeadState/SearchableHeadState.qml000066400000000000000000000046471451274533600262550ustar00rootroot00000000000000/* * Copyright (C) 2015 * Andrew Hayzen * Victor Thompson * Copyright: 2020 UBports * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 State { name: "default" property alias searchEnabled: searchAction.enabled property PageHeader thisHeader: PageHeader { id: headerState flickable: thisPage.flickable leadingActionBar { actions: { if (mainPageStack.currentPage === tabs) { tabs.tabActions } else if (mainPageStack.depth > 1) { backActionComponent } else { null } } objectName: "tabsLeadingActionBar" } title: thisPage.title trailingActionBar { actions: [ Action { id: settingsActionComponent iconName: "settings" onTriggered: mainPageStack.push(Qt.resolvedUrl("../../ui/SettingsPage.qml")) }, Action { id: searchAction iconName: "search" onTriggered: { thisPage.state = "search"; thisPage.header.contents.forceActiveFocus(); } } ] } visible: thisPage.state === "default" Action { id: backActionComponent iconName: "back" objectName: "backAction" onTriggered: mainPageStack.pop() } StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } } property Item thisPage PropertyChanges { target: thisPage header: thisHeader } } lomiri-music-app-v3.0.3/app/components/Helpers/000077500000000000000000000000001451274533600214535ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/Helpers/CMakeLists.txt000066400000000000000000000003061451274533600242120ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB HELPERS_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_HELPERS_QMLFiles ALL SOURCES ${HELPERS_QML_FILES}) lomiri-music-app-v3.0.3/app/components/Helpers/ContentHubHelper.qml000066400000000000000000000204421451274533600254010ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 import Lomiri.Content 1.4 import "../../logic/stored-request.js" as StoredRequest Item { id: contentHubHelper property var activeImportTransfer property var activeExportTransfer property int importId: 0 property list importItems property list exportItems property bool processing: contentHubWaitForFile.processId !== -1 ContentTransferHint { anchors { fill: parent } activeTransfer: parent.activeImportTransfer } Component { id: resultComponent ContentItem {} } Connections { id: contentHub target: ContentHub property var searchPaths: [] onExportRequested: { activeExportTransfer = transfer; if (mainPageStack.currentPage.objectName === "contentHubExportPage") { mainPageStack.pop() } mainPageStack.push(Qt.resolvedUrl("../../ui/ContentHubExport.qml"), {contentItemComponent: resultComponent, transfer: activeExportTransfer}); } onImportRequested: { activeImportTransfer = transfer; if (activeImportTransfer.state === ContentTransfer.Charged) { importItems = activeImportTransfer.items; if (firstRun) { console.debug("Delaying content-hub import") StoredRequest.store(function() { return contentHub.importRequested(importItems); }) } else { contentHub.importRequested(importItems) } } } function importFile(contentItem, path) { var contentUrl = contentItem.url.toString() if (path.indexOf("~/Music/Imported/") !== 0) { console.debug("Invalid dest (not in ~/Music/Imported/)") // TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ return i18n.tr("Filepath must start with %1").arg(" ~/Music/Imported/") } else { // extract /home/$USER (or $HOME) from contentitem url var homepath = contentUrl.substring(7).split("/"); if (homepath[1] === "home") { homepath.splice(3, homepath.length - 3) homepath = homepath.join("/") } else { console.debug("/home/$USER not detecting in contentItem assuming /home/phablet/") homepath = "/home/phablet" } console.debug("Copy:", contentUrl, "to", path) // Extract filename from path and replace ~ with $HOME var dir = path.split("/") var filename = dir.pop() dir = dir.join("/").replace("~/", homepath + "/") // Avoid decoding issue afterward when using decodeFileURI filename = filename.replace(/[&,+()$~%'":*?<>{}]/g, '') if (filename === "") { console.debug("Invalid dest (filename blank)") // TRANSLATORS: This string represents that a blank filepath destination has been used return i18n.tr("Filepath must be a file") } else if (!contentItem.copy(dir, filename)) { console.debug("Copy failed! DIR:", dir, "FILE:", filename) // TRANSLATORS: This string represents that there was failure moving the file to the target destination return i18n.tr("Failed to copy file") } else { contentHub.searchPaths.push(dir + "/" + filename) return true } } } function importRequested(importItems) { var processId = importId++; console.debug("Triggering content-hub import ID", processId); searchPaths = []; var err = []; var path; var res; var success = true; var url; for (var i=0; i < importItems.length; i++) { url = importItems[i].url.toString() console.debug("Triggered content-hub import for item", url) // fixed path allows for apparmor protection path = "~/Music/Imported/" + Qt.formatDateTime(new Date(), "yyyy/MM/dd/hhmmss") + "-" + url.split("/").pop() res = contentHub.importFile(importItems[i], path) if (res !== true) { success = false; err.push(url.split("/").pop() + " " + res) } } if (success === true) { if (contentHubWaitForFile.processId === -1) { contentHubWaitForFile.dialog = PopupUtils.open(Qt.resolvedUrl("../Dialog/ContentHubWaitDialog.qml"), contentHubHelper) contentHubWaitForFile.searchPaths = contentHub.searchPaths; contentHubWaitForFile.processId = processId; contentHubWaitForFile.start(); } else { contentHubWaitForFile.searchPaths.push.apply(contentHubWaitForFile.searchPaths, contentHub.searchPaths); contentHubWaitForFile.count = 0; contentHubWaitForFile.restart(); } } else { var errordialog = PopupUtils.open(Qt.resolvedUrl("../Dialog/ContentHubErrorDialog.qml"), contentHubHelper) errordialog.errorText = err.join("\n") } // tell content-hub we are finished with the files activeImportTransfer.finalize(); } } Timer { id: contentHubWaitForFile interval: 1000 triggeredOnStart: false repeat: true property var dialog: null property var searchPaths property int count: 0 property int processId: -1 function stopTimer() { processId = -1; count = 0; stop(); if (dialog) PopupUtils.close(dialog) } onTriggered: { var found = true var i; var model; for (i=0; i < searchPaths.length; i++) { model = musicStore.lookup(decodeFileURI(searchPaths[i])) console.debug("MusicStore model from lookup", JSON.stringify(model)) if (!model) { found = false } } if (!found) { count++; if (count >= 10) { // wait for 10s stopTimer(); console.debug("File(s) were not found", JSON.stringify(searchPaths)) PopupUtils.open(Qt.resolvedUrl("../Dialog/ContentHubNotFoundDialog.qml"), mainView) } } else { stopTimer(); player.mediaPlayer.playlist.clearWrapper(); var items = []; for (i=0; i < searchPaths.length; i++) { // Don't need to check if in ms2 as that is done above items.push(Qt.resolvedUrl(decodeURIComponent(searchPaths[i]))) } player.mediaPlayer.playlist.addItems(items); trackQueueClick(0); // Show the Now playing page and make sure the track is visible tabs.pushNowPlaying(); } } } } lomiri-music-app-v3.0.3/app/components/Helpers/UriHandlerHelper.qml000066400000000000000000000055021451274533600253650ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import "../" import "../../logic/stored-request.js" as StoredRequest Item { id: uriHandler Connections { target: UriHandler onOpened: { for (var i=0; i < uris.length; i++) { console.debug("URI=" + uris[i]) uriHandler.process(uris[i], i === 0); } } } function processAlbum(uri) { selectedAlbum = true; var split = uri.split("/"); if (split.length < 2) { console.debug("Unknown artist-album " + uri + ", skipping") return; } // Filter by artist and album songsAlbumArtistModel.albumArtist = decodeFileURI(split[0]); songsAlbumArtistModel.album = decodeFileURI(split[1]); } function processFile(uri, play) { // Lookup track in songs model var track = musicStore.lookup(decodeFileURI(uri)); if (!track) { console.debug("Unknown file " + uri + ", skipping") } else { if (play) { // clear play queue player.mediaPlayer.playlist.clearWrapper() } // enqueue player.mediaPlayer.playlist.addItem(Qt.resolvedUrl(track.filename)); // play first URI if (play) { trackQueueClick(player.mediaPlayer.playlist.itemCount - 1); tabs.pushNowPlaying(); // ensure now playing is shown for first } } } function process(uri, play) { if (firstRun) { console.debug("Delaying uri call", uri) StoredRequest.store(function() { return process(uri, play); }) } else if (uri.indexOf("album:///") === 0) { processAlbum(uri.substring(9)); } else if (uri.indexOf("file://") === 0) { processFile(uri.substring(7), play); } else if (uri.indexOf("music://") === 0) { processFile(uri.substring(8), play); } else { console.debug("Unsupported URI " + uri + ", skipping") } } } lomiri-music-app-v3.0.3/app/components/Helpers/UserMetricsHelper.qml000066400000000000000000000041411451274533600255730ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import UserMetrics 0.1 Item { // UserMetrics to show Music stuff on welcome screen Metric { id: songsMetric name: "music-metrics" // TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) format: "%1 " + i18n.tr("tracks played today") emptyFormat: i18n.tr("No tracks played today") domain: "lomiri-music-app" } // Connections for usermetrics Connections { id: userMetricPlayerConnection target: player.mediaPlayer property bool songCounted: false onPositionChanged: { // Increment song count on Welcome screen if song has been // playing for over 10 seconds. if (player.mediaPlayer.position > 10000 && !songCounted) { songCounted = true songsMetric.increment() console.debug("Increment UserMetrics") } } } Connections { target: player.mediaPlayer.playlist onCurrentIndexChanged: userMetricPlayerConnection.songCounted = false onCurrentItemSourceChanged: userMetricPlayerConnection.songCounted = false } } lomiri-music-app-v3.0.3/app/components/LibraryListModel.qml000066400000000000000000000061521451274533600240110ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import QtQuick.LocalStorage 2.0 import "../logic/meta-database.js" as Library import "../logic/playlists.js" as Playlists Item { id: libraryListModelItem property alias count: libraryModel.count property ListModel model : ListModel { id: libraryModel property var linkLibraryListModel: libraryListModelItem } property var param: null property var query: null /* Pretent to be like a mediascanner2 listmodel */ property alias rowCount: libraryModel.count property alias canLoad: worker.canLoad property alias preLoadComplete: worker.preLoadComplete property alias syncFactor: worker.syncFactor property alias workerComplete: worker.completed property alias workerList: worker.list function get(index, role) { return model.get(index); } WorkerModelLoader { id: worker model: libraryListModelItem.model } function indexOf(file) { file = file.toString(); if (file.indexOf("file://") == 0) { file = file.slice(7, file.length) } for (var i=0; i < model.count; i++) { if (model.get(i).file == file) { return i; } } return -1; } function filterPlaylists() { console.log("called LibraryListModel::filterPlaylist()") // Save query for queue query = Playlists.getPlaylists param = null // Set syncFactor to the default and set the list to populate worker.syncFactor = 5 worker.list = Playlists.getPlaylists(); } function filterPlaylistTracks(playlist) { console.log("called LibraryListModel::filterPlaylistTracks()") // Save query for queue query = Playlists.getPlaylistTracks param = playlist // Set syncFactor to 500 to get the worker to fetch many items at once and // set the list to populate worker.syncFactor = 500 worker.list = Playlists.getPlaylistTracks(playlist); } function filterRecent() { console.log("called LibraryListModel::filterRecent()") // Save query for queue query = Library.getRecent param = null // Set syncFactor to the default and set the list to populate worker.syncFactor = 5 worker.list = Library.getRecent(); } } lomiri-music-app-v3.0.3/app/components/ListItemActions/000077500000000000000000000000001451274533600231245ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/ListItemActions/AddToPlaylist.qml000066400000000000000000000024571451274533600263640ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Action { iconName: "add-to-playlist" objectName: "addToPlaylistAction" text: i18n.tr("Add to playlist") // Used when model can't be given to add to playlist // for example in the Queue it is called metaModel not model property var modelOverride: null onTriggered: { console.debug("Debug: Add track to playlist"); mainPageStack.push(Qt.resolvedUrl("../../ui/AddToPlaylist.qml"), {"chosenElements": [modelOverride || makeDict(model)]}) } } lomiri-music-app-v3.0.3/app/components/ListItemActions/AddToQueue.qml000066400000000000000000000022031451274533600256340ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import QtQuick.LocalStorage 2.0 import Lomiri.Components 1.3 import "../../logic/meta-database.js" as Library Action { iconName: "add" objectName: "addToQueueAction" text: i18n.tr("Add to Queue") onTriggered: { console.debug("Debug: Add track to queue: " + model) player.mediaPlayer.playlist.addItem(Qt.resolvedUrl(model.filename)) } } lomiri-music-app-v3.0.3/app/components/ListItemActions/AddToQueueAndPlaylist.qml000066400000000000000000000016361451274533600300120ustar00rootroot00000000000000/* * Copyright (C) 2015 * Andrew Hayzen * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import "../Delegates" ListItemActions { actions: [ AddToQueue { }, AddToPlaylist { } ] delegate: ActionDelegate { } } lomiri-music-app-v3.0.3/app/components/ListItemActions/CMakeLists.txt000066400000000000000000000003221451274533600256610ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB ACTIONITEMS_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_ACTIONITEMS_QMLFiles ALL SOURCES ${ACTIONITEMS_QML_FILES}) lomiri-music-app-v3.0.3/app/components/ListItemActions/Remove.qml000066400000000000000000000016341451274533600251000ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Action { id: removeAction iconName: "delete" objectName: "swipeDeleteAction" text: i18n.tr("Remove") } lomiri-music-app-v3.0.3/app/components/ListItemReorderComponent.qml000066400000000000000000000062151451274533600255300ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Nekhelesh Ramananthan * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Item { id: actionReorder width: units.gu(4) Icon { anchors { horizontalCenter: parent.horizontalCenter verticalCenter: parent.verticalCenter } name: "navigation-menu" // TODO: use proper image height: width width: units.gu(3) asynchronous: true } MouseArea { id: actionReorderMouseArea anchors { fill: parent } property int startY: 0 property int startContentY: 0 onPressed: { root.parent.parent.interactive = false; // stop scrolling of listview startY = root.y; startContentY = root.parent.parent.contentY; root.z += 10; // force ontop of other elements console.debug("Reorder listitem pressed", root.y) } onMouseYChanged: root.y += mouse.y - (root.height / 2); onReleased: { console.debug("Reorder diff by position", getDiff()); var diff = getDiff(); // Remove the height of the actual item if moved down if (diff > 0) { diff -= 1; } root.parent.parent.interactive = true; // reenable scrolling var newIndex = index + diff; if (newIndex < 0) { newIndex = 0; } else if (newIndex > root.parent.parent.count - 1) { newIndex = root.parent.parent.count - 1; } if (index === newIndex) { // Nothing has changed so reset the item // z index is restored after animation resetListItemYAnimation.start(); } else { root.z -= 10; // restore z index reorder(index, newIndex) } } function getDiff() { // Get the amount of items that have been passed over (by centre) return Math.round((((root.y - startY) + (root.parent.parent.contentY - startContentY)) / root.height) + 0.5); } } SequentialAnimation { id: resetListItemYAnimation LomiriNumberAnimation { target: root; property: "y"; to: actionReorderMouseArea.startY } ScriptAction { script: { root.z -= 10; // restore z index } } } } lomiri-music-app-v3.0.3/app/components/LoadingSpinnerComponent.qml000066400000000000000000000033101451274533600253600ustar00rootroot00000000000000/* * Copyright (C) 2013, 2015 Canonical Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authored by: Raúl Yeguas * Martin Borho * Andrew Starr-Bochicchio */ import QtQuick 2.4 import Lomiri.Components 1.3 Item { id: refresh height: units.gu(5) width: parent.width visible: false property alias loadingText: loadingLabel.text anchors { horizontalCenter: parent.horizontalCenter top: parent.top margins: units.gu(20) } ActivityIndicator { id: loading objectName: "LoadingSpinner" anchors.verticalCenter: parent.verticalCenter anchors.right: loadingLabel.left anchors.rightMargin: units.gu(1) running: refresh.visible z: 1 } Label { id: loadingLabel text: i18n.tr("Loading...") anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenterOffset: (loading.width / 2) + (loading.anchors.rightMargin / 2) anchors.verticalCenter: parent.verticalCenter fontSize: "large" color: styleMusic.common.subtitle } } lomiri-music-app-v3.0.3/app/components/MusicPage.qml000066400000000000000000000061301451274533600224410ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 // generic page for music, could be useful for bottomedge implementation Page { id: thisPage anchors { bottomMargin: musicToolbar.visible ? musicToolbar.height : 0 fill: parent } head { // hide default header locked: true visible: false } header: PageHeader { id: pageHeader extension: Sections { // Create a fake head section when needed // resolves issues with parent.top binding to the incorrect place // when head sections are then added by the state model: hasSections ? [" "] : [] } flickable: thisPage.flickable leadingActionBar { actions: { if (mainPageStack.currentPage === tabs) { tabs.tabActions } else if (mainPageStack.depth > 1) { backActionComponent } else { null } } objectName: "tabsLeadingActionBar" } title: thisPage.title StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } Action { id: backActionComponent iconName: "back" objectName: "backAction" onTriggered: mainPageStack.pop() } } property Dialog currentDialog property bool hasSections: false property bool searchable: false property int searchResultsCount property bool showToolbar: true Label { anchors { centerIn: parent } text: i18n.tr("No items found") visible: parent.state === "search" && searchResultsCount === 0 } // FIXME: hack is a workaround for SDK bug pad.lv/1341814 // which causes the header and contents of the page to become out of sync property Item __oldContents: null Connections { target: thisPage.head onContentsChanged: { if (thisPage.__oldContents) { thisPage.__oldContents.parent = null; } thisPage.__oldContents = thisPage.head.contents; } } onVisibleChanged: { if (visible) { mainPageStack.setPage(thisPage); } } } lomiri-music-app-v3.0.3/app/components/MusicToolbar.qml000066400000000000000000000243101451274533600231670ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import QtMultimedia 5.6 import Lomiri.Components 1.3 Rectangle { anchors { bottom: parent.bottom left: parent.left right: parent.right } color: theme.palette.normal.background height: units.gu(7.25) objectName: "musicToolbarObject" // Hack for autopilot otherwise MusicToolbar appears as QQuickRectangle // due to bug 1341671 it is required that there is a property so that // qml doesn't optimise using the parent type property bool bug1341671workaround: true /* Toolbar controls */ Item { id: toolbarControls anchors { fill: parent } state: player.mediaPlayer.playlist.empty ? "disabled" : "enabled" states: [ State { name: "disabled" PropertyChanges { target: disabledPlayerControlsGroup visible: true } PropertyChanges { target: enabledPlayerControlsGroup visible: false } }, State { name: "enabled" PropertyChanges { target: disabledPlayerControlsGroup visible: false } PropertyChanges { target: enabledPlayerControlsGroup visible: true } } ] /* Disabled (empty state) controls */ Item { id: disabledPlayerControlsGroup anchors { bottom: playerControlsProgressBar.top left: parent.left right: parent.right top: parent.top } Label { id: noSongsInQueueLabel anchors { left: parent.left leftMargin: units.gu(2) right: disabledPlayerControlsPlayButton.left rightMargin: units.gu(2) verticalCenter: parent.verticalCenter } color: styleMusic.playerControls.labelColor text: i18n.tr("Tap to shuffle music") fontSize: "large" wrapMode: Text.WordWrap maximumLineCount: 2 } /* Play/Pause button */ Icon { id: disabledPlayerControlsPlayButton anchors { right: parent.right rightMargin: units.gu(3) verticalCenter: parent.verticalCenter } color: theme.palette.normal.backgroundText height: units.gu(4) name: player.mediaPlayer.playbackState === MediaPlayer.PlayingState ? "media-playback-pause" : "media-playback-start" objectName: "disabledSmallPlayShape" width: height asynchronous: true } /* Click to shuffle music */ MouseArea { anchors { fill: parent } onClicked: { if (player.mediaPlayer.playlist.empty) { playRandomSong(); } else { player.mediaPlayer.toggle(); } } } } /* Enabled (queue > 0) controls */ Item { id: enabledPlayerControlsGroup anchors { bottom: playerControlsProgressBar.top left: parent.left right: parent.right top: parent.top } /* Album art in player controls */ CoverGrid { id: playerControlsImage anchors { bottom: parent.bottom left: parent.left top: parent.top } covers: [player.currentMeta] size: parent.height } /* Column of meta labels */ Column { id: playerControlsLabels anchors { left: playerControlsImage.right leftMargin: units.gu(1.5) right: playerControlsPlayButton.left rightMargin: units.gu(1) verticalCenter: parent.verticalCenter } /* Title of track */ Label { id: playerControlsTitle anchors { left: parent.left right: parent.right } color: theme.palette.normal.backgroundText elide: Text.ElideRight fontSize: "small" font.weight: Font.DemiBold text: player.currentMeta.title === "" ? player.mediaPlayer.playlist.currentItemSource : player.currentMeta.title } /* Artist and album of track */ Label { id: playerControlsArtist anchors { left: parent.left right: parent.right } color: theme.palette.normal.backgroundText elide: Text.ElideRight fontSize: "small" opacity: 0.4 text: player.currentMeta.author + " - " + player.currentMeta.album } } /* Play/Pause button */ Icon { id: playerControlsPlayButton anchors { right: parent.right rightMargin: units.gu(3) verticalCenter: parent.verticalCenter } color: playerControlsPlayButtonMouseArea.pressed ? theme.palette.normal.focus : theme.palette.normal.foregroundText height: units.gu(4) name: player.mediaPlayer.playbackState === MediaPlayer.PlayingState ? "media-playback-pause" : "media-playback-start" objectName: "playShape" width: height asynchronous: true } /* Mouse area to jump to now playing */ MouseArea { anchors { fill: parent } objectName: "jumpNowPlaying" onClicked: tabs.pushNowPlaying() } /* Mouse area for the play button (ontop of the jump to now playing) */ MouseArea { id: playerControlsPlayButtonMouseArea anchors { bottom: parent.bottom horizontalCenter: playerControlsPlayButton.horizontalCenter top: parent.top } onClicked: player.mediaPlayer.toggle() width: units.gu(8) Rectangle { anchors { fill: parent } color: theme.palette.normal.overlayText opacity: parent.pressed ? 0.1 : 0 Behavior on opacity { LomiriNumberAnimation { duration: LomiriAnimation.FastDuration } } } } } /* Object which provides the progress bar when toolbar is minimized */ Rectangle { id: playerControlsProgressBar anchors { bottom: parent.bottom left: parent.left right: parent.right } color: theme.palette.normal.background height: units.gu(0.25) Rectangle { id: playerControlsProgressBarHint anchors { left: parent.left top: parent.top } color: theme.palette.normal.focus height: parent.height width: player.mediaPlayer.progress * playerControlsProgressBar.width // FIXME: Workaround for pad.lv/1494031 by querying gst as it does not // emit until it changes to the PLAYING state. But by asking for a // value we get gst to perform a query and return a result // However this has to be done once the source is set, hence the delay // // NOTE: This does not solve when the currentIndex is removed though Timer { id: refreshProgressTimer interval: 48 repeat: false // Use binding so the width updates and value isn't saved onTriggered: playerControlsProgressBarHint.width = Qt.binding(function() { return player.mediaPlayer.progress * playerControlsProgressBar.width; }) } Connections { target: player.mediaPlayer.playlist // Call timer when source or index changes // so we call even if there are duplicate sources or source removal onCurrentItemSourceChanged: refreshProgressTimer.start() onCurrentIndexChanged: refreshProgressTimer.start() } } } } } lomiri-music-app-v3.0.3/app/components/NowPlayingFullView.qml000066400000000000000000000260161451274533600243360ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Thumbnailer 0.1 import "../components/Themes/Ambiance" Item { id: fullview anchors { fill: parent } property string backgroundColor: styleMusic.common.black property bool sidebar: false BlurredBackground { id: blurredBackground anchors { left: parent.left right: parent.right top: parent.top } art: albumImage.firstSource color: backgroundColor height: parent.height - (sidebar ? units.gu(7) + nowPlayingWideAspectLabelsBackground.height : units.gu(7)) Item { id: albumImageContainer anchors { horizontalCenter: parent.horizontalCenter top: parent.top } height: parent.height width: parent.width CoverGrid { id: albumImage anchors { horizontalCenter: parent.horizontalCenter top: parent.top } covers: [player.currentMeta] opacity: coverSwipeArea.drag.active ? 1-Math.abs(albumImageContainer.x / (blurredBackground.width/2)) : 1 Behavior on opacity { NumberAnimation {duration:LomiriAnimation.FastDuration}} size: parent.height > parent.width ? parent.width : parent.height } } /* Detect cover art swipe */ MouseArea { id:coverSwipeArea anchors.fill: parent property string direction: "None" property real lastX: -1 drag.target: albumImageContainer; drag.axis: Drag.XAxis drag.minimumX: -blurredBackground.width drag.maximumX: blurredBackground.width onPressed: { lastX = mouse.x albumImageContainer.anchors.horizontalCenter = undefined; } onReleased: { var diff = mouse.x - lastX albumImageContainer.anchors.horizontalCenter = blurredBackground.horizontalCenter; if (Math.abs(diff) < (blurredBackground.width/2)) { return; } else if (diff < 0) { player.mediaPlayer.playlist.nextWrapper() } else if (diff > 0) { player.mediaPlayer.playlist.previousWrapper() } } } } Rectangle { id: nowPlayingWideAspectLabelsBackground anchors { bottom: sidebar ? undefined : blurredBackground.bottom left: parent.left right: parent.right top: sidebar ? blurredBackground.bottom : undefined } color: backgroundColor height: nowPlayingWideAspectTitle.lineCount === 1 ? units.gu(10) : units.gu(13) opacity: sidebar ? 1.0 : 0.8 } /* Column for labels in wideAspect */ Column { id: nowPlayingWideAspectLabels spacing: units.gu(1) anchors { left: parent.left leftMargin: units.gu(2) right: parent.right rightMargin: units.gu(2) top: nowPlayingWideAspectLabelsBackground.top topMargin: nowPlayingWideAspectTitle.lineCount === 1 ? units.gu(2) : units.gu(1.5) } /* Title of track */ Label { id: nowPlayingWideAspectTitle anchors { left: parent.left leftMargin: units.gu(1) right: parent.right rightMargin: units.gu(1) } color: styleMusic.playerControls.labelColor elide: Text.ElideRight fontSize: "x-large" maximumLineCount: 2 objectName: "playercontroltitle" text: { if (player.mediaPlayer.playlist.empty) { "" } else if (player.currentMeta.title === "") { player.mediaPlayer.playlist.currentSource } else { player.currentMeta.title } } wrapMode: Text.WordWrap } /* Artist and album of track */ Label { id: nowPlayingWideAspectArtist anchors { left: parent.left leftMargin: units.gu(1) right: parent.right rightMargin: units.gu(1) } color: styleMusic.nowPlaying.labelSecondaryColor elide: Text.ElideRight fontSize: "small" text: player.mediaPlayer.playlist.empty ? "" : player.currentMeta.author + " - " + player.currentMeta.album } } /* Background for progress bar component */ Rectangle { id: musicToolbarFullProgressBackground anchors { bottom: parent.bottom left: parent.left right: parent.right top: sidebar ? nowPlayingWideAspectLabelsBackground.bottom : blurredBackground.bottom } color: backgroundColor } /* Progress bar component */ Item { id: musicToolbarFullProgressContainer anchors.left: parent.left anchors.leftMargin: units.gu(3) anchors.right: parent.right anchors.rightMargin: units.gu(3) anchors.top: sidebar ? nowPlayingWideAspectLabelsBackground.bottom : blurredBackground.bottom anchors.topMargin: units.gu(1) height: units.gu(3) width: parent.width /* Position label */ Label { id: musicToolbarFullPositionLabel anchors.top: progressSliderMusic.bottom anchors.topMargin: units.gu(-2) anchors.left: parent.left color: styleMusic.nowPlaying.labelSecondaryColor fontSize: "small" height: parent.height horizontalAlignment: Text.AlignHCenter text: durationToString(player.mediaPlayer.position) verticalAlignment: Text.AlignVCenter width: units.gu(3) } Slider { id: progressSliderMusic anchors.left: parent.left anchors.right: parent.right maximumValue: player.mediaPlayer.duration || 1 // fallback to 1 when 0 so that the progress bar works objectName: "progressSliderShape" style: SliderStyle {} value: player.mediaPlayer.position // load value at startup function formatValue(v) { if (seeking) { // update position label while dragging musicToolbarFullPositionLabel.text = durationToString(v) } return durationToString(v) } property bool seeking: false property bool seeked: false onSeekingChanged: { if (seeking === false) { musicToolbarFullPositionLabel.text = durationToString(player.mediaPlayer.position) } } onPressedChanged: { seeking = pressed if (!pressed) { seeked = true player.mediaPlayer.seek(value) musicToolbarFullPositionLabel.text = durationToString(value) } } Connections { target: player.mediaPlayer onPositionChanged: { // seeked is a workaround for bug 1310706 as the first position after a seek is sometimes invalid (0) if (progressSliderMusic.seeking === false && !progressSliderMusic.seeked) { musicToolbarFullPositionLabel.text = durationToString(player.mediaPlayer.position) musicToolbarFullDurationLabel.text = durationToString(player.mediaPlayer.duration) progressSliderMusic.value = player.mediaPlayer.position // fallback to 1 when 0 so that the progress bar works progressSliderMusic.maximumValue = player.mediaPlayer.duration || 1 } progressSliderMusic.seeked = false; } onStopped: { musicToolbarFullPositionLabel.text = durationToString(0); musicToolbarFullDurationLabel.text = durationToString(0); } } } /* Duration label */ Label { id: musicToolbarFullDurationLabel anchors.top: progressSliderMusic.bottom anchors.topMargin: units.gu(-2) anchors.right: parent.right color: styleMusic.nowPlaying.labelSecondaryColor fontSize: "small" height: parent.height horizontalAlignment: Text.AlignHCenter text: durationToString(player.mediaPlayer.duration || 1) verticalAlignment: Text.AlignVCenter width: units.gu(3) } // FIXME: Workaround for pad.lv/1494031 by querying gst as it does not // emit until it changes to the PLAYING state. But by asking for a // value we get gst to perform a query and return a result // However this has to be done once the source is set, hence the delay // // NOTE: This does not solve when the currentIndex is removed though Timer { id: refreshProgressTimer interval: 48 repeat: false onTriggered: { if (!progressSliderMusic.seeking) { musicToolbarFullPositionLabel.text = durationToString(player.mediaPlayer.position); musicToolbarFullDurationLabel.text = durationToString(player.mediaPlayer.duration || 1); progressSliderMusic.value = player.mediaPlayer.position // fallback to 1 when 0 so that the progress bar works progressSliderMusic.maximumValue = player.mediaPlayer.duration || 1 } } } Connections { target: player.mediaPlayer.playlist // Call timer when source or index changes // so we call even if there are duplicate sources or source removal onCurrentItemSourceChanged: refreshProgressTimer.start() onCurrentIndexChanged: refreshProgressTimer.start() } } } lomiri-music-app-v3.0.3/app/components/NowPlayingSidebar.qml000066400000000000000000000074361451274533600241570ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import "HeadState" Rectangle { id: nowPlayingSidebar anchors { fill: parent } color: "#2c2c34" state: queue.state === "multiselectable" ? "selection" : "default" states: [ QueueHeadState { thisHeader { leadingActionBar { actions: [] // hide tab bar objectName: "sideLeadingActionBar" } z: 100 // put on top of content } thisPage: nowPlayingSidebar }, MultiSelectHeadState { addToQueue: false listview: queue removable: true thisHeader { z: 100 // put on top of content } thisPage: nowPlayingSidebar onRemoved: { // Remove the tracks from the queue // Use slice() to copy the list // so that the indexes don't change as they are removed player.mediaPlayer.playlist.removeItemsWrapper(selectedIndices.slice()); } } ] property alias flickable: queue // fake normal Page property Item header: PageHeader { id: pageHeader leadingActionBar { actions: nowPlayingSidebar.head.backAction objectName: "sideLeadingActionBar" } flickable: queue trailingActionBar { actions: nowPlayingSidebar.head.actions } z: 100 // put on top of content StyleHints { backgroundColor: mainView.headerColor } } property Item previousHeader: null property string title: "" // fake normal Page onHeaderChanged: { // Copy what SDK does to parent header correctly if (previousHeader) { previousHeader.parent = null } header.parent = nowPlayingSidebar previousHeader = header; } Loader { anchors { left: parent.left right: parent.right top: parent.top } height: units.gu(6.125) sourceComponent: header } Queue { id: queue anchors { bottomMargin: 0 topMargin: 0 } clip: true isSidebar: true header: Column { id: sidebarColumn anchors { left: parent.left right: parent.right } NowPlayingFullView { anchors { fill: undefined } backgroundColor: "#2c2c34" clip: true height: units.gu(47) sidebar: true width: parent.width } NowPlayingToolbar { anchors { fill: undefined } bottomProgressHint: false color: "#2c2c34" height: itemSize + 2 * spacing + units.gu(2) width: parent.width } } } } lomiri-music-app-v3.0.3/app/components/NowPlayingToolbar.qml000066400000000000000000000156121451274533600242030ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtMultimedia 5.6 import QtQuick 2.4 import Lomiri.Components 1.3 /* Full toolbar */ Rectangle { id: musicToolbarFullContainer anchors { fill: parent } color: styleMusic.common.black property alias bottomProgressHint: playerControlsProgressBar.visible property int itemSize: units.gu(6) property int spacing: units.gu(1) /* Repeat button */ MouseArea { id: nowPlayingRepeatButton anchors.right: nowPlayingPreviousButton.left anchors.rightMargin: spacing anchors.verticalCenter: nowPlayingPlayButton.verticalCenter height: itemSize width: height onClicked: { // tap-order: repeat disabled -> repeat single -> repeat album -> repeat disabled if (player.repeat == "none") { player.repeat = "repeatSingle" repeatIcon.name = "media-playlist-repeat-one" repeatIcon.opacity = 1 } else if (player.repeat == "repeatSingle") { player.repeat = "repeatAlbum" repeatIcon.name = "media-playlist-repeat" repeatIcon.opacity = 1 } else if (player.repeat == "repeatAlbum") { player.repeat = "none" repeatIcon.name = "media-playlist-repeat" repeatIcon.opacity = .4 } else { // in case of old bool values, use "none" as initial new setting player.repeat = "none" repeatIcon.name = "media-playlist-repeat" repeatIcon.opacity = .4 } } Icon { id: repeatIcon height: itemSize / 2 width: height anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter color: parent.pressed ? theme.palette.normal.focus : theme.palette.normal.foregroundText name: player.repeat == "repeatSingle" ? "media-playlist-repeat-one" : "media-playlist-repeat" objectName: "repeatShape" opacity: player.repeat == "none" ? .4 : 1 asynchronous: true } } /* Previous button */ MouseArea { id: nowPlayingPreviousButton enabled: player.mediaPlayer.playlist.canGoPrevious anchors.right: nowPlayingPlayButton.left anchors.rightMargin: spacing anchors.verticalCenter: nowPlayingPlayButton.verticalCenter height: itemSize width: height onClicked: player.mediaPlayer.playlist.previousWrapper() Icon { id: nowPlayingPreviousIndicator height: itemSize / 2 width: height anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter color: parent.pressed ? theme.palette.normal.focus : theme.palette.normal.foregroundText name: "media-skip-backward" objectName: "previousShape" opacity: parent.enabled ? 1 : .4 asynchronous: true } } /* Play/Pause button */ MouseArea { id: nowPlayingPlayButton anchors.centerIn: parent height: itemSize + (2 * spacing) width: height onClicked: player.mediaPlayer.toggle() Icon { id: nowPlayingPlayIndicator height: itemSize width: height anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter color: parent.pressed ? theme.palette.normal.focus : theme.palette.normal.foregroundText name: player.mediaPlayer.playbackState === MediaPlayer.PlayingState ? "media-playback-pause" : "media-playback-start" objectName: "playShape" asynchronous: true } } /* Next button */ MouseArea { id: nowPlayingNextButton anchors.left: nowPlayingPlayButton.right anchors.leftMargin: spacing anchors.verticalCenter: nowPlayingPlayButton.verticalCenter enabled: player.mediaPlayer.playlist.canGoNext height: itemSize width: height onClicked: player.mediaPlayer.playlist.nextWrapper() Icon { id: nowPlayingNextIndicator height: itemSize / 2 width: height anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter color: parent.pressed ? theme.palette.normal.focus : theme.palette.normal.foregroundText name: "media-skip-forward" objectName: "forwardShape" opacity: parent.enabled ? 1 : .4 asynchronous: true } } /* Shuffle button */ MouseArea { id: nowPlayingShuffleButton anchors.left: nowPlayingNextButton.right anchors.leftMargin: spacing anchors.verticalCenter: nowPlayingPlayButton.verticalCenter height: itemSize width: height onClicked: player.shuffle = !player.shuffle Icon { id: shuffleIcon height: itemSize / 2 width: height anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter color: parent.pressed ? theme.palette.normal.focus : theme.palette.normal.foregroundText name: "media-playlist-shuffle" objectName: "shuffleShape" opacity: player.shuffle ? 1 : .4 asynchronous: true } } /* Object which provides the progress bar when in the queue */ Rectangle { id: playerControlsProgressBar anchors { bottom: parent.bottom left: parent.left right: parent.right } color: styleMusic.common.black height: units.gu(0.25) visible: isListView Rectangle { id: playerControlsProgressBarHint anchors { left: parent.left bottom: parent.bottom } color: theme.palette.normal.focus height: parent.height width: player.mediaPlayer.progress * playerControlsProgressBar.width } } } lomiri-music-app-v3.0.3/app/components/Player.qml000066400000000000000000000324731451274533600220310ustar00rootroot00000000000000/* * Copyright (C) 2015, 2016 * Andrew Hayzen * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtMultimedia 5.6 import QtQuick 2.4 import Qt.labs.settings 1.0 import QtQuick.LocalStorage 2.0 import "../logic/meta-database.js" as Library Item { objectName: "player" // For autopilot as we can't access the MediaPlayer object pad.lv/1269578 readonly property bool isPlaying: mediaPlayerObject.playbackState === MediaPlayer.PlayingState readonly property alias count: mediaPlayerPlaylist.itemCount readonly property alias currentIndex: mediaPlayerPlaylist.currentIndex readonly property alias currentItemSource: mediaPlayerPlaylist.currentItemSource readonly property alias position: mediaPlayerObject.position // FIXME: pad.lv/1269578 use Item as autopilot cannot 'see' a var/QtObject property alias currentMeta: currentMetaItem property alias mediaPlayer: mediaPlayerObject property alias repeat: settings.repeat property alias shuffle: settings.shuffle Item { id: currentMetaItem objectName: "currentMeta" property string album: "" property string art: "" property string author: "" property string filename: "" property string title: "" property bool useFallbackArt: false } // Return the metadata for the source given from mediascanner2 function metaForSource(source) { var blankMeta = { album: "", art: "", author: "", filename: "", title: "" }; source = source.toString(); if (source.indexOf("file://") === 0) { source = source.substring(7); } return musicStore.lookup(decodeFileURI(source)) || blankMeta; } Settings { id: settings category: "PlayerSettings" property string repeat: "none" property bool shuffle: false } MediaPlayer { id: mediaPlayerObject playlist: Playlist { id: mediaPlayerPlaylist playbackMode: { if (settings.shuffle) { Playlist.Random } else if (settings.repeat == "repeatAlbum") { Playlist.Loop } else if (settings.repeat == "repeatSingle") { Playlist.CurrentItemInLoop } else { Playlist.Sequential } } // as that doesn't emit changes readonly property bool canGoPrevious: { // FIXME: pad.lv/1517580 use previousIndex() > -1 after mh implements it currentIndex !== 0 || settings.repeat == "repeatAlbum" || settings.shuffle || // FIXME: pad.lv/1517580 no way to know when we are at the end of a shuffle yet mediaPlayerObject.position > 5000 } readonly property bool canGoNext: { // FIXME: pad.lv/1517580 use nextIndex() > -1 after mh implements it currentIndex !== (itemCount - 1) || settings.repeat == "repeatAlbum" || settings.shuffle // FIXME: pad.lv/1517580 no way to know when we are at the end of a shuffle yet } readonly property int count: itemCount // header actions etc depend on the model having 'count' readonly property bool empty: itemCount === 0 property int pendingCurrentIndex: -1 property var pendingCurrentState: null property int pendingShuffle: -1 onCurrentItemSourceChanged: { var meta = metaForSource(currentItemSource); currentMeta.album = meta.album; currentMeta.art = meta.art; currentMeta.author = meta.author; currentMeta.filename = meta.filename; currentMeta.title = meta.title; currentMeta.useFallbackArt = false; mediaPlayerObject._calcProgress(); } onItemChanged: { console.debug("*** Saving play queue in onItemChanged"); saveQueue() } onItemInserted: { // When add to queue is done on an empty list currentIndex needs to be set if (start === 0 && currentIndex === -1 && pendingCurrentIndex < 1 && pendingShuffle === -1) { currentIndex = 0; pendingCurrentIndex = -1; processPendingCurrentState(); } // Check if the pendingCurrentIndex is now valid if (pendingCurrentIndex !== -1 && pendingCurrentIndex < itemCount) { currentIndex = pendingCurrentIndex; pendingCurrentIndex = -1; processPendingCurrentState(); } // Check if there is pending shuffle // pendingShuffle holds the expected size of the model if (pendingShuffle > -1 && pendingShuffle <= itemCount) { pendingShuffle = -1; nextWrapper(); // find a random track mediaPlayerObject.play(); // next does not enforce play } console.debug("*** Saving play queue in onItemInserted"); saveQueue() } onItemRemoved: { console.debug("*** Saving play queue in onItemRemoved"); saveQueue() } function addItemsFromModel(model) { var items = [] // TODO: remove once playlists uses U1DB if (model.hasOwnProperty("linkLibraryListModel")) { model = model.linkLibraryListModel; } for (var i=0; i < model.rowCount; i++) { items.push(Qt.resolvedUrl(model.get(i, model.RoleModelData).filename)); } player.mediaPlayer.playlist.addItems(items); } // Wrap the clear() method because we need to call stop first function clearWrapper() { // Stop the current playback (this ensures that play is run later) if (mediaPlayerObject.playbackState === MediaPlayer.PlayingState) { mediaPlayerObject.stop(); } clear(); } // Replicates a model.get() on a ms2 model function get(index, role) { return metaForSource(itemSource(index)); } // Wrap the next() method so we can check canGoNext function nextWrapper() { if (canGoNext) { next(); } } // Wrap the previous() method so we can check canGoPrevious function previousWrapper() { if (canGoPrevious) { previous(); } } // Process the pending current PlaybackState function processPendingCurrentState() { if (pendingCurrentState === MediaPlayer.PlayingState) { console.debug("Loading pending state play()"); mediaPlayerObject.play(); } else if (pendingCurrentState === MediaPlayer.PausedState) { console.debug("Loading pending state pause()"); mediaPlayerObject.pause(); } else if (pendingCurrentState === MediaPlayer.StoppedState) { console.debug("Loading pending state stop()"); mediaPlayerObject.stop(); } pendingCurrentState = null; } // Wrapper for removeItems(from, to) so that we can use removeItems(list) until it is implemented upstream function removeItemsWrapper(items) { var previous = -1, end = -1; // Sort indexes backwards so we don't have to deal with offsets when removing items.sort(function(a,b) { return b-a; }); console.debug("To Remove", JSON.stringify(items)); // Merge ranges of indexes into sets of start, end points // and call removeItems as we go along for (var i=0; i < items.length; i++) { if (end == -1) { // first value found set to first end = items[i]; } else if (previous - 1 !== items[i]) { // set has ended (next is not 1 lower) console.debug("RemoveItems", previous, end); player.mediaPlayer.playlist.removeItems(previous, end); end = items[i]; // set new high value for the next set } previous = items[i]; // last value to check if next is 1 lower } // Remove last set in list as well if (items.length > 0) { console.debug("RemoveItems", items[items.length - 1], end); player.mediaPlayer.playlist.removeItems(items[items.length - 1], end); } } function saveQueue(start, end) { // FIXME: load and save do not work yet pad.lv/1510225 // so use our localstorage method for now // save("/home/phablet/.local/share/music.ubports/queue.m3u"); if (mainView.loadedUI) { // Don't be intelligent, just clear and rebuild the queue for now Library.clearQueue(); var sources = []; for (var i=0; i < mediaPlayerPlaylist.itemCount; i++) { sources.push(mediaPlayerPlaylist.itemSource(i)); } if (sources.length > 0) { Library.addQueueList(sources); } } } function setCurrentIndex(index) { // Set the currentIndex but if the itemCount is too low then wait if (index < mediaPlayerPlaylist.itemCount) { mediaPlayerPlaylist.currentIndex = index; } else { pendingCurrentIndex = index; } } function setPendingCurrentState(pendingState) { // Set the PlaybackState to set once pendingCurrentIndex is set pendingCurrentState = pendingState; if (pendingCurrentIndex === -1) { processPendingCurrentState(); } } function setPendingShuffle(modelSize) { // Run next() and play() when the modelSize is reached if (modelSize <= itemCount) { mediaPlayerPlaylist.nextWrapper(); // find a random track mediaPlayerObject.play(); // next does not enforce play } else { pendingShuffle = modelSize; } } } property bool endOfMedia: false property double progress: 0 onDurationChanged: _calcProgress() onPositionChanged: _calcProgress() onStatusChanged: { if (status == MediaPlayer.EndOfMedia && settings.repeat == "none") { console.debug("End of media, stopping.") // Tells the onStopped to set the curentIndex = 0 endOfMedia = true; stop(); } } onStopped: { // hit when pressing next() on last track with repeat off console.debug("onStopped.") // FIXME: Workaround for pad.lv/1494031 in the stopped state // we do not get position/duration info so if there are items in // the queue and we have stopped instead pause if (playlist.itemCount > 0) { // We have just ended media so jump to start of playlist if (endOfMedia) { playlist.currentIndex = 0; // Play then pause otherwise when we come from EndOfMedia // if calls next() until EndOfMedia again play(); } pause(); } endOfMedia = false; // always reset endOfMedia _calcProgress(); // ensures progress bar has reset } function _calcProgress() { if (duration > 0) { progress = position / duration; } else if (position >= duration) { progress = 0; } else { progress = 0; } } function toggle() { if (playbackState === MediaPlayer.PlayingState) { pause(); } else { play(); } } } } lomiri-music-app-v3.0.3/app/components/PlaylistsEmptyState.qml000066400000000000000000000035361451274533600245770ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Rectangle { id: playlistsEmptyState anchors { top: parent.top topMargin: units.gu(11.5) bottom: parent.bottom } color: mainView.backgroundColor Column { anchors.centerIn: parent spacing: units.gu(4) width: units.gu(36) Label { color: styleMusic.libraryEmpty.labelColor elide: Text.ElideRight fontSize: "x-large" horizontalAlignment: Text.AlignLeft maximumLineCount: 2 text: i18n.tr("No playlists found") width: parent.width wrapMode: Text.WordWrap } Label { color: styleMusic.libraryEmpty.labelColor elide: Text.ElideRight fontSize: "large" horizontalAlignment: Text.AlignLeft maximumLineCount: 4 text: i18n.tr("Get more out of Music by tapping the %1 icon to start making playlists for every mood and occasion.").arg('"+"') width: parent.width wrapMode: Text.WordWrap } } } lomiri-music-app-v3.0.3/app/components/Queue.qml000066400000000000000000000060231451274533600216510ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import QtQuick.LocalStorage 2.0 import Lomiri.Components 1.3 import "Delegates" import "Flickables" import "ListItemActions" import "../logic/meta-database.js" as Library MultiSelectListView { id: queueList anchors { bottomMargin: units.gu(1) fill: parent topMargin: units.gu(1) } autoModelMove: false // ensures we use moveItem() not move() in onReorder footer: Item { height: mainView.height - (styleMusic.common.expandHeight + queueList.currentHeight) + units.gu(8) } model: player.mediaPlayer.playlist objectName: "nowPlayingqueueList" property bool isSidebar: false onCountChanged: customdebug("Queue: Now has: " + queueList.count + " tracks") delegate: MusicListItem { id: queueListItem color: player.mediaPlayer.playlist.currentIndex === index ? (isSidebar ? "#3d3d45" : "#2c2c34") : (isSidebar ? "#2c2c34" : styleMusic.mainView.backgroundColor) height: units.gu(7) leadingActions: ListItemActions { actions: [ Remove { onTriggered: player.mediaPlayer.playlist.removeItem(index) } ] } multiselectable: true objectName: "nowPlayingListItem" + index state: "" reorderable: true subtitle { objectName: "artistLabel" text: metaModel.author + ' - ' + metaModel.album } title { color: player.mediaPlayer.playlist.currentIndex === index ? theme.palette.normal.focus : theme.palette.normal.backgroundText objectName: "titleLabel" text: metaModel.title } trailingActions: ListItemActions { actions: [ AddToPlaylist { modelOverride: metaModel // model is not exposed with metadata so use metaModel } ] delegate: ActionDelegate { } } property var metaModel: player.metaForSource(model.source) onItemClicked: { customdebug("File: " + model.source) // debugger trackQueueClick(index); } } onReorder: { console.debug("Move: ", from, to); player.mediaPlayer.playlist.moveItem(from, to); } } lomiri-music-app-v3.0.3/app/components/Style.qml000066400000000000000000000113401451274533600216630ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 QtObject { property QtObject addtoPlaylist: QtObject { property color backgroundColor: theme.palette.normal.background; property color labelColor: common.black; property color labelSecondaryColor: theme.palette.normal.backgroundSecondaryText; property color progressBackgroundColor: theme.palette.normal.background; property color progressForegroundColor: theme.palette.normal.focus; property color progressHandleColor: theme.palette.normal.foregroundText; } property QtObject common: QtObject { property color black: "#000000"; property color white: "#FFFFFF"; property color music: theme.palette.normal.foregroundText; property color subtitle: theme.palette.normal.backgroundSecondaryText; property color expandedColor: "#000000"; //unused property int albumSize: units.gu(10); property int itemHeight: units.gu(12); property int expandHeight: units.gu(7); property int expandedItem: units.gu(2); property int expandedTopMargin: units.gu(13.5); property int expandedLeftMargin: units.gu(2); } property QtObject dialog: QtObject { property color confirmButtonColor: theme.palette.normal.positive; property color confirmRemoveButtonColor: theme.palette.normal.negative; property color cancelButtonColor: theme.name == "Lomiri.Components.Themes.Ambiance" ? LomiriColors.ash : LomiriColors.graphite; property color normalTextFieldColor: common.white; } property QtObject libraryEmpty: QtObject { property color backgroundColor: theme.palette.normal.background; property color labelColor: theme.palette.normal.backgroundText; } property QtObject listView: QtObject { property color highlightColor: common.white; } property QtObject mainView: QtObject{ property color backgroundColor: theme.palette.normal.background property color footerColor: backgroundColor property color headerColor: backgroundColor } property QtObject nowPlaying: QtObject { property color backgroundColor: theme.palette.normal.background; property color foregroundColor: theme.palette.normal.backgroundSecondaryText property color labelColor: theme.palette.normal.backgroundText; property color labelSecondaryColor: theme.palette.normal.backgroundSecondaryText; property color progressBackgroundColor: theme.palette.normal.background; property color progressForegroundColor: theme.palette.normal.focus; property color progressHandleColor: common.white; } property QtObject playerControls: QtObject { property color backgroundColor: "#0f0f0f"; property color labelColor: theme.palette.normal.backgroundText; property color progressBackgroundColor: theme.palette.normal.background; property color progressForegroundColor: theme.palette.normal.focus; } property QtObject popover: QtObject { property color labelColor: theme.palette.normal.foreground; } property QtObject playlist: QtObject { property int infoHeight: units.gu(14); property int playlistItemHeight: units.gu(10); property int playlistAlbumSize: units.gu(8); } property QtObject toolbar: QtObject { property color fullBackgroundColor: theme.palette.normal.background; property color fullInnerPlayCircleColor: "#0d0d0d"; //unused property color fullOuterPlayCircleColor: "#363636"; //unused property color fullProgressBackgroundColor: "#252525"; //unused property color fullProgressTroughColor: theme.palette.normal.activity; } property QtObject albums: QtObject { property int itemHeight: units.gu(4); } property QtObject artists: QtObject { property int itemHeight: units.gu(12.5); } Component.onCompleted: Theme.palette.normal.field=styleMusic.dialog.normalTextFieldColor } lomiri-music-app-v3.0.3/app/components/Themes/000077500000000000000000000000001451274533600212765ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/Themes/Ambiance/000077500000000000000000000000001451274533600227755ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/Themes/Ambiance/BubbleShape.qml000066400000000000000000000076621451274533600256770ustar00rootroot00000000000000/* * Copyright 2016 Canonical Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Item { id: bubbleShape /*! Do not use an LomiriShape but a Rectangle as the background of the BubbleShape. */ property bool square: false /*! The background color of the bubble. */ property color color: square ? theme.palette.normal.background : theme.palette.normal.overlay property point target property string direction: "down" property bool clipContent: false default property alias children: content.children implicitWidth: units.gu(10) implicitHeight: units.gu(8) signal showCompleted() signal hideCompleted() opacity: 0.0 function show() { hideAnimation.stop(); showAnimation.start(); } function hide() { showAnimation.stop(); hideAnimation.start(); } ParallelAnimation { id: showAnimation NumberAnimation { target: bubbleShape property: "opacity" from: 0.0 to: 1.0 duration: LomiriAnimation.FastDuration easing: LomiriAnimation.StandardEasing } NumberAnimation { target: scaleTransform property: (direction === "up" || direction === "down") ? "yScale" : "xScale" from: 0.91 to: 1.0 duration: LomiriAnimation.FastDuration easing: LomiriAnimation.StandardEasing } onStopped: showCompleted() } NumberAnimation { id: hideAnimation target: bubbleShape property: "opacity" from: 1.0 to: 0.0 duration: LomiriAnimation.FastDuration easing: LomiriAnimation.StandardEasing onStopped: hideCompleted() } transform: Scale { id: scaleTransform origin.x: direction === "right" ? bubbleShape.width : direction === "left" ? 0 : bubbleShape.width/2.0 origin.y: direction === "up" ? 0 : direction === "down" ? bubbleShape.height : bubbleShape.height/2.0 } BorderImage { id: shadow anchors.fill: parent anchors.margins: square ? -units.gu(1) : -units.dp(2) anchors.topMargin: square ? 0 : anchors.margins source: !square ? Qt.resolvedUrl("../artwork/bubble_shadow.sci") : Qt.resolvedUrl("../artwork/header_overflow_dropshadow.sci") opacity: 0.8 } LomiriShape { anchors.fill: parent aspect: LomiriShape.Flat backgroundColor: bubbleShape.color source: bubbleShape.clipContent ? shapeSource : null visible: !square } ShaderEffectSource { id: shapeSource visible: bubbleShape.clipContent sourceItem: bubbleShape.clipContent ? content : null hideSource: !square // FIXME: visible: false prevents rendering so make it a nearly // transparent 1x1 pixel instead opacity: 0.01 width: 1 height: 1 } Item { id: content anchors.fill: parent Rectangle { id: colorRect anchors.fill: parent color: bubbleShape.color visible: bubbleShape.clipContent } } } lomiri-music-app-v3.0.3/app/components/Themes/Ambiance/SliderStyle.qml000066400000000000000000000110741451274533600257560ustar00rootroot00000000000000/* * Copyright 2016 Canonical Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 /* The default slider style consists of a bar and a thumb shape. This style is themed using the following properties: - thumbSpacing: spacing between the thumb and the bar */ Item { id: sliderStyle // CUSTOM: This was defined as LomiriColors.blue //property color foregroundColor: theme.palette.normal.activity property color foregroundColor: theme.palette.normal.focus // CUSTOM: This was defined as LomiriColors.ash (#888888) //property color backgroundColor: theme.palette.normal.base property color backgroundColor: "#888888" property real thumbSpacing: units.gu(0) property Item bar: background property Item thumb: thumb implicitWidth: units.gu(38) implicitHeight: units.gu(5) LomiriShapeOverlay { id: background anchors { verticalCenter: parent.verticalCenter right: parent.right left: parent.left } height: units.dp(2) backgroundColor: sliderStyle.backgroundColor aspect: LomiriShape.Flat overlayColor: sliderStyle.foregroundColor overlayRect: Qt.application.layoutDirection == Qt.LeftToRight ? Qt.rect(0.0, 0.0, thumb.x / thumb.barMinusThumbWidth, 1.0) : Qt.rect(1.0 - (thumb.x / thumb.barMinusThumbWidth), 0.0, 1.0, 1.0) } LomiriShape { id: thumb anchors { verticalCenter: parent.verticalCenter topMargin: thumbSpacing bottomMargin: thumbSpacing } property real barMinusThumbWidth: background.width - (thumb.width + 2.0*thumbSpacing) property real position: thumbSpacing + SliderUtils.normalizedValue(styledItem) * barMinusThumbWidth property bool pressed: SliderUtils.isPressed(styledItem) property bool positionReached: x == position x: position /* Enable the animation on x when pressing the slider. Disable it when x has reached the target position. */ onPressedChanged: if (pressed) xBehavior.enabled = true; onPositionReachedChanged: if (positionReached) xBehavior.enabled = false; Behavior on x { id: xBehavior SmoothedAnimation { duration: LomiriAnimation.FastDuration } } width: units.gu(2) height: units.gu(2) // CUSTOM: This was defined as #FFFFFFolors.blue //backgroundColor: theme.palette.normal.raised backgroundColor: "#FFFFFF" // CUSTOM: Commented out to avoid pulling in more dependencies //FocusShape { //} } BubbleShape { id: bubbleShape property real minimumWidth: units.gu(6) property real horizontalPadding: units.gu(1) width: label.implicitWidth + 2*horizontalPadding height: label.implicitHeight + 2*horizontalPadding // FIXME: very temporary implementation property real minX: 0.0 property real maxX: background.width - width property real pointerSize: units.dp(6) property real targetMargin: units.gu(1) property point globalTarget: Qt.point(thumb.x + thumb.width / 2.0, thumb.y - targetMargin) x: MathUtils.clamp(globalTarget.x - width / 2.0, minX, maxX) y: globalTarget.y - height - pointerSize target: Qt.point(globalTarget.x - x, globalTarget.y - y) property bool pressed: SliderUtils.isPressed(styledItem) property bool shouldShow: pressed && label.text != "" onShouldShowChanged: if (shouldShow) { show(); } else { hide(); } Label { id: label anchors.centerIn: parent text: styledItem.formatValue(SliderUtils.liveValue(styledItem)) textSize: Label.Medium color: theme.palette.normal.overlayText } } } lomiri-music-app-v3.0.3/app/components/Themes/artwork/000077500000000000000000000000001451274533600227675ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/Themes/artwork/bubble_arrow@20.png000066400000000000000000000010561451274533600264060ustar00rootroot00000000000000PNG  IHDR#WkIDATxŔKKa3ƙfݲ E7BE!)mSjmZJ¨n.T B zלa僇q朇~ IV{ 5>dK&]LZ${eZAz;!QV_|>6z' t۽K$>x7zY4xb㼶IENDB`lomiri-music-app-v3.0.3/app/components/Themes/artwork/bubble_arrow@30.png000066400000000000000000000017601451274533600264110ustar00rootroot00000000000000PNG  IHDR4I1JPLTE$$$(((<<2IAAAc߳5M1 @Lf:0#36v HP/u܍IENDB`lomiri-music-app-v3.0.3/app/components/ViewButton/000077500000000000000000000000001451274533600221575ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/ViewButton/CMakeLists.txt000066400000000000000000000003221451274533600247140ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB VIEW_BUTTON_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_VIEW_BUTTON_QMLFiles ALL SOURCES ${VIEW_BUTTON_QML_FILES}) lomiri-music-app-v3.0.3/app/components/ViewButton/PlayAllButton.qml000066400000000000000000000022261451274533600254260ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Button { color: theme.palette.normal.positive height: units.gu(4) // TRANSLATORS: this appears in a button with limited space (around 14 characters) text: i18n.tr("Play all") width: units.gu(15) property var model onClicked: { if (model.count > 0) { trackClicked(model, 0) // play track } } } lomiri-music-app-v3.0.3/app/components/ViewButton/QueueAllButton.qml000066400000000000000000000026241451274533600256070ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Button { height: units.gu(4) width: units.gu(15) property var model onClicked: { if (model.count > 0) { player.mediaPlayer.playlist.addItemsFromModel(model) } } Text { anchors { centerIn: parent } elide: Text.ElideRight height: parent.height horizontalAlignment: Text.AlignHCenter // TRANSLATORS: this appears in a button with limited space (around 14 characters) text: i18n.tr("Queue all") verticalAlignment: Text.AlignVCenter width: parent.width - units.gu(2) } } lomiri-music-app-v3.0.3/app/components/ViewButton/ShuffleButton.qml000066400000000000000000000025631451274533600254700ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Button { height: units.gu(4) width: units.gu(15) property var model onClicked: { if (model.count > 0) { playRandomSong(model) } } Text { anchors { centerIn: parent } elide: Text.ElideRight height: parent.height horizontalAlignment: Text.AlignHCenter // TRANSLATORS: this appears in a button with limited space (around 14 characters) text: i18n.tr("Shuffle") verticalAlignment: Text.AlignVCenter width: parent.width - units.gu(2) } } lomiri-music-app-v3.0.3/app/components/Walkthrough/000077500000000000000000000000001451274533600223505ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/components/Walkthrough/CMakeLists.txt000066400000000000000000000003221451274533600251050ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB WALKTHROUGH_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_WALKTHROUGH_QMLFiles ALL SOURCES ${WALKTHROUGH_QML_FILES}) lomiri-music-app-v3.0.3/app/components/Walkthrough/FirstRunWalkthrough.qml000066400000000000000000000022021451274533600270530ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015 * Nekhelesh Ramananthan * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Upstream location: * https://github.com/krnekhelesh/flashback */ import QtQuick 2.4 import Lomiri.Components 1.3 // Initial Walkthrough tutorial Walkthrough { id: walkthrough objectName: "walkthroughPage" appName: "Music" onFinished: { walkthrough.visible = false mainPageStack.goBack() firstRun = false } model: [ Slide1{}, Slide2{}, Slide3{} ] } lomiri-music-app-v3.0.3/app/components/Walkthrough/Slide1.qml000066400000000000000000000046241451274533600242120ustar00rootroot00000000000000/* * Copyright (C) 2014-2015 * Andrew Hayzen * Nekhelesh Ramananthan * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Upstream location: * https://github.com/krnekhelesh/flashback */ import QtQuick 2.4 import Lomiri.Components 1.3 // Slide 1 Component { id: slide1 Item { id: slide1Container LomiriShape { anchors { top: parent.top topMargin: units.gu(6) horizontalCenter: parent.horizontalCenter } height: (parent.height - bodyText.contentHeight - introductionText.height - 4*units.gu(4))/2 radius: "medium" source: Image { id: centerImage source: Qt.resolvedUrl("../../graphics/music-app.svg") asynchronous: true } width: height } Label { id: introductionText anchors { bottom: bodyText.top bottomMargin: units.gu(4) } elide: Text.ElideRight fontSize: "x-large" horizontalAlignment: Text.AlignHLeft maximumLineCount: 2 text: i18n.tr("Welcome to Music") width: units.gu(36) wrapMode: Text.WordWrap } Label { id: bodyText anchors { bottom: parent.bottom bottomMargin: units.gu(10) } fontSize: "large" height: contentHeight horizontalAlignment: Text.AlignHLeft text: i18n.tr("Enjoy your favorite music with Lomiri's Music App. Take a short tour on how to get started or press skip to start listening now.") width: units.gu(36) wrapMode: Text.WordWrap } } } lomiri-music-app-v3.0.3/app/components/Walkthrough/Slide2.qml000066400000000000000000000044601451274533600242110ustar00rootroot00000000000000/* * Copyright (C) 2014-2015 * Andrew Hayzen * Nekhelesh Ramananthan * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Upstream location: * https://github.com/krnekhelesh/flashback */ import QtQuick 2.4 import Lomiri.Components 1.3 // Walkthrough - Slide 2 Component { id: slide2 Item { id: slide2Container Image { id: centerImage anchors { top: parent.top topMargin: units.gu(6) horizontalCenter: parent.horizontalCenter } height: (parent.height - bodyText.contentHeight - introductionText.height - 4*units.gu(4))/2 fillMode: Image.PreserveAspectFit source: Qt.resolvedUrl("../../graphics/sd_phone_icon.png") asynchronous: true } Label { id: introductionText anchors { bottom: bodyText.top bottomMargin: units.gu(4) } elide: Text.ElideRight fontSize: "x-large" horizontalAlignment: Text.AlignHLeft maximumLineCount: 2 text: i18n.tr("Import your music") width: units.gu(36) wrapMode: Text.WordWrap } Label { id: bodyText anchors { bottom: parent.bottom bottomMargin: units.gu(10) } fontSize: "large" horizontalAlignment: Text.AlignHLeft text: i18n.tr("Connect your device to any computer and simply drag files to the Music folder or insert removable media with music.") width: units.gu(36) wrapMode: Text.WordWrap } } } lomiri-music-app-v3.0.3/app/components/Walkthrough/Slide3.qml000066400000000000000000000052501451274533600242100ustar00rootroot00000000000000/* * Copyright (C) 2014-2015 * Andrew Hayzen * Nekhelesh Ramananthan * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Upstream location: * https://github.com/krnekhelesh/flashback */ import QtQuick 2.4 import Lomiri.Components 1.3 // Walkthrough - Slide 7 Component { id: slide7 Item { id: slide7Container Image { id: smileImage anchors { top: parent.top topMargin: units.gu(4) horizontalCenter: parent.horizontalCenter } height: (parent.height - introductionText.height - finalMessage.contentHeight - 4.5*units.gu(4))/2 fillMode: Image.PreserveAspectFit source: Qt.resolvedUrl("../../graphics/music_download_icon.png") asynchronous: true } Label { id: introductionText anchors { bottom: finalMessage.top bottomMargin: units.gu(4) } elide: Text.ElideRight fontSize: "x-large" horizontalAlignment: Text.AlignHLeft maximumLineCount: 2 text: i18n.tr("Download new music") width: units.gu(36) wrapMode: Text.WordWrap } Label { id: finalMessage anchors { bottom: continueButton.top bottomMargin: units.gu(7) } fontSize: "large" horizontalAlignment: Text.AlignHLeft text: i18n.tr("Directly import music bought while browsing online.") width: units.gu(36) wrapMode: Text.WordWrap } Button { id: continueButton anchors { bottom: parent.bottom bottomMargin: units.gu(3) horizontalCenter: parent.horizontalCenter } color: theme.palette.normal.positive height: units.gu(5) text: i18n.tr("Start") width: units.gu(18) onClicked: finished() } } } lomiri-music-app-v3.0.3/app/components/Walkthrough/Walkthrough.qml000066400000000000000000000134161451274533600253670ustar00rootroot00000000000000/* * Copyright (C) 2014-2015 * Andrew Hayzen * Nekhelesh Ramananthan * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Upstream location: * https://github.com/krnekhelesh/flashback */ import QtQuick 2.4 import Lomiri.Components 1.3 Page { id: walkthrough // Property to set the app name used in the walkthrough property string appName // Property to check if this is the first run or not property bool isFirstRun: true // Property to store the slides shown in the walkthrough (Each slide is a component defined in a separate file for simplicity) property list model // Property to signal walkthrough completion signal finished // Do not show the Page Header head { visible: false locked: true } // Global keyboard shortcuts focus: true Keys.onPressed: { switch (event.key) { case Qt.Key_Left: // Left Previous slide previousSlide() break; case Qt.Key_Right: // Right Next slide nextSlide() break; } // Prevent the event from propagating to the MainView event.accepted = true } // Go to next slide, if possible function nextSlide() { if (listView.currentIndex < 2) { listView.currentIndex++ } } // Go to previous slide, if possible function previousSlide() { if (listView.currentIndex > 0) { listView.currentIndex-- } } // ListView to show the slides ListView { id: listView anchors { left: parent.left right: parent.right top: parent.top bottom: slideIndicator.top } model: walkthrough.model snapMode: ListView.SnapOneItem orientation: Qt.Horizontal highlightMoveDuration: LomiriAnimation.FastDuration highlightRangeMode: ListView.StrictlyEnforceRange highlightFollowsCurrentItem: true delegate: Item { width: listView.width height: listView.height clip: true Loader { anchors { bottom: parent.bottom horizontalCenter: parent.horizontalCenter margins: units.gu(2) top: parent.top } sourceComponent: modelData width: units.gu(36) } } } // Label to skip the walkthrough. Label { id: skipLabel color: "white" fontSize: "medium" objectName: "skipLabel" text: i18n.tr("Skip") visible: listView.currentIndex !== 2 width: contentWidth anchors { bottom: parent.bottom left: parent.left margins: units.gu(2) } } MouseArea { anchors { bottom: parent.bottom horizontalCenter: skipLabel.horizontalCenter } height: units.gu(6) visible: listView.currentIndex !== 2 width: skipLabel.width + skipLabel.anchors.margins*2 onClicked: walkthrough.finished() Rectangle { anchors { fill: parent } color: "#FFF" opacity: parent.pressed ? 0.1 : 0 Behavior on opacity { LomiriNumberAnimation { duration: LomiriAnimation.FastDuration } } } } // Indicator element to represent the current slide of the walkthrough Row { id: slideIndicator height: units.gu(6) spacing: units.gu(2) anchors { bottom: parent.bottom horizontalCenter: parent.horizontalCenter } Repeater { model: walkthrough.model.length delegate: Image { anchors.verticalCenter: parent.verticalCenter antialiasing: true height: width source: listView.currentIndex == index ? "../../graphics/Ellipse@27.png" : "../../graphics/Ellipse_15_opacity@27.png" width: units.gu(1.5) asynchronous: true } } } Icon { id: nextIcon anchors { bottom: parent.bottom right: parent.right margins: units.gu(2) } color: "white" height: units.gu(2) name: "chevron" visible: listView.currentIndex !== 2 width: height asynchronous: true } MouseArea { anchors { bottom: parent.bottom horizontalCenter: nextIcon.horizontalCenter } height: units.gu(6) visible: listView.currentIndex !== 2 width: height onClicked: nextSlide() Rectangle { anchors { fill: parent } color: "#FFF" opacity: parent.pressed ? 0.1 : 0 Behavior on opacity { LomiriNumberAnimation { duration: LomiriAnimation.FastDuration } } } } Component.onCompleted: forceActiveFocus() } lomiri-music-app-v3.0.3/app/components/WorkerModelLoader.qml000066400000000000000000000057121451274533600241520ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015 * Andrew Hayzen * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 WorkerScript { id: worker source: "../logic/worker-library-loader.js" property bool canLoad: true property bool completed: false property int i: 0 property var list property var model property bool preLoadComplete: false property int processing: 0 property int syncFactor: 5 onCanLoadChanged: { /* If canLoad has been set back to true then check if there are any remaining items to load in the model */ if (canLoad && list !== undefined && !completed) { process(); } if (!canLoad && i !== 0) { // sync any pending changes when canLoad changes sync() } } onListChanged: { reset(); clear(); } onMessage: { if (messageObject.sync === true) { if (list !== undefined && i >= list.length) { // if synced check if list now complete completed = true } processing--; return; // do not continue from a sync 'pong' only from a process/clear } if (i === 0) { preLoadComplete = true; } if (canLoad && i % syncFactor === 0 && i !== 0) { sync(); } if (canLoad) { // pause if the model is not allowed to load process(); } if (i === 1) { // sync after the first item to prevent empty states sync() } processing--; // minus at end to cause count to go 1->2->1 not 1->0->1 } function clear() { if (list !== undefined) { processing++ sendMessage({'clear': true, 'model': model}) } } // Add the next item in the list to the model otherwise set complete function process() { if (i < list.length) { console.log(JSON.stringify(list[i])); processing++; sendMessage({'add': list[i], 'model': model}); i++; } else { sync() } } function reset() { i = 0; completed = false; } function sync() { processing++; sendMessage({'sync': true, 'model': model}); } } lomiri-music-app-v3.0.3/app/components/WorkerWaiter.qml000066400000000000000000000026521451274533600232160ustar00rootroot00000000000000/* * Copyright (C) 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Timer { // A timer to wait for a worker to stop id: waitForWorker interval: 16 repeat: true property var func property var params // don't use args/arguments as they are already defined/internal property WorkerScript worker onTriggered: { if (worker.processing === 0) { stop() func.apply(this, params) } } // Waits until the worker has stopped and then calls the func(*params) function workerStop(worker, func, params) { waitForWorker.func = func waitForWorker.params = params waitForWorker.worker = worker start() } } lomiri-music-app-v3.0.3/app/graphics/000077500000000000000000000000001451274533600174645ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/graphics/CMakeLists.txt000066400000000000000000000003061451274533600222230ustar00rootroot00000000000000# make the image files visible on qtcreator file(GLOB IMAGE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.png *.svg) add_custom_target(music_ubports_IMAGEFiles ALL SOURCES ${IMAGE_FILES}) lomiri-music-app-v3.0.3/app/graphics/Ellipse@27.png000066400000000000000000000010731451274533600220410ustar00rootroot00000000000000PNG  IHDR䔥PLTELiqxJtRNS/0DȗeQ ( !Ƃ.ӹݾ͞_ ^VzT _]+IDATx^它@=Pz.s6-0<dٝp%wp[0;bEFK\AgI&|Ch%2W" KY^P{׺')`uPzz67qrv:\ۿL<2ϒ211Õ1XHX}f(Y'JhIENDB`lomiri-music-app-v3.0.3/app/graphics/Ellipse_15_opacity@27.png000066400000000000000000000005451451274533600241010ustar00rootroot00000000000000PNG  IHDRA&ZPLTELiqu1tRNS&!"$% #     P"vIDATx^k0 Eƞx()YL#u=ҵ8FZZ:i/4[ahqQ縨Ww-LV7m}U ` 9]4x^X.J؅q\DQl#! #RMnivYKIENDB`lomiri-music-app-v3.0.3/app/graphics/div@27.png000066400000000000000000000001411451274533600212210ustar00rootroot00000000000000PNG  IHDR'PLTE #tRNS5 IDATx^cB^&CIENDB`lomiri-music-app-v3.0.3/app/graphics/music-app-splash.svg000066400000000000000000000346011451274533600233770ustar00rootroot00000000000000 lomiri-music-app-v3.0.3/app/graphics/music-app.svg000066400000000000000000000320551451274533600221100ustar00rootroot00000000000000 lomiri-music-app-v3.0.3/app/graphics/music_download_icon@27.png000066400000000000000000000126031451274533600244640ustar00rootroot00000000000000PNG  IHDRS;PLTE7tRNS`0"쾩 ܝMRHw(| V,hr[4m8@D<I<SIDATx^v@2h}Mz73VLbH OT1eKLX iaf'\lf 娛+S*亣e#tPPja0aUn"c0$0 J(NXi@7{JfG쬓r÷p( sV3xi!]X}#m|ԗ:0}Yʭ RUrS?? fXgk&g&xQ|XE2 I-E+yW$WrN{zCgqIg.2\Ka*~cX `*]2tsXlWj@8*^3 $KKr J ,)ى܆ ~^%Q,R,A|4H{(Q/CU~ۇXscqNFd:_ ^/v$ޗ)O4nGcq>9/kAOKؚ+xVAJx!eᑪC*Y  G2h H4HM )(y )UģRQ+G{G3˝QW 4S\՟+_!̧\Z@b%g@|I  ¶}xNx4}xoeb\0u8"叀|k9}j<k<@ 5e}o\.Ya7c!<>vt+lMRN;mk~b]X ;d<7Cx?qۣ3Fz=}dY`\2x)> #La#gXWk);||j|F)_^ U}j6ܒ&STy+>p1ʔ7xftm\2կv2ԴKg\3_n\ue*pq&q\bLrLA+9ik.y;ٓ"SsLG|(sL'L?VI==j de{SNγ3U)9:<7S5L+_-O=3SB3uL@3/T8}5Ol)SQMmjԞ2`)S+_2 e*\-R)eJR2w? R4W!+ ef¯O'|Ԍ2`ƷD*x 25)?M F{Lm|ߘ2uHbuIyv7Q6DzN]Q}|4B]Mh=O23{oe*f;ճLx'*JV(k4w*ɼ3LGeQoggʻR2sgjLP0ĩFgf=w,o2*~jYn]gR2eJmɔ0?\7IR*ʘ3~LA2R=Lv9$'!ޒkDi/LxZ8S|9WE*!V.|z7^i22mCdN^ѧwP22a,3_KzW)1]'g񌓐Ly[_H@L߯JLL?L1ʹZ|lM]60jczV 3ka2E൘Œ~c?dF _UiL_3~LOW= @җ*PeX*W }R_(<6op>)>`Ձ_~f3Q6mygD;ޣ"S'3%a}goQ Mf7+)|7eZ@Q5ohZxзM$JP3]_JB^*oV}s?Ņ`Vaf B*Ӄ+,1Vݝ9#7"X:.ف@X]Ȇ!l?fE0@+GDO6?7 [AQMI.@ ΩkP*_|`qNoD[HL;X9EQ+a|xբIvquSyzwkݞ/+E5igMr&JiR77>>٣"k.rv" >MZT좂6Dax_#czε@ +"wVV5>=x]{xLz2AפRzE~ܽVlt TK}P 4 czjE4Wd][l~!fkG}A2u-J7"/*:$R $;Rebs. }jD}oCjG'1`wx!ӡ fHBփl m$+U43{tM<Xv!m'MZ? Q:X"Y_2CiaWj9oiGhm"gGr i)CNmC r^FEnCz)\c9<2x l'9œw ^']xQ)#xeO${Óq|ֆ$kcS(SH'϶PdoC2{ѪxVhCr xV VXWg݇d< FYIPDbkZcq 5xfx&m3{(LbMϔ qv/hAi{+qV*zZ^/Ubiࠧ4WlZBsC2h^Ȯ\ w ɱЀ8hLPAxC/lG4x 5j@l%sod ,^#Qc>$n s(&~0HZ%TW%W¶)+Ћ&~k.ŭU,Zب9hl-8]a*`seyb^[ 5kտn4wukJ0y W> #mGt/(A=Z_g]4џ*1H[\|'-h ghh #3Tįꑡ- Ch*5dڀb "AYfad'O iAZ ьOҞ F'Rq'A,짴A䄟(%nI]"9,٩&E,cRҫڐ㬶%NIENDB`lomiri-music-app-v3.0.3/app/graphics/sd_phone_icon@27.png000066400000000000000000000071041451274533600232540ustar00rootroot00000000000000PNG  IHDRMq PLTELiqJ\0tRNS`Pp@ҷ)/ 5E$i{S[>;uKWjԠ 0IDATx^ rZFᭊA hdt6$nx7Rji NmnN3YKZY$@i %sKI‹4^] JY$ |ͮ$ hk$AD3.<&}ͺPtͺ$xkJB'<ߕdS;GI05w`*z|O $ @]ZtZz$@MXNX](K_R=*+K\0zIOgо&r=y'=z@NzXP5W @=zz0aZSSVgޤt_0\j~`LMvi l\= & p\E}u,V֭Лٶ.zcr\^?ۿ.z:N{}5Wzu<*Ƀe&zxuz[BnZRlVI)>&z~Usz=T:`ܜ@/: 1_"Ó6w-(Ze=ڼuXeޮu * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ // First, let's create a short helper function to get the database connection function getDatabase() { return LocalStorage.openDatabaseSync("music-app-metadata", "", "StorageDatabase", 1000000); } function createQueue(tx) { if (tx === undefined) { var db = getDatabase(); db.transaction( function(tx) { createQueue(tx) } ) } else { tx.executeSql("CREATE TABLE IF NOT EXISTS queue(ind INTEGER NOT NULL, filename TEXT)"); } } function clearQueue() { var db = getDatabase(); db.transaction( function(tx) { createQueue(); tx.executeSql('DELETE FROM queue'); }); } function addQueueItem(filename) { var db = getDatabase(); var res=""; db.transaction(function(tx) { var ind = getNextIndex(tx); var rs = tx.executeSql('INSERT OR REPLACE INTO queue (ind, filename) VALUES (?,?);', [ind, filename]); if (rs.rowsAffected > 0) { console.log("QUEUE add OK") res = "OK"; } else { console.log("QUEUE add Fail") res = "Error"; } } ); } function addQueueList(items) { var db = getDatabase(); db.transaction(function(tx) { var ind = getNextIndex(tx); for (var i = 0; i < items.length; i++) { tx.executeSql('INSERT OR REPLACE INTO queue (ind, filename) VALUES (?,?);', [i + ind, items[i]]); } } ); } // Get the next index for the queue function getNextIndex(tx) { var ind; if (tx === undefined) { var db = getDatabase(); db.transaction(function(tx) { ind = getNextIndex(tx); }); } else { var rs = tx.executeSql('SELECT MAX(ind) FROM queue') ind = isQueueEmpty(tx) ? 0 : rs.rows.item(0)["MAX(ind)"] + 1 } return ind; } function moveQueueItem(from, to) { var db = getDatabase(); var res=""; db.transaction(function(tx) { // Track to move put as -1 for now tx.executeSql('UPDATE queue SET ind=? WHERE ind=?;', [-1, from]) // Shuffle tracks inbetween from->to if (from > to) { for (var i = from-1; i >= to; i--) { tx.executeSql('UPDATE queue SET ind=? WHERE ind=?;', [i+1, i]) } } else { for (var j = from+1; j <= to; j++) { tx.executeSql('UPDATE queue SET ind=? WHERE ind=?;', [j-1, j]) } } // Switch moving track to its new position tx.executeSql('UPDATE queue SET ind=? WHERE ind=?;', [to, -1]) }) } // Optimised removeQueue for removing multiple tracks from the queue function removeQueueList(list) { var db = getDatabase() var i; var res = false db.transaction(function (tx) { // Remove all the deleted indexes for (i=0; i < list.length; i++) { tx.executeSql('DELETE FROM queue WHERE ind=?;', [list[i]]) } // Rebuild queue in order var rs = tx.executeSql('SELECT ind FROM queue ORDER BY ind ASC') for (i=0; i < rs.rows.length; i++) { tx.executeSql('UPDATE queue SET ind=? WHERE ind=?;', [i, rs.rows.item(i).ind]) } }) return res } function getQueue() { var db = getDatabase(); var res = []; db.transaction( function(tx) { var rs = tx.executeSql("SELECT * FROM queue ORDER BY ind ASC"); for(var i = 0; i < rs.rows.length; i++) { var filename = rs.rows.item(i).filename; if (filename !== null) { // ms2 doesn't expect the URI scheme so strip file:// if (filename.indexOf("file://") == 0) { filename = filename.substr(7); } if (musicStore.lookup(decodeFileURI(filename)) != null) { res.push(Qt.resolvedUrl(filename)); } } } }); return res; } function isQueueEmpty(tx) { var empty = false; if (tx === undefined) { var db = getDatabase(); var res = 0; db.transaction( function(tx) { empty = isQueueEmpty(tx) }); } else { createQueue(tx); var rs = tx.executeSql("SELECT count(*) as value FROM queue") empty = rs.rows.item(0).value === 0 } return empty } function createRecent() { var db = getDatabase(); db.transaction( function(tx) { // Check of old version of db (or no db) then clear and rebuild if needed try { tx.executeSql("SELECT data FROM recent"); } catch (e) { tx.executeSql('DROP TABLE IF EXISTS recent'); // Data is either the playlist name or album name tx.executeSql("CREATE TABLE IF NOT EXISTS recent(time DATETIME UNIQUE, data TEXT, type TEXT)"); } }); } function clearRecentHistory() { var db = getDatabase(); db.transaction( function(tx) { tx.executeSql('DELETE FROM recent'); }); } // This function is used to insert a recent item into the database function addRecent(data, type) { var db = getDatabase(); console.debug("RECENT", data, type); db.transaction(function (tx) { // Remove old albums/playlists with same name as they have a new time if (type === "album") { tx.executeSql("DELETE FROM recent WHERE type=? AND data=?", ["album", data]) } else if (type === "playlist") { tx.executeSql("DELETE FROM recent WHERE type=? AND data=?", ["playlist", data]) } var rs = tx.executeSql('INSERT OR REPLACE INTO recent (time, data, type) VALUES (?, ?, ?)', [new Date(), data, type]); if (rs.rowsAffected <= 0) { console.debug("RECENT add Fail") } }); } function getRecent() { var res = []; var db = getDatabase(); db.transaction( function(tx) { var rs = tx.executeSql("SELECT * FROM recent ORDER BY time DESC LIMIT 15"); for(var i = 0; i < rs.rows.length; i++) { var dbItem = rs.rows.item(i); console.log("Time:", dbItem.time, ", Data:", dbItem.data, ", Type:", dbItem.type); res.push({"time": dbItem.time, "data": dbItem.data, "type": dbItem.type}); } }); return res; } function recentContainsPlaylist(key) { var db = getDatabase(); var rs; db.transaction(function(tx) { rs = tx.executeSql("SELECT count(*) as value FROM recent WHERE type=? AND data=?", ["playlist", key]); }); return rs.rows.item(0).value > 0; } // Remove albums from recent by album function recentRemoveAlbums(albums) { var db = getDatabase(); db.transaction( function(tx) { for (var i=0; i < albums.length; i++) { tx.executeSql("DELETE FROM recent WHERE type=? AND data=?", ["album", albums[i]]); } }) } function recentRemovePlaylist(key) { var res = false var db = getDatabase(); db.transaction( function(tx) { res = tx.executeSql("DELETE FROM recent WHERE type=? AND data=?", ["playlist", key]).rowsAffected > 0; }) return res; } function recentRenamePlaylist(oldKey, newKey) { var db = getDatabase(); db.transaction( function(tx) { tx.executeSql("UPDATE recent SET data=? WHERE type=? AND data=?", [newKey, "playlist", oldKey]); }); } function isRecentEmpty() { var db = getDatabase(); var res = 0; db.transaction(function(tx) { var rs; try { rs = tx.executeSql("SELECT count(*) as value FROM recent") } catch (e) { rs = null } if (rs !== null && rs.rows.item(0).value > 0) { res = rs.rows.item(0).value; } else { console.log("RECENT does not exist") res = 0; } }); return res === 0; } lomiri-music-app-v3.0.3/app/logic/playlists.js000066400000000000000000000331041451274533600213440ustar00rootroot00000000000000/* * Copyright (C) 2013, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ // LEGACY Helper for the playlists database function getPlaylistsDatabase() { return LocalStorage.openDatabaseSync("music-app-playlists", "", "StorageDatabase", 1000000) } // CURRENT database for individual playlists - the one witht the actual tracks in function getPlaylistDatabase() { return LocalStorage.openDatabaseSync("music-app-playlist", "", "StorageDatabase", 1000000) } // same thing for individal playlists function initializePlaylist() { var db = getPlaylistDatabase() console.debug("Playlist DB is version " + db.version) var playlists = {} // read old playlists into here // does the user have the latest db scheme? if (db.version === "1.0" || db.version === "1.1") { db.changeVersion(db.version, "1.2", function (t) { t.executeSql('DROP TABLE IF EXISTS playlist;') // TODO: later, if we need a db version update, we should keep earlier settings. This is just for now. console.debug("DB: Changing version of playlist db to 1.2 by dropping it.") }) } if (db.version === "1.2" || db.version === "") { var oldDb = getPlaylistsDatabase(); var oldPlaylists = []; oldDb.transaction(function (tx) { try { var rs = tx.executeSql('SELECT name FROM playlists;'); for (var i=0; i < rs.rows.length; i++) { oldPlaylists.push(rs.rows.item(i).name) } } catch (err) { console.debug("Error reading old playlists, probably doesn't exist.") } // Delete old extra db tx.executeSql('DROP TABLE IF EXISTS playlists;'); }); db.changeVersion(db.version, "1.3", function (tx) { var rs; try { rs = tx.executeSql('SELECT * FROM playlist ORDER BY id'); } catch (err) { rs = {rows: []} console.debug("Error reading old playlists tracks, probably doesn't exist.") } console.debug("DB: Changing version of playlist db to 1.3, migrating", rs.rows.length, "tracks") console.debug("Old playlists", JSON.stringify(oldPlaylists)) for (var i=0; i < rs.rows.length; i++) { var dbItem = rs.rows.item(i); if (oldPlaylists.indexOf(dbItem.playlist) === -1) { console.debug("Skipping playlist", dbItem.playlist, "as it was deleted") continue; } if (playlists[dbItem.playlist] === undefined) { playlists[dbItem.playlist] = []; } playlists[dbItem.playlist].push({filename: dbItem.track, title: dbItem.title, author: dbItem.artist, album: dbItem.album }) } tx.executeSql('DROP TABLE IF EXISTS playlist;') }) } db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS playlist(name TEXT PRIMARY KEY, FOREIGN KEY (name) REFERENCES track(playlist));') tx.executeSql('CREATE TABLE IF NOT EXISTS track(i INTEGER NOT NULL, playlist TEXT NOT NULL, filename TEXT, title TEXT, author TEXT, album TEXT, PRIMARY KEY (playlist, i), FOREIGN KEY (playlist) REFERENCES tracks(playlist));') console.debug("DB: Restore", JSON.stringify(playlists)) // Restore old db data if exists for (var playlist in playlists) { console.debug("Adding playlist", playlist) addPlaylist(playlist, tx) for (var i=0; i < playlists[playlist].length; i++) { console.debug("Adding track to playlist", JSON.stringify(playlists[playlist][i])) addToPlaylist(playlist, playlists[playlist][i], tx) } } }) } function addPlaylist(name, tx) { var rs = false; if (tx === undefined) { var db = getPlaylistDatabase() db.transaction(function (tx) { rs = addPlaylist(name, tx) }); } else { console.debug("Add new playlists:", name) try { rs = tx.executeSql('INSERT INTO playlist VALUES (?);', [name]).rowsAffected > 0 } catch (e) { rs = false } } return rs; } function addToPlaylist(playlist, model, tx) { var rs = false if (tx === undefined) { var db = getPlaylistDatabase() db.transaction(function (tx) { rs = addToPlaylist(playlist, model, tx) }); } else { // Generate new index number if records exist, otherwise use 0 rs = tx.executeSql('SELECT MAX(i) FROM track WHERE playlist=?;', playlist) var index = isNaN(rs.rows.item(0)["MAX(i)"]) ? 0 : rs.rows.item( 0)["MAX(i)"] + 1 // Add track to db rs = tx.executeSql( 'INSERT OR REPLACE INTO track VALUES (?,?,?,?,?,?);', [index, playlist, model.filename, model.title, model.author, model.album]).rowsAffected > 0 } return rs } // Method to add multiple tracks to a playlist in 1 transaction function addToPlaylistList(playlist, items, tx) { if (tx === undefined) { var db = getPlaylistDatabase() db.transaction(function (tx) { addToPlaylistList(playlist, items, tx) }); } else { for (var i=0; i < items.length; i++) { addToPlaylist(playlist, items[i], tx) console.debug("Debug: " + items[i].filename + " added to " + playlist) } } } function getPlaylists() { // returns playlists with count and 4 covers var db = getPlaylistDatabase() var res = [] try { db.transaction(function (tx) { var rs = tx.executeSql('SELECT * FROM playlist ORDER BY name COLLATE NOCASE;') for (var i = 0; i < rs.rows.length; i++) { var dbItem = rs.rows.item(i) res.push({ name: dbItem.name, count: getPlaylistCount(dbItem.name, tx) }) } }) } catch (e) { return [] } return res } function getPlaylistTracks(playlist) { var db = getPlaylistDatabase() var j var res = [] var erroneousTracks = []; try { db.transaction(function (tx) { var rs = tx.executeSql('SELECT * FROM track WHERE playlist=?;', [playlist]) for (j = 0; j < rs.rows.length; j++) { var dbItem = rs.rows.item(j) // ms2 doesn't expect the URI scheme so strip file:// if (dbItem.filename.indexOf("file://") === 0) { dbItem.filename = dbItem.filename.substr(7); } if (musicStore.lookup(decodeFileURI(dbItem.filename)) === null) { erroneousTracks.push(dbItem.i); } else { res.push({ i: dbItem.i, filename: dbItem.filename, title: dbItem.title, author: dbItem.author, album: dbItem.album, art: musicStore.lookup(decodeFileURI(dbItem.filename)).art }) } } // remove bad tracks for (j=0; j < erroneousTracks.length; j++) { console.debug("Remove", erroneousTracks[j], "from playlist", playlist); tx.executeSql('DELETE FROM track WHERE playlist=? AND i=?;', [playlist, erroneousTracks[j]]) } reorder(playlist, "remove", tx) }) } catch (e) { return [] } if (erroneousTracks.length > 0) { // reget data as indexes are out of sync res = getPlaylistTracks(playlist) } return res } function getPlaylistCount(playlist, tx) { var rs = 0; if (tx === undefined) { var db = getPlaylistDatabase() db.transaction(function (tx) { rs = getPlaylistCount(playlist, tx) }); } else { try { rs = tx.executeSql('SELECT * FROM track WHERE playlist=?;', [playlist]).rows.length } catch (e) { return rs } } return rs } function getPlaylistCovers(playlist, max) { var db = getPlaylistDatabase() var res = [] // Get a list of unique covers for the playlist try { db.transaction(function (tx) { var rs = tx.executeSql("SELECT * FROM track WHERE playlist=?;", [playlist]) for (var i = 0; i < rs.rows.length && i < (max || rs.rows.length); i++) { if (musicStore.lookup(decodeFileURI(rs.rows.item(i).filename)) !== null) { var row = { author: rs.rows.item(i).author, album: rs.rows.item(i).album, art: musicStore.lookup(decodeFileURI(rs.rows.item(i).filename)).art } if (find(res, row) === null) { res.push(row) } } } }) } catch (e) { return [] } return res } function find(arraytosearch, object) { for (var i = 0; i < arraytosearch.length; i++) { if (arraytosearch[i]["author"] == object["author"] && arraytosearch[i]["album"] == object["album"]) { return i; } } return null; } function renamePlaylist(from, to) { var res = false; if (from !== to) { var db = getPlaylistDatabase() db.transaction(function (tx) { if (addPlaylist(to, tx) === true) { tx.executeSql('UPDATE track SET playlist=? WHERE playlist=?;', [to, from]) removePlaylist(from, tx) res = true } else { res = false } }) } return res; } function removePlaylist(playlist) { var db = getPlaylistDatabase() var res = false db.transaction(function (tx) { tx.executeSql('DELETE FROM track WHERE playlist=?;', [playlist]) res = tx.executeSql('DELETE FROM playlist WHERE name=?;', [playlist]).rowsAffected > 0 }) return res } function removeFromPlaylist(playlist, indexes) { var db = getPlaylistDatabase() db.transaction(function (tx) { for (var i = 0; i < indexes.length; i++) { tx.executeSql('DELETE FROM track WHERE playlist=? AND i=?;', [playlist, indexes[i]]).rowsAffected > 0 } reorder(playlist, "remove", tx) }) } function reorder(playlist, type, tx) { var db = getPlaylistDatabase() if (tx === undefined) { db.transaction(function (tx) { reorder(playlist, type, tx) }); } else { var res = tx.executeSql( "SELECT * FROM track WHERE i > ? AND playlist=? ORDER BY i ASC;", [-1, playlist]) var i; if (type === "remove") { for (i = 0; i < res.rows.length; i++) { tx.executeSql('UPDATE track SET i=? WHERE i=? AND playlist=?;', [i, res.rows.item(i).i, playlist]) } } else { // insert -1 at {type}, shuffle >= {type} + 1 and put -1 in the gap for (i=res.rows.item(res.rows.length - 1).i; i >= type; i--) { tx.executeSql('UPDATE track SET i=i + 1 WHERE i >= ? AND playlist=?;', [i, playlist]) } tx.executeSql('UPDATE track SET i=? WHERE i=? AND playlist=?;', [type, -1, playlist]) } } } function move(playlist, from, to) { var db = getPlaylistDatabase() console.debug("Move", playlist, from, to) db.transaction(function (tx) { // Hide track from list tx.executeSql('UPDATE track SET i=? WHERE i=? AND playlist=?;', [-1, from, playlist]) reorder(playlist, "remove", tx) // 'remove' resorting the queue reorder(playlist, to, tx) // insert the track in the new position }) } function reset() { var db = getPlaylistDatabase() db.transaction(function (tx) { tx.executeSql('DROP TABLE IF EXISTS playlist;') tx.executeSql('DROP TABLE IF EXISTS track;') }) console.debug("Playlists deleted!") } lomiri-music-app-v3.0.3/app/logic/stored-request.js000066400000000000000000000016211451274533600223050ustar00rootroot00000000000000/* * Copyright (C) 2015 * Andrew Hayzen * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ .pragma library var storedRequest = null function store(func) { storedRequest = func } function run() { if (storedRequest !== null) { console.debug("Running stored request") storedRequest() storedRequest = null; } } lomiri-music-app-v3.0.3/app/logic/worker-library-loader.js000066400000000000000000000022121451274533600235330ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ WorkerScript.onMessage = function(msg) { if (msg.clear === true) { msg.model.clear(); msg.model.sync(); WorkerScript.sendMessage({}); } else if (msg.sync === true) { msg.model.sync(); // updates the changes to the list WorkerScript.sendMessage({"sync": true}); } else { msg.model.append(msg.add); WorkerScript.sendMessage({}); } } lomiri-music-app-v3.0.3/app/music-app.qml000066400000000000000000001106021451274533600202750ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * Copyright: 2020 UBports * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 import MediaScanner 0.1 import Qt.labs.settings 1.0 import QtSystemInfo 5.0 import QtMultimedia 5.6 import QtQuick.LocalStorage 2.0 import QtGraphicalEffects 1.0 import "logic/stored-request.js" as StoredRequest import "logic/meta-database.js" as Library import "logic/playlists.js" as Playlists import "components" import "components/Helpers" import "ui" MainView { objectName: "musicMainView" applicationName: "music.ubports" id: mainView backgroundColor: styleMusic.mainView.backgroundColor theme.name: "Lomiri.Components.Themes.SuruDark" // Startup settings Settings { id: startupSettings category: "StartupSettings" property bool firstRun: true property int queueIndex: 0 property int tabIndex: -1 property bool keepDisplayOn: false onFirstRunChanged: { if (!firstRun) { StoredRequest.run() } } } ScreenSaver { id: screen_saver screenSaverEnabled: ((player.mediaPlayer.playbackState != MediaPlayer.PlayingState) || (!startupSettings.keepDisplayOn)) || Qt.application.state != Qt.ApplicationActive } Connections { // save the current queueIndex for when the app restarts target: player.mediaPlayer.playlist onCurrentIndexChanged: startupSettings.queueIndex = player.mediaPlayer.playlist.currentIndex } // Global keyboard shortcuts focus: true Keys.onPressed: { if(event.key === Qt.Key_Escape) { if (mainPageStack.currentMusicPage.currentDialog !== null) { PopupUtils.close(mainPageStack.currentMusicPage.currentDialog) } else if (mainPageStack.currentMusicPage.searchable && mainPageStack.currentMusicPage.state === "search") { mainPageStack.currentMusicPage.state = "default" } else { mainPageStack.goBack(); // Esc Go back } } else if(event.modifiers === Qt.AltModifier) { var position; switch (event.key) { case Qt.Key_Right: // Alt+Right Seek forward +10secs position = player.mediaPlayer.position + 10000 < player.mediaPlayer.duration ? player.mediaPlayer.position + 10000 : player.mediaPlayer.duration; player.mediaPlayer.seek(position); break; case Qt.Key_Left: // Alt+Left Seek backwards -10secs position = player.mediaPlayer.position - 10000 > 0 ? player.mediaPlayer.position - 10000 : 0; player.mediaPlayer.seek(position); break; } } else if(event.modifiers === Qt.ControlModifier) { switch (event.key) { case Qt.Key_Left: // Ctrl+Left Previous Song player.mediaPlayer.playlist.previousWrapper(); break; case Qt.Key_Right: // Ctrl+Right Next Song player.mediaPlayer.playlist.nextWrapper(); break; case Qt.Key_Up: // Ctrl+Up Volume up player.mediaPlayer.volume = player.mediaPlayer.volume + .1 > 1 ? 1 : player.mediaPlayer.volume + .1 break; case Qt.Key_Down: // Ctrl+Down Volume down player.mediaPlayer.volume = player.mediaPlayer.volume - .1 < 0 ? 0 : player.mediaPlayer.volume - .1 break; case Qt.Key_R: // Ctrl+R Repeat toggle if (player.mediaPlayer.repeat == "none") { player.mediaPlayer.repeat == "repeatSingle" } else if (player.mediaPlayer.repeat == "repeatSingle") { player.mediaPlayer.repeat == "repeatAlbum" } else if (player.mediaPlayer.repeat == "repeatAlbum") { player.mediaPlayer.repeat == "none" } else { player.mediaPlayer.repeat == "none" } break; case Qt.Key_F: // Ctrl+F Show Search popup if (mainPageStack.currentMusicPage.searchable && mainPageStack.currentMusicPage.state === "default") { mainPageStack.currentMusicPage.state = "search" header.show() } break; case Qt.Key_J: // Ctrl+J Jump to playing song tabs.pushNowPlaying() mainPageStack.currentPage.setListView(true) break; case Qt.Key_N: // Ctrl+N Show Now playing tabs.pushNowPlaying() break; case Qt.Key_P: // Ctrl+P Toggle playing state player.mediaPlayer.toggle(); break; case Qt.Key_Q: // Ctrl+Q Quit the app Qt.quit(); break; case Qt.Key_U: // Ctrl+U Shuffle toggle player.mediaPlayer.shuffle = !player.mediaPlayer.shuffle break; } } else { switch (event.key) { case Qt.Key_MediaPlay: // Play Toggle playing state case Qt.Key_MediaPause: // Pause Toggle playing state player.toggle(); break; case Qt.Key_MediaPrev: // Prev Previous Song player.previousSong(true); break; case Qt.Key_MediaNext: // Next Next Song player.nextSong(true, true); break; } } } // Arguments during startup Arguments { id: args //defaultArgument.help: "Expects URI of the track to play." // should be used when bug is resolved //defaultArgument.valueNames: ["URI"] // should be used when bug is resolved // grab a file Argument { name: "url" help: "URI for track to run at start." required: false valueNames: ["track"] } // Debug/development mode Argument { name: "debug" help: "Start Music in a debug mode. Will show more output." required: false } } Action { id: nextAction text: i18n.tr("Next") keywords: i18n.tr("Next Track") onTriggered: player.mediaPlayer.playlist.nextWrapper() } Action { id: playsAction text: player.mediaPlayer.playbackState === MediaPlayer.PlayingState ? i18n.tr("Pause") : i18n.tr("Play") keywords: player.mediaPlayer.playbackState === MediaPlayer.PlayingState ? i18n.tr("Pause Playback") : i18n.tr("Continue or start playback") onTriggered: player.mediaPlayer.toggle() } Action { id: backAction text: i18n.tr("Back") keywords: i18n.tr("Go back to last page") onTriggered: mainPageStack.goBack(); } // With a default Quit action only the first 4 actions are displayed // until the user searches for them within the HUD Action { id: prevAction text: i18n.tr("Previous") keywords: i18n.tr("Previous Track") onTriggered: player.mediaPlayer.playlist.previousWrapper() } Action { id: stopAction text: i18n.tr("Stop") keywords: i18n.tr("Stop Playback") onTriggered: player.mediaPlayer.stop() } actions: [nextAction, playsAction, prevAction, stopAction, backAction] UriHandlerHelper { id: uriHandler } ContentHubHelper { id: contentHub } UserMetricsHelper { id: userMetrics } // Design stuff Style { id: styleMusic } width: units.gu(100) height: units.gu(80) WorkerWaiter { id: waitForWorker } // Run on startup Component.onCompleted: { i18n.domain = "lomiri-music-app"; Library.createRecent() // initialize recent Library.createQueue() // create queue if it doesn't exist // initialize playlists Playlists.initializePlaylist() if (!args.values.url) { // load the previous queue as there are no args // FIXME: load and save do not work yet pad.lv/1510225 // so use our localstorage method for now // player.mediaPlayer.playlist.load("/home/phablet/.local/share/music.ubports/queue.m3u") // use onloaded() and onLoadFailed() to confirm it is complete if (!Library.isQueueEmpty()) { console.debug("*** Restoring library queue"); player.mediaPlayer.playlist.addItems(Library.getQueue()); player.mediaPlayer.playlist.setCurrentIndex(queueIndex); player.mediaPlayer.playlist.setPendingCurrentState(MediaPlayer.PausedState); } else { console.debug("Queue is empty, not loading any recent tracks"); } } // everything else loading.visible = true // push the page to view mainPageStack.push(tabs) // if a tab index exists restore it, otherwise goto Recent if there are items otherwise go to Albums tabs.selectedTabIndex = startupSettings.tabIndex === -1 ? (Library.isRecentEmpty() ? albumsTab.index : 0) : (startupSettings.tabIndex > tabs.count - 1 ? tabs.count - 1 : startupSettings.tabIndex) loadedUI = true; // Run post load tabs.ensurePopulated(tabs.selectedTab); // Display walkthrough on first run, even if the user has music if (firstRun) { mainPageStack.push(Qt.resolvedUrl("components/Walkthrough/FirstRunWalkthrough.qml"), {}) } if (args.values.url) { uriHandler.process(args.values.url, true); } } // VARIABLES property string musicName: i18n.tr("Music") property bool toolbarShown: musicToolbar.visible property bool selectedAlbum: false property alias firstRun: startupSettings.firstRun property alias queueIndex: startupSettings.queueIndex property bool noMusic: allSongsModel.rowCount === 0 && allSongsModelModel.status === SongsModel.Ready && loadedUI property bool emptyState: noMusic && !firstRun && !contentHub.processing property Page emptyPage signal listItemSwiping(int i) property bool wideAspect: width >= units.gu(95) && loadedUI property bool loadedUI: false // property to detect if the UI has finished // FUNCTIONS onEmptyStateChanged: { if (emptyState) { emptyPage = mainPageStack.push(Qt.resolvedUrl("ui/LibraryEmptyState.qml"), {}) } else { mainPageStack.popPage(emptyPage) } } // Custom debug funtion that's easier to shut off function customdebug(text) { var debug = true; // set to "0" for not debugging //if (args.values.debug) { // *USE LATER* if (debug) { console.debug(i18n.tr("Debug: ")+text); } } // Converts an duration in ms to a formated string ("minutes:seconds") function durationToString(duration) { var minutes = Math.floor((duration/1000) / 60); var seconds = Math.floor((duration/1000)) % 60; // Make sure that we never see "NaN:NaN" if (minutes.toString() == 'NaN') minutes = 0; if (seconds.toString() == 'NaN') seconds = 0; return minutes + ":" + (seconds<10 ? "0"+seconds : seconds); } // Make dictionary from model item function makeDict(model) { return { album: model.album, art: model.art, author: model.author, filename: model.filename || model.source, title: model.title }; } // Clear the queue, queue this model and play the specific index function trackClicked(model, index, play) { // TODO: remove once playlists uses U1DB if (model.hasOwnProperty("linkLibraryListModel")) { model = model.linkLibraryListModel; } var file = Qt.resolvedUrl(model.get(index, model.RoleModelData).filename); play = play === undefined ? true : play // default play to true player.mediaPlayer.playlist.clearWrapper(); // clear the old model player.mediaPlayer.playlist.setCurrentIndex(index); player.mediaPlayer.playlist.addItemsFromModel(model); if (play) { // Set the pending state for the playlist // this will be set once the currentIndex has been appened to the playlist player.mediaPlayer.playlist.setPendingCurrentState(MediaPlayer.PlayingState); // Show the Now playing page and make sure the track is visible tabs.pushNowPlaying(); } } // Play or pause a current track in the queue // - the index has been tapped by the user function trackQueueClick(index) { if (player.mediaPlayer.playlist.currentIndex === index) { player.mediaPlayer.toggle(); } else { player.mediaPlayer.playlist.setCurrentIndex(index); player.mediaPlayer.playlist.setPendingCurrentState(MediaPlayer.PlayingState); } } // Clear the queue and play a random track from this model // - user has selected "Shuffle" in album/artists or "Tap to play random" function playRandomSong(model) { // If no model is given use all the tracks if (model === undefined) { model = allSongsModel; } player.mediaPlayer.playlist.clearWrapper(); player.mediaPlayer.playlist.addItemsFromModel(model); player.shuffle = true; // Once the model count has been reached in the queue // shuffle the model player.mediaPlayer.playlist.setPendingShuffle(model.count); tabs.pushNowPlaying(); } // Wrapper function around decodeURIComponent() to prevent exceptions // from bubbling up to the app. function decodeFileURI(filename) { var newFilename = ""; try { newFilename = decodeURIComponent(filename); } catch (e) { newFilename = filename; console.log("Unicode decoding error:", filename, e.message) } return newFilename; } // Load mediascanner store MediaStore { id: musicStore } SortFilterModel { id: allSongsModel objectName: "allSongsModel" property alias rowCount: allSongsModelModel.rowCount model: SongsModel { id: allSongsModelModel objectName: "allSongsModelModel" store: musicStore // if any tracks are removed from ms2 then check they are not in the queue onFilled: { var i var removed = [] // Find tracks from the queue that aren't in ms2 anymore for (i=0; i < player.mediaPlayer.playlist.count; i++) { var file = decodeFileURI(player.mediaPlayer.playlist.itemSource(i)); // ms2 doesn't expect the URI scheme so strip file:// if (file.indexOf("file://") === 0) { file = file.substr(7); } if (musicStore.lookup(file) === null) { removed.push(i) } } // If there are removed tracks then remove them from the queue and store if (removed.length > 0) { console.debug("Removed queue:", JSON.stringify(removed)) player.mediaPlayer.playlist.removeItemsWrapper(removed.slice()); } // Loop through playlists, getPlaylistTracks will remove any tracks that don't exist var playlists = Playlists.getPlaylists() for (i=0; i < playlists.length; i++) { Playlists.getPlaylistTracks(playlists[i].name) } // TODO: improve in refactoring to be able detect when a track is removed // Update playlists page if (tabs.selectedTab == playlistsTab) { playlistModel.filterPlaylists() } } } sort.property: "title" sort.order: Qt.AscendingOrder sortCaseSensitivity: Qt.CaseInsensitive } AlbumsModel { id: allAlbumsModel store: musicStore // if any tracks are removed from ms2 then check they are not in recent onFilled: { var albums = [] var i var removed = [] for (i=0; i < allAlbumsModel.count; i++) { albums.push(allAlbumsModel.get(i, allAlbumsModel.RoleTitle)) } // Find albums from recent that aren't in ms2 anymore var recent = Library.getRecent() for (i=0; i < recent.length; i++) { if (recent[i].type === "album" && albums.indexOf(recent[i].data) === -1) { removed.push(recent[i].data) } } // If there are removed tracks then remove them from recent if (removed.length > 0) { console.debug("Removed recent:", JSON.stringify(removed)) Library.recentRemoveAlbums(removed) if (recentPage.visible) { recentModel.filterRecent() } else { recentPage.changed = true } } } } SongsModel { id: songsAlbumArtistModel store: musicStore onStatusChanged: { if (status === SongsModel.Ready) { // Play album it tracks exist if (rowCount > 0 && selectedAlbum) { trackClicked(songsAlbumArtistModel, 0, true); // Add album to recent list Library.addRecent(songsAlbumArtistModel.get(0, SongsModel.RoleModelData).album, "album") recentModel.filterRecent() } else if (selectedAlbum) { console.debug("Unknown artist-album " + artist + "/" + album + ", skipping") } selectedAlbum = false; // Clear filter for artist and album songsAlbumArtistModel.albumArtist = "" songsAlbumArtistModel.album = "" } } } // WHERE THE MAGIC HAPPENS Player { id: player } // TODO: Used by playlisttracks move to U1DB LibraryListModel { id: albumTracksModel } // TODO: used by recent items move to U1DB LibraryListModel { id: recentModel property bool complete: false onPreLoadCompleteChanged: { complete = true; if (preLoadComplete) { loading.visible = false recentTabRepeater.loading = false recentTabRepeater.populated = true // Ensure any active tabs are insync as they use a copy of the repeater state for (var i=0; i < recentTabRepeater.count; i++) { recentTabRepeater.itemAt(i).loading = false recentTabRepeater.itemAt(i).populated = true } } } } // TODO: list of playlists move to U1DB // create the listmodel to use for playlists LibraryListModel { id: playlistModel syncFactor: 1 onPreLoadCompleteChanged: { if (preLoadComplete) { loading.visible = false playlistsTab.loading = false playlistsTab.populated = true } } } PageStack { id: mainPageStack anchors { bottom: parent.bottom fill: undefined left: parent.left right: nowPlayingSidebarLoader.left top: parent.top } clip: true // otherwise listitems actions overflow // Properties storing the current page info property Page currentMusicPage: null // currentPage can be Tabs property bool popping: false /* Helper functions */ // Go back up the stack if possible function goBack() { // Ensure in the case that goBack is called programmatically that any dialogs are closed if (mainPageStack.currentMusicPage && mainPageStack.currentMusicPage.currentDialog !== null) { PopupUtils.close(mainPageStack.currentMusicPage.currentDialog) } if (depth > 1) { pop() } } // Pop a specific page in the stack function popPage(page) { var tmpPages = [] // Ensure in the case that popPage is called programmatically that any dialogs are closed if (page.currentDialog !== undefined && page.currentDialog !== null) { PopupUtils.close(page.currentDialog) } popping = true while (currentPage !== page && depth > 0) { tmpPages.push(currentPage) pop() } if (depth > 0) { pop() } for (var i=tmpPages.length - 1; i > -1; i--) { push(tmpPages[i]) } popping = false } // Set the current page, and any parent/stacks function setPage(childPage) { if (!popping) { currentMusicPage = childPage; } } Tabs { id: tabs anchors { fill: parent } property Tab lastTab: selectedTab property list tabActions: [ Action { enabled: recentTabRepeater.count > 0 objectName: "recentTabAction" text: enabled ? recentTabRepeater.itemAt(0).title : "" visible: enabled onTriggered: { if (enabled) { tabs.selectedTabIndex = recentTabRepeater.itemAt(0).index } } }, Action { objectName: "artistsTabAction" text: artistsTab.title onTriggered: tabs.selectedTabIndex = artistsTab.index }, Action { objectName: "albumsTabAction" text: albumsTab.title onTriggered: tabs.selectedTabIndex = albumsTab.index }, Action { objectName: "genresTabAction" text: genresTab.title onTriggered: tabs.selectedTabIndex = genresTab.index }, Action { objectName: "songsTabAction" text: songsTab.title onTriggered: tabs.selectedTabIndex = songsTab.index }, Action { objectName: "playlistsTabAction" text: playlistsTab.title onTriggered: tabs.selectedTabIndex = playlistsTab.index } // }, // Action { // objectName: "settingsTabAction" // text: settingsTab.title // onTriggered: tabs.selectedTabIndex = settingsTab.index // } ] property bool completed: false Component.onCompleted: completed = true onSelectedTabChanged: { // pause loading of the models in the old tab if (lastTab !== null && lastTab !== selectedTab) { allowLoading(lastTab, false); } lastTab = selectedTab; ensurePopulated(selectedTab); } onSelectedTabIndexChanged: { if (loadedUI) { // store the tab index if changed by the user startupSettings.tabIndex = selectedTabIndex } } // Use a repeater to 'hide' the recent tab when the model is empty // A repeater is used because the Tabs component respects adds and // removes. Whereas replacing the list tabChildren does not appear // to respect removes and setting the page as active: false causes // the page to be blank but the action to still in the overflow Repeater { id: recentTabRepeater // If the model has not loaded and at startup the db was not empty // then show recent or // If the workerlist has been set and it has values then show recent model: (!recentModel.preLoadComplete && !startupRecentEmpty) || (recentModel.workerList !== undefined && recentModel.workerList.length > 0) ? 1 : 0 delegate: Component { // First tab is all music Tab { property bool populated: recentTabRepeater.populated property var loader: [recentModel.filterRecent] property bool loading: recentTabRepeater.loading property var model: [recentModel, albumTracksModel] id: recentTab objectName: "recentTab" anchors.fill: parent title: i18n.tr("Recent") // Tab content begins here page: Loader { width: mainPageStack.width height: mainPageStack.height active: tabs.selectedTab == recentTab source: Qt.resolvedUrl("ui/Recent.qml") } } } // Store the startup state of the db separately otherwise // it breaks the binding of model property bool startupRecentEmpty: Library.isRecentEmpty() // cached values of the recent model that are copied when // the tab is created property bool loading: false property bool populated: false onCountChanged: { if (count === 0 && loadedUI) { // Jump to the albums tab when recent is empty tabs.selectedTabIndex = albumsTab.index } else if (count > 0 && !loadedUI) { // UI is still loading and recent tab has been inserted // so move the selected index 'down' as the value is // not auto updated - this is for the case of loading // directly to the recent tab (otherwise the content // appears as the second tab but the tabs think they are // on the first tab) tabs.selectedTabIndex -= 1 } else if (count > 0 && loadedUI) { // tab inserted while the app is running so move the // selected index 'up' to keep the same position tabs.selectedTabIndex += 1 } } } // Second tab is arists Tab { property bool populated: true property var loader: [] property bool loading: false property var model: [] id: artistsTab objectName: "artistsTab" anchors.fill: parent title: i18n.tr("Artists") // tab content page: Loader { width: mainPageStack.width height: mainPageStack.height // condition on tabs.completed necessary to avoid QTBUG 54657 // https://bugreports.qt.io/browse/QTBUG-54657 active: tabs.completed && tabs.selectedTab == artistsTab source: Qt.resolvedUrl("ui/Artists.qml") } } // third tab is albums Tab { property bool populated: true property var loader: [] property bool loading: false property var model: [] id: albumsTab objectName: "albumsTab" anchors.fill: parent title: i18n.tr("Albums") // Tab content begins here page: Loader { width: mainPageStack.width height: mainPageStack.height // condition on tabs.completed necessary to avoid QTBUG 54657 // https://bugreports.qt.io/browse/QTBUG-54657 active: tabs.completed && tabs.selectedTab == albumsTab source: Qt.resolvedUrl("ui/Albums.qml") } } // forth tab is genres Tab { property bool populated: true property var loader: [] property bool loading: false property var model: [] id: genresTab objectName: "genresTab" anchors.fill: parent title: i18n.tr("Genres") // Tab content begins here page: Loader { width: mainPageStack.width height: mainPageStack.height // condition on tabs.completed necessary to avoid QTBUG 54657 // https://bugreports.qt.io/browse/QTBUG-54657 active: tabs.completed && tabs.selectedTab == genresTab source: Qt.resolvedUrl("ui/Genres.qml") } } // fourth tab is all songs Tab { property bool populated: true property var loader: [] property bool loading: false property var model: [] id: songsTab objectName: "songsTab" anchors.fill: parent title: i18n.tr("Tracks") // Tab content begins here page: Loader { width: mainPageStack.width height: mainPageStack.height // condition on tabs.completed necessary to avoid QTBUG 54657 // https://bugreports.qt.io/browse/QTBUG-54657 active: tabs.completed && tabs.selectedTab == songsTab source: Qt.resolvedUrl("ui/Songs.qml") } } // fifth tab is the playlists Tab { property bool populated: false property var loader: [playlistModel.filterPlaylists] property bool loading: false property var model: [playlistModel, albumTracksModel] id: playlistsTab objectName: "playlistsTab" anchors.fill: parent title: i18n.tr("Playlists") // Tab content begins here page: Loader { width: mainPageStack.width height: mainPageStack.height // condition on tabs.completed necessary to avoid QTBUG 54657 // https://bugreports.qt.io/browse/QTBUG-54657 active: tabs.completed && tabs.selectedTab == playlistsTab source: Qt.resolvedUrl("ui/Playlists.qml") } } // // sixth tab is settings // Tab { // property bool populated: true // property bool loading: false // id: settingsTab // objectName: "settingsTab" // anchors.fill: parent // title: i18n.tr("Settings") // // // Tab content begins here // page: SettingsPage { // id: settingsPage // } // } // Set the models in the tab to allow/disallow loading function allowLoading(tabToLoad, state) { if (tabToLoad && tabToLoad.model !== undefined) { for (var i=0; i < tabToLoad.model.length; i++) { tabToLoad.model[i].canLoad = state; } } } function ensurePopulated(selectedTab) { if (selectedTab) { // check not null or undefined allowLoading(selectedTab, true); // allow loading of the models if (!selectedTab.populated && !selectedTab.loading && loadedUI) { loading.visible = true selectedTab.loading = true if (selectedTab.loader !== undefined) { for (var i=0; i < selectedTab.loader.length; i++) { selectedTab.loader[i](); } } } loading.visible = selectedTab.loading || !selectedTab.populated } } function pushNowPlaying() { if (!wideAspect) { // only push if on a different page if (mainPageStack.currentPage.title !== i18n.tr("Now playing")) { mainPageStack.push(Qt.resolvedUrl("ui/NowPlaying.qml"), {}) } if (mainPageStack.currentPage.isListView === true) { mainPageStack.currentPage.setListView(false); // ensure full view } } } } // end of tabs } // // Components that are ontop of the PageStack // Loader { id: nowPlayingSidebarLoader anchors { // start offscreen bottom: parent.bottom left: parent.right leftMargin: shown && status === Loader.Ready ? -width : 0 top: parent.top } asynchronous: true // use source as empty string instead of active false otherwise item // isn't fully unloaded and appears in autopilot twice // http://doc.qt.io/qt-5/qml-qtquick-loader.html#source-prop source: shown || anchors.leftMargin < 0 ? "components/NowPlayingSidebar.qml" : "" visible: width > 0 width: units.gu(40) property bool shown: loadedUI && wideAspect && player.mediaPlayer.playlist.itemCount > 0 Behavior on anchors.leftMargin { NumberAnimation { } } } Loader { id: musicToolbar anchors { left: parent.left right: parent.right top: parent.bottom topMargin: !wideAspect && status === Loader.Ready ? -height : 0 } asynchronous: true // use source as empty string instead of active false otherwise item // isn't fully unloaded and appears in autopilot twice // http://doc.qt.io/qt-5/qml-qtquick-loader.html#source-prop source: !wideAspect || anchors.topMargin < 0 ? "components/MusicToolbar.qml" : "" visible: (mainPageStack.currentPage && (mainPageStack.currentPage.showToolbar || mainPageStack.currentPage.showToolbar === undefined)) && !firstRun && !noMusic && anchors.topMargin < 0 Behavior on anchors.topMargin { NumberAnimation { } } } LoadingSpinnerComponent { id: loading } } // end of main view lomiri-music-app-v3.0.3/app/ui/000077500000000000000000000000001451274533600163015ustar00rootroot00000000000000lomiri-music-app-v3.0.3/app/ui/AddToPlaylist.qml000066400000000000000000000120351451274533600215320ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import QtQuick.LocalStorage 2.0 import "../logic/meta-database.js" as Library import "../logic/playlists.js" as Playlists import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" /* NOTE: * Text is barly visible as of right now and a bug report has been filed: * https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1225778 * * Wait until the bug is resolved, or move on to use other stuff then ListItems. */ // Page that will be used when adding tracks to playlists MusicPage { id: addToPlaylistPage objectName: "addToPlaylistPage" // TRANSLATORS: this appears in the header with limited space (around 20 characters) title: i18n.tr("Select playlist") searchable: true searchResultsCount: addToPlaylistModelFilter.count showToolbar: false state: "default" states: [ PlaylistsHeadState { newPlaylistEnabled: allSongsModel.count > 0 searchEnabled: playlistModel.model.count > 0 && allSongsModel.count > 0 thisPage: addToPlaylistPage }, SearchHeadState { id: searchHeader thisPage: addToPlaylistPage } ] // FIXME: workaround for pad.lv/1531016 (gridview juddery) anchors { bottom: parent.bottom fill: undefined left: parent.left top: parent.top } height: mainPageStack.height + musicToolbar.height width: mainPageStack.width property var chosenElements: [] onVisibleChanged: { // Load the playlistmodel if it hasn't loaded or is empty if (visible && (!playlistModel.completed || playlistModel.model.count === 0)) { playlistModel.canLoad = true // ensure the model canLoad playlistModel.filterPlaylists() } } MusicGridView { id: addtoPlaylistView itemWidth: units.gu(12) heightOffset: units.gu(9.5) model: SortFilterModel { // Sorting disabled as it is incorrect on first run (due to workers?) // and SQL sorts the data correctly id: addToPlaylistModelFilter model: playlistModel.model filter.property: "name" filter.pattern: new RegExp(searchHeader.query, "i") filterCaseSensitivity: Qt.CaseInsensitive } objectName: "addToPlaylistGridView" delegate: Card { id: playlist coverSources: Playlists.getPlaylistCovers(playlist.name) objectName: "addToPlaylistCardItem" + index property string name: model.name property string count: model.count primaryText: playlist.name secondaryText: i18n.tr("%1 track", "%1 tracks", playlist.count).arg(playlist.count) onClicked: { Playlists.addToPlaylistList(name, chosenElements) if (tabs.selectedTab.title === i18n.tr("Playlists")) { // If we are on a page above playlists then set changed tabs.selectedTab.page.changed = true; tabs.selectedTab.page.childrenChanged = true; } else { // Otherwise just reload the playlists playlistModel.filterPlaylists(); } if (Library.recentContainsPlaylist(name)) { if (tabs.selectedTab.title === i18n.tr("Recent")) { // If we are on a page above recent then set changed tabs.selectedTab.page.changed = true; tabs.selectedTab.page.childrenChanged = true; } else { // Otherwise just reload recent recentModel.filterRecent(); } } mainPageStack.goBack(); // go back to the previous page } } } // Overlay to show when no playlists are on the device Loader { anchors { fill: parent topMargin: -units.gu(6.125) // FIXME: 6.125 is the header.height } active: playlistModel.model.count === 0 && playlistModel.workerComplete asynchronous: true source: "../components/PlaylistsEmptyState.qml" visible: active } } lomiri-music-app-v3.0.3/app/ui/Albums.qml000066400000000000000000000066761451274533600202560ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import MediaScanner 0.1 import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" MusicPage { id: albumsPage objectName: "albumsPage" title: i18n.tr("Albums") searchable: true searchResultsCount: albumsModelFilter.count state: "default" states: [ SearchableHeadState { thisPage: albumsPage searchEnabled: albumsModelFilter.count > 0 }, SearchHeadState { id: searchHeader thisPage: albumsPage } ] // Hack for autopilot otherwise Albums appears as MusicPage // due to bug 1341671 it is required that there is a property so that // qml doesn't optimise using the parent type property bool bug1341671workaround: true MusicGridView { id: albumGridView itemWidth: units.gu(15) heightOffset: units.gu(9.5) model: SortFilterModel { id: albumsModelFilter property alias rowCount: albumsModel.rowCount model: AlbumsModel { id: albumsModel store: musicStore } sort.property: "title" sort.order: Qt.AscendingOrder sortCaseSensitivity: Qt.CaseInsensitive filter.property: "title" filter.pattern: new RegExp(searchHeader.query, "i") filterCaseSensitivity: Qt.CaseInsensitive } delegate: Card { id: albumCard coverSources: [{art: model.art}] objectName: "albumsPageGridItem" + index primaryText: model.title != "" ? model.title : i18n.tr("Unknown Album") secondaryText: { if (model.artist == 'Various') { return i18n.tr("Various"); } else if (model.artist != '') { return model.artist; } return i18n.tr("Unknown Artist"); } onClicked: { mainPageStack.push(Qt.resolvedUrl("SongsView.qml"), { "album": model.title, "artist": model.artist, "covers": [{art: model.art}], "isAlbum": true, "genre": undefined, "title": i18n.tr("Album"), "line1": model.artist, "line2": model.title }) } } } } lomiri-music-app-v3.0.3/app/ui/ArtistView.qml000066400000000000000000000141431451274533600211200ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import MediaScanner 0.1 import Lomiri.Thumbnailer 0.1 import QtQuick.LocalStorage 2.0 import "../logic/meta-database.js" as Library import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" import "../components/ViewButton" MusicPage { id: artistViewPage objectName: "artistViewPage" state: "default" states: [ EmptyHeadState { thisPage: artistViewPage } ] property string artist: "" property var covers: [] property bool loaded: false // used to detect difference between first and further loads // FIXME: workaround for pad.lv/1531016 (gridview juddery) anchors { bottom: parent.bottom fill: undefined left: parent.left top: parent.top } height: mainPageStack.height width: mainPageStack.width MusicGridView { id: artistAlbumView itemWidth: units.gu(12) heightOffset: units.gu(7) header: Item { height: blurredHeader.height width: parent.width // Put BlurredHeader in contain so we can remove the margins BlurredHeader { id: blurredHeader anchors { left: parent.left margins: -units.gu(1) right: parent.right top: parent.top } bottomColumn: Column { Label { id: artistLabel anchors { left: parent.left right: parent.right } color: styleMusic.common.music elide: Text.ElideRight fontSize: "x-large" maximumLineCount: 1 objectName: "artistLabel" text: artist != "" ? artist : i18n.tr("Unknown Artist") wrapMode: Text.NoWrap } Item { height: units.gu(1) width: parent.width } Label { id: artistCount anchors { left: parent.left right: parent.right } color: styleMusic.common.subtitle elide: Text.ElideRight fontSize: "small" maximumLineCount: 1 text: i18n.tr("%1 album", "%1 albums", albumsModel.count).arg(albumsModel.count) } } coverSources: artistViewPage.covers height: blurredHeader.width > units.gu(60) ? units.gu(33.5) : ((blurredHeader.width - units.gu(5)) / 2) + units.gu(12) rightColumn: Column { spacing: units.gu(2) PlayAllButton { model: songArtistModel width: blurredHeader.width > units.gu(60) ? units.gu(23.5) : (blurredHeader.width - units.gu(13)) / 2 } ShuffleButton { model: songArtistModel width: blurredHeader.width > units.gu(60) ? units.gu(23.5) : (blurredHeader.width - units.gu(13)) / 2 } QueueAllButton { model: songArtistModel width: blurredHeader.width > units.gu(60) ? units.gu(23.5) : (blurredHeader.width - units.gu(13)) / 2 } } SongsModel { id: songArtistModel albumArtist: artistViewPage.artist store: musicStore } } } model: AlbumsModel { id: albumsModel albumArtist: artistViewPage.artist store: musicStore onStatusChanged: { if (albumsModel.status === SongsModel.Ready && loaded && albumsModel.count === 0) { mainPageStack.popPage(artistViewPage) } } } delegate: Card { id: albumCard coverSources: [{art: model.art}] objectName: "albumsPageGridItem" + index primaryText: model.title != "" ? model.title : i18n.tr("Unknown Album") secondaryTextVisible: false onClicked: { mainPageStack.push(Qt.resolvedUrl("SongsView.qml"), { "album": model.title, "artist": model.artist, "covers": [{art: model.art}], "isAlbum": true, "genre": undefined, "title": i18n.tr("Album"), "line1": model.artist != "" ? model.artist : i18n.tr("Unknown Artist"), "line2": model.title != "" ? model.title : i18n.tr("Unknown Album") }) } } } Component.onCompleted: loaded = true } lomiri-music-app-v3.0.3/app/ui/Artists.qml000066400000000000000000000062011451274533600204440ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import MediaScanner 0.1 import Lomiri.Thumbnailer 0.1 import QtQuick.LocalStorage 2.0 import "../logic/meta-database.js" as Library import "../logic/playlists.js" as Playlists import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" MusicPage { id: artistsPage objectName: "artistsPage" title: i18n.tr("Artists") searchable: true searchResultsCount: artistsModelFilter.count state: "default" states: [ SearchableHeadState { thisPage: artistsPage searchEnabled: artistsModelFilter.count > 0 }, SearchHeadState { id: searchHeader thisPage: artistsPage } ] // Hack for autopilot otherwise Artists appears as MusicPage // due to bug 1341671 it is required that there is a property so that // qml doesn't optimise using the parent type property bool bug1341671workaround: true MusicGridView { id: artistGridView itemWidth: units.gu(12) heightOffset: units.gu(7) model: SortFilterModel { id: artistsModelFilter property alias rowCount: artistsModel.rowCount model: ArtistsModel { id: artistsModel albumArtists: true store: musicStore } sort.property: "artist" sort.order: Qt.AscendingOrder sortCaseSensitivity: Qt.CaseInsensitive filter.property: "artist" filter.pattern: new RegExp(searchHeader.query, "i") filterCaseSensitivity: Qt.CaseInsensitive } delegate: Card { id: artistCard coverSources: [{art: "image://artistart/artist=" + model.artist + "&album="}] objectName: "artistsPageGridItem" + index primaryText: model.artist != "" ? model.artist : i18n.tr("Unknown Artist") secondaryTextVisible: false onClicked: { mainPageStack.push(Qt.resolvedUrl("ArtistView.qml"), { "artist": model.artist, "covers": artistCard.coverSources, "title": i18n.tr("Artist") }) } } } } lomiri-music-app-v3.0.3/app/ui/CMakeLists.txt000066400000000000000000000002671451274533600210460ustar00rootroot00000000000000# make the qml files visible on qtcreator file(GLOB UI_QML_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.qml) add_custom_target(music_ubports_UI_QMLFiles ALL SOURCES ${UI_QML_FILES}) lomiri-music-app-v3.0.3/app/ui/ContentHubExport.qml000066400000000000000000000123361451274533600222740ustar00rootroot00000000000000/* * Copyright (C) 2015, 2016 * Andrew Hayzen * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Content 1.3 import MediaScanner 0.1 import Lomiri.Thumbnailer 0.1 import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" MusicPage { id: contentHubExportPage objectName: "contentHubExportPage" title: i18n.tr("Export Track") searchResultsCount: songsModelFilter.count showToolbar: false state: "default" states: [ EmptyHeadState { thisHeader { leadingActionBar { actions: [ Action { iconName: "close" onTriggered: { transfer.items = []; transfer.state = ContentTransfer.Aborted; mainPageStack.pop() } } ] } trailingActionBar { actions: [ tickAction, searchAction, ] } } thisPage: contentHubExportPage }, SearchHeadState { id: searchHeader thisHeader { trailingActionBar { actions: [ tickAction, ] } } thisPage: contentHubExportPage onQueryChanged: trackList.clearSelection() } ] transitions: [ Transition { from: "search" to: "default" ScriptAction { script: trackList.clearSelection() } } ] Action { id: searchAction enabled: songsModelFilter.count > 0 iconName: "search" onTriggered: { contentHubExportPage.state = "search" contentHubExportPage.header.contents.forceActiveFocus(); } } Action { id: tickAction enabled: trackList.getSelectedIndices().length > 0 iconName: "tick" onTriggered: { var items = []; var indicies = trackList.getSelectedIndices(); for (var i=0; i < indicies.length; i++) { items.push(contentItemComponent.createObject(contentHubExportPage, {url: songsModelFilter.get(indicies[i]).filename})); } transfer.items = items; transfer.state = ContentTransfer.Charged; mainPageStack.pop() } } property var contentItemComponent property var transfer readonly property bool singular: transfer ? transfer.selectionType === ContentTransfer.Single : false MultiSelectListView { id: trackList anchors { bottomMargin: units.gu(2) fill: parent topMargin: units.gu(2) } model: SortFilterModel { id: songsModelFilter property alias rowCount: songsModel.rowCount model: SongsModel { id: songsModel store: musicStore } sort.property: "title" sort.order: Qt.AscendingOrder sortCaseSensitivity: Qt.CaseInsensitive filter.property: "title" filter.pattern: new RegExp(searchHeader.query, "i") filterCaseSensitivity: Qt.CaseInsensitive } ViewItems.selectMode: true property int selectedCache: -1 delegate: MusicListItem { id: track objectName: "tracksPageListItem" + index height: units.gu(7) imageSource: {"art": model.art} multiselectable: true pressAndHoldEnabled: false // Block PressAndHold from working subtitle { text: model.author } title { objectName: "tracktitle" text: model.title } onSelectedChanged: { if (singular) { if (selected && (trackList.selectedCache === -1 || trackList.selectedCache !== index)) { trackList.ViewItems.selectedIndices = [index]; trackList.selectedCache = index; } else if (!selected && trackList.selectedCache === index) { trackList.selectedCache = -1; } } } } Component.onCompleted: state = "multiselectable" } } lomiri-music-app-v3.0.3/app/ui/Genres.qml000066400000000000000000000073761451274533600202540ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import MediaScanner 0.1 import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" MusicPage { id: genresPage objectName: "genresPage" title: i18n.tr("Genres") searchable: true searchResultsCount: genresModelFilter.count state: "default" states: [ SearchableHeadState { thisPage: genresPage searchEnabled: genresModelFilter.count > 0 }, SearchHeadState { id: searchHeader thisPage: genresPage } ] // Hack for autopilot otherwise Albums appears as MusicPage // due to bug 1341671 it is required that there is a property so that // qml doesn't optimise using the parent type property bool bug1341671workaround: true MusicGridView { id: genreGridView itemWidth: units.gu(12) heightOffset: units.gu(7) model: SortFilterModel { id: genresModelFilter model: GenresModel { id: genresModel store: musicStore } filter.property: "genre" filter.pattern: searchHeader.query === "" ? /\S+/ : new RegExp(searchHeader.query, "i") filterCaseSensitivity: Qt.CaseInsensitive sort.property: "genre" sort.order: Qt.AscendingOrder sortCaseSensitivity: Qt.CaseInsensitive } delegate: Card { id: genreCard coverSources: [] objectName: "genresPageGridItem" + index primaryText: model.genre secondaryTextVisible: false property string album: "" Repeater { id: albumGenreModelRepeater model: AlbumsModel { genre: model.genre store: musicStore } delegate: Item { property string art: model.art } property var covers: [] signal finished() onFinished: { genreCard.coverSources = covers } onItemAdded: { covers.push({art: item.art}); if (index === count - 1) { finished(); } } } onClicked: { mainPageStack.push(Qt.resolvedUrl("SongsView.qml"), { "covers": genreCard.coverSources, "album": undefined, "isAlbum": true, "genre": model.genre, "title": i18n.tr("Genre"), "line2": model.genre, "line1": i18n.tr("Genre") }) } } } } lomiri-music-app-v3.0.3/app/ui/LibraryEmptyState.qml000066400000000000000000000111261451274533600224410ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 Page { id: libraryEmptyPage objectName: "emptyLibrary" anchors { fill: parent } // Do not show the Page Header head { visible: false locked: true } // Hack for autopilot otherwise LibraryEmptyState appears as Page // due to bug 1341671 it is required that there is a property so that // qml doesn't optimise using the parent type property bool bug1341671workaround: true // Overlay to show when no tracks detected on the device Rectangle { id: libraryEmpty anchors { fill: parent topMargin: -units.gu(8) // FIXME: 6.125 is the header.height } color: mainView.backgroundColor Column { id: noMusicTextColumn anchors { centerIn: parent } spacing: units.gu(4) width: units.gu(36) Row { anchors { horizontalCenter: parent.horizontalCenter } Item { height: parent.height width: imageEmptyDownload.width + units.gu(2) Image { id: imageEmptyDownload anchors { horizontalCenter: parent.horizontalCenter verticalCenter: parent.verticalCenter } antialiasing: true fillMode: Image.PreserveAspectFit height: units.gu(10) smooth: true source: "../graphics/music_download_icon.png" asynchronous: true } } Item { height: parent.height width: units.gu(7) Image { id: imageSep anchors { horizontalCenter: parent.horizontalCenter verticalCenter: parent.verticalCenter } antialiasing: true fillMode: Image.PreserveAspectFit height: units.gu(6) smooth: true source: "../graphics/div.png" asynchronous: true } } Image { id: imageEmptySD anchors { verticalCenter: parent.verticalCenter } antialiasing: true fillMode: Image.PreserveAspectFit height: units.gu(7) smooth: true source: "../graphics/sd_phone_icon.png" asynchronous: true } } Label { color: styleMusic.libraryEmpty.labelColor objectName: "titleText" elide: Text.ElideRight fontSize: "x-large" horizontalAlignment: Text.AlignLeft maximumLineCount: 2 text: i18n.tr("No music found") width: parent.width wrapMode: Text.WordWrap } Label { color: styleMusic.libraryEmpty.labelColor objectName:"descriptiveText" elide: Text.ElideRight fontSize: "large" horizontalAlignment: Text.AlignLeft maximumLineCount: 6 text: i18n.tr("Connect your device to any computer and simply drag files to the Music folder or insert removable media with music.") width: parent.width wrapMode: Text.WordWrap } } } } lomiri-music-app-v3.0.3/app/ui/NowPlaying.qml000066400000000000000000000172171451274533600211130ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import QtQuick.LocalStorage 2.0 import Lomiri.Components 1.3 import "../components" import "../components/HeadState" import "../logic/meta-database.js" as Library import "../logic/playlists.js" as Playlists MusicPage { id: nowPlaying flickable: isListView ? queueListLoader.item : null // Ensures that the header is shown in fullview hasSections: true objectName: "nowPlayingPage" showToolbar: false state: { if (isListView) { if (queueListLoader.item.state === "multiselectable") { "selection" } else { "default" } } else { "fullview" } } states: [ // FIXME: fullview has its own state for now as changing the flickable // property sometimes causes the header to disappear QueueHeadState { stateName: "fullview" thisHeader { extension: Sections { model: defaultStateSections.model objectName: "nowPlayingSections" selectedIndex: 0 onSelectedIndexChanged: { if (selectedIndex == 1) { isListView = !isListView; selectedIndex = 0; } } } flickable: null } thisPage: nowPlaying }, QueueHeadState { thisHeader { extension: Sections { model: defaultStateSections.model objectName: "nowPlayingSections" selectedIndex: 1 onSelectedIndexChanged: { if (selectedIndex == 0) { isListView = !isListView; selectedIndex = 1; } } } flickable: queueListLoader.item } thisPage: nowPlaying }, MultiSelectHeadState { addToQueue: false listview: queueListLoader.item removable: true thisHeader { extension: Sections { model: defaultStateSections.model objectName: "nowPlayingSections" selectedIndex: 1 onSelectedIndexChanged: { if (selectedIndex == 0) { isListView = !isListView; selectedIndex = 1; } } } } thisPage: nowPlaying onRemoved: { // Remove the tracks from the queue // Use slice() to copy the list // so that the indexes don't change as they are removed player.mediaPlayer.playlist.removeItemsWrapper(selectedIndices.slice()); } } ] title: nowPlayingTitle property bool isListView: false // TRANSLATORS: this appears in the header with limited space (around 20 characters) property string nowPlayingTitle: i18n.tr("Now playing") // TRANSLATORS: this appears in the header with limited space (around 20 characters) property string fullViewTitle: i18n.tr("Full view") // TRANSLATORS: this appears in the header with limited space (around 20 characters) property string queueTitle: i18n.tr("Queue") onIsListViewChanged: { if (isListView) { // When changing to the queue positionAt the currentIndex // ensure the loader and listview is ready if (queueListLoader.status === Loader.Ready) { ensureListViewLoaded() } else { queueListLoader.onStatusChanged.connect(function() { if (queueListLoader.status === Loader.Ready) { ensureListViewLoaded() } }) } } else { // Close multiselection mode. queueListLoader.item.closeSelection() } } onVisibleChanged: { if (wideAspect) { popWaitTimer.start() } } Timer { // FIXME: workaround for when entering wideAspect coming back from a stacked page (AddToPlaylist) and the page being deleted breaks the stacked page id: popWaitTimer interval: 250 onTriggered: mainPageStack.popPage(nowPlaying); } PageHeadSections { id: defaultStateSections model: [fullViewTitle, queueTitle] onSelectedIndexChanged: isListView = selectedIndex == 1 // Set at startup to avoid binding loop Component.onCompleted: selectedIndex = isListView ? 1 : 0 } // Ensure that the listview has loaded before attempting to positionAt function ensureListViewLoaded() { if (queueListLoader.item.count === player.mediaPlayer.playlist.itemCount) { positionAt(player.mediaPlayer.playlist.currentIndex); } else { queueListLoader.item.onCountChanged.connect(function() { if (queueListLoader.item.count === player.mediaPlayer.playlist.itemCount) { positionAt(player.mediaPlayer.playlist.currentIndex); } }) } } // Position the view at the index function positionAt(index) { queueListLoader.item.positionViewAtIndex(index, ListView.Center); } function setListView(listView) { defaultStateSections.selectedIndex = listView ? 1 : 0; } Loader { anchors { bottom: nowPlayingToolbarLoader.top left: parent.left right: parent.right top: nowPlaying.header.bottom } source: "../components/NowPlayingFullView.qml" visible: !isListView } Loader { id: queueListLoader anchors { bottom: nowPlayingToolbarLoader.top left: parent.left right: parent.right top: parent.top // Don't use header.bottom otherwise flickery } asynchronous: true source: "../components/Queue.qml" visible: isListView } Loader { id: nowPlayingToolbarLoader anchors { bottom: parent.bottom left: parent.left right: parent.right } height: units.gu(10) source: "../components/NowPlayingToolbar.qml" } Connections { target: mainView onWideAspectChanged: { // Do not pop if not visible (eg on AddToPlaylist) if (wideAspect && nowPlaying.visible) { mainPageStack.popPage(nowPlaying); } } } Connections { target: player.mediaPlayer.playlist onEmptyChanged: { if (player.mediaPlayer.playlist.empty) { mainPageStack.goBack() } } } } lomiri-music-app-v3.0.3/app/ui/Playlists.qml000066400000000000000000000101151451274533600207760ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import QtQuick.LocalStorage 2.0 import "../logic/playlists.js" as Playlists import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" // page for the playlists MusicPage { id: playlistsPage objectName: "playlistsPage" // TRANSLATORS: this is the name of the playlists page shown in the tab header. // Remember to keep the translation short to fit the screen width title: i18n.tr("Playlists") searchable: true searchResultsCount: playlistModelFilter.count state: "default" states: [ PlaylistsHeadState { newPlaylistEnabled: allSongsModel.count > 0 searchEnabled: playlistModel.model.count > 0 && allSongsModel.count > 0 thisPage: playlistsPage }, SearchHeadState { id: searchHeader thisPage: playlistsPage } ] property bool changed: false property bool childrenChanged: false onVisibleChanged: { if (changed) { changed = false refreshWaitTimer.start() } } Timer { // FIXME: workaround for when the playlist is deleted and the delegate being deleting causes freezing id: refreshWaitTimer interval: 250 onTriggered: playlistModel.filterPlaylists() } MusicGridView { id: playlistslist itemWidth: units.gu(15) heightOffset: units.gu(9.5) model: SortFilterModel { // Sorting disabled as it is incorrect on first run (due to workers?) // and SQL sorts the data correctly id: playlistModelFilter model: playlistModel.model filter.property: "name" filter.pattern: new RegExp(searchHeader.query, "i") filterCaseSensitivity: Qt.CaseInsensitive } objectName: "playlistsGridView" delegate: Card { id: playlistCard coverSources: Playlists.getPlaylistCovers(model.name) objectName: "playlistCardItem" + index primaryText: model.name secondaryText: i18n.tr("%1 track", "%1 tracks", model.count).arg(model.count) onClicked: { albumTracksModel.filterPlaylistTracks(model.name) mainPageStack.push(Qt.resolvedUrl("SongsView.qml"), { "album": undefined, "covers": coverSources, "isAlbum": false, "genre": undefined, "page": playlistsPage, "title": i18n.tr("Playlist"), "line1": i18n.tr("Playlist"), "line2": model.name, }) } } } // Overlay to show when no playlists are on the device Loader { anchors { fill: parent topMargin: -units.gu(6.125) // FIXME: 6.125 is the header.height } active: playlistModel.model.count === 0 && playlistModel.workerComplete asynchronous: true source: "../components/PlaylistsEmptyState.qml" visible: active } } lomiri-music-app-v3.0.3/app/ui/Recent.qml000066400000000000000000000122161451274533600202360ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import MediaScanner 0.1 import Lomiri.Thumbnailer 0.1 import QtQuick.LocalStorage 2.0 import "../logic/meta-database.js" as Library import "../logic/playlists.js" as Playlists import "../components" import "../components/Delegates" import "../components/Flickables" MusicPage { id: recentPage objectName: "recentPage" header: PageHeader { flickable: recentPage.flickable leadingActionBar { actions: { if (mainPageStack.currentPage === tabs) { tabs.tabActions } else if (mainPageStack.depth > 1) { backActionComponent } else { null } } objectName: "tabsLeadingActionBar" } title: recentPage.title trailingActionBar { actions: [ Action { id: settingsActionComponent iconName: "settings" onTriggered: mainPageStack.push(Qt.resolvedUrl("SettingsPage.qml")) }, Action { enabled: recentModel.model.count > 0 iconName: "delete" onTriggered: { Library.clearRecentHistory() recentModel.filterRecent() } } ] } Action { id: backActionComponent iconName: "back" objectName: "backAction" onTriggered: mainPageStack.pop() } StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } } title: i18n.tr("Recent") property bool changed: false property bool childrenChanged: false onVisibleChanged: { if (changed) { changed = false refreshWaitTimer.start() } } Timer { // FIXME: workaround for when the playlist is deleted and the delegate being deleting causes freezing id: refreshWaitTimer interval: 250 onTriggered: recentModel.filterRecent() } MusicGridView { id: recentGridView itemWidth: units.gu(15) heightOffset: units.gu(9.5) model: recentModel.model delegate: Card { id: albumCard SongsModel { id: recentAlbumSongs album: model.type === "album" ? model.data : undefined store: musicStore } coverSources: model.type === "playlist" ? Playlists.getPlaylistCovers(model.data) : (recentAlbumSongs.status === SongsModel.Ready ? [makeDict(recentAlbumSongs.get(0, SongsModel.RoleModelData))] : []) objectName: "albumsPageGridItem" + index primaryText: model.type === "playlist" ? model.data : (recentAlbumSongs.status === SongsModel.Ready && recentAlbumSongs.get(0, SongsModel.RoleModelData).album != "" ? recentAlbumSongs.get(0, SongsModel.RoleModeData).album : i18n.tr("Unknown Album")) secondaryText: model.type === "playlist" ? i18n.tr("Playlist") : (recentAlbumSongs.status === SongsModel.Ready && recentAlbumSongs.get(0, SongsModel.RoleModelData).author != "" ? recentAlbumSongs.get(0, SongsModel.RoleModelData).author : i18n.tr("Unknown Artist")) onClicked: { if (model.type === "playlist") { albumTracksModel.filterPlaylistTracks(model.data) } mainPageStack.push(Qt.resolvedUrl("SongsView.qml"), { "album": model.type !== "playlist" ? model.data : undefined, "artist": model.type !== "playlist" ? recentAlbumSongs.get(0, SongsModel.RoleModelData).artist : undefined, "covers": coverSources, "isAlbum": (model.type === "album"), "genre": undefined, "page": recentPage, "title": (model.type === "album") ? i18n.tr("Album") : i18n.tr("Playlist"), "line1": secondaryText, "line2": primaryText, }) } } } } lomiri-music-app-v3.0.3/app/ui/SettingsPage.qml000066400000000000000000000046351451274533600214210ustar00rootroot00000000000000/* * Copyright: 2020 UBports * * * reminders is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * reminders is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import "../components" Page { id: settingsPage header: PageHeader { title: i18n.tr("Settings") leadingActionBar { actions: backActionComponent } StyleHints { backgroundColor: mainView.headerColor dividerColor: Qt.darker(mainView.headerColor, 1.1) } Action { id: backActionComponent iconName: "back" objectName: "backAction" onTriggered: mainPageStack.pop() } } Flickable { id: settingsFlickable clip: true flickableDirection: Flickable.AutoFlickIfNeeded anchors { topMargin: settingsPage.header.height + units.gu(1) fill: parent } contentHeight: settingsColumn.childrenRect.height Column { id: settingsColumn anchors { top: parent.top left: parent.left right: parent.right } ListItem { id: displayOnItem height: displayOnLayout.height divider.visible: false ListItemLayout { id: displayOnLayout title.text: i18n.tr("Keep screen on while music is played") Switch { id: displayOnSwitch SlotsLayout.position: SlotsLayout.Last checked: startupSettings.keepDisplayOn onCheckedChanged: { startupSettings.keepDisplayOn = checked; } } } onClicked: displayOnSwitch.checked = !displayOnSwitch.checked; } } } } lomiri-music-app-v3.0.3/app/ui/Songs.qml000066400000000000000000000074001451274533600201060ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import MediaScanner 0.1 import Lomiri.Thumbnailer 0.1 import QtQuick.LocalStorage 2.0 import "../logic/playlists.js" as Playlists import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" import "../components/ListItemActions" MusicPage { id: songsPage objectName: "songsPage" title: i18n.tr("Tracks") searchable: true searchResultsCount: songsModelFilter.count state: "default" states: [ SearchableHeadState { thisPage: songsPage searchEnabled: songsModelFilter.count > 0 }, MultiSelectHeadState { listview: tracklist thisPage: songsPage }, SearchHeadState { id: searchHeader thisPage: songsPage } ] // Hack for autopilot otherwise Albums appears as MusicPage // due to bug 1341671 it is required that there is a property so that // qml doesn't optimise using the parent type property bool bug1341671workaround: true MultiSelectListView { id: tracklist anchors { bottomMargin: units.gu(2) fill: parent topMargin: units.gu(2) } objectName: "trackstab-listview" model: SortFilterModel { id: songsModelFilter property alias rowCount: songsModel.rowCount model: SongsModel { id: songsModel store: musicStore } sort.property: "title" sort.order: Qt.AscendingOrder sortCaseSensitivity: Qt.CaseInsensitive filter.property: "title" filter.pattern: new RegExp(searchHeader.query, "i") filterCaseSensitivity: Qt.CaseInsensitive } onStateChanged: { if (state === "multiselectable") { songsPage.state = "selection" } else { searchHeader.query = "" // force query back to default songsPage.state = "default" } } delegate: MusicListItem { id: track objectName: "tracksPageListItem" + index imageSource: {"art": model.art} multiselectable: true subtitle { text: model.author + " - " + model.album } title { objectName: "tracktitle" text: model.title } trailingActions: AddToQueueAndPlaylist { } onItemClicked: { if (songsPage.state === "search") { // only play single track when searching player.mediaPlayer.playlist.clearWrapper(); player.mediaPlayer.playlist.addItem(Qt.resolvedUrl(songsModelFilter.get(index).filename)); trackQueueClick(0) } else { trackClicked(songsModelFilter, index) // play track } } } } } lomiri-music-app-v3.0.3/app/ui/SongsView.qml000066400000000000000000000307431451274533600207470ustar00rootroot00000000000000/* * Copyright (C) 2013, 2014, 2015, 2016 * Andrew Hayzen * Daniel Holm * Victor Thompson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.4 import Lomiri.Components 1.3 import Lomiri.Components.Popups 1.3 import MediaScanner 0.1 import Lomiri.Thumbnailer 0.1 import QtQuick.LocalStorage 2.0 import "../logic/meta-database.js" as Library import "../logic/playlists.js" as Playlists import "../components" import "../components/Delegates" import "../components/Flickables" import "../components/HeadState" import "../components/ListItemActions" import "../components/ViewButton" MusicPage { id: songStackPage objectName: "songsPage" visible: false property string line1: "" property string line2: "" property string songtitle: "" property var covers: [] property bool isAlbum: false property string file: "" property string year: "" property var page property alias album: songsModel.album property string artist: '' property alias genre: songsModel.genre property bool loaded: false // used to detect difference between first and further loads onVisibleChanged: { if (page && page.childrenChanged) { page.childrenChanged = false refreshWaitTimer.start() } } SongsModel { store: musicStore onFilled: { // Detect any track removals and reload the playlist if (songStackPage.line1 === i18n.tr("Playlist")) { if (songStackPage.visible) { albumTracksModel.filterPlaylistTracks(line2) covers = Playlists.getPlaylistCovers(line2) } else if (songStackPage.page) { songStackPage.page.childrenChanged = true; } } } } Timer { // FIXME: workaround for when the playlist is deleted and the delegate being deleting causes freezing id: refreshWaitTimer interval: 250 onTriggered: { if (songStackPage.line1 === i18n.tr("Playlist")) { albumTracksModel.filterPlaylistTracks(line2) } } } function recentChangedHelper() { // if parent Recent then set changed otherwise refilter if (songStackPage.page && songStackPage.page.title === i18n.tr("Recent")) { songStackPage.page.changed = true } else { recentModel.filterRecent() } } function playlistChangedHelper(force) { force = force === undefined ? false : force // default force to false // if parent Playlists then set changed otherwise refilter if (songStackPage.page && songStackPage.page.title === i18n.tr("Playlists")) { songStackPage.page.changed = true } else { playlistModel.filterPlaylists() } if (Library.recentContainsPlaylist(songStackPage.line2) || force) { recentChangedHelper(); } } state: albumtrackslist.state === "multiselectable" ? "selection" : (songStackPage.line1 === i18n.tr("Playlist") ? "playlist" : "default") states: [ EmptyHeadState { thisPage: songStackPage }, PlaylistHeadState { thisPage: songStackPage }, MultiSelectHeadState { listview: albumtrackslist removable: songStackPage.line1 === i18n.tr("Playlist") thisPage: songStackPage onRemoved: { Playlists.removeFromPlaylist(songStackPage.line2, selectedIndices) playlistChangedHelper() // update recent/playlist models albumTracksModel.filterPlaylistTracks(songStackPage.line2) } } ] SongsModel { id: songsModel store: musicStore onStatusChanged: { if (songsModel.status === SongsModel.Ready && loaded && songsModel.count === 0) { mainPageStack.popPage(songStackPage) } } albumArtist: { if (!isAlbum) { return songStackPage.artist; } return ''; } } MultiSelectListView { id: albumtrackslist anchors { fill: parent } model: isAlbum ? songsModel : albumTracksModel.model objectName: "songspage-listview" width: parent.width onCountChanged: { // If the number of songs in this playlist has changed, refresh the cover art if (songStackPage.line1 === i18n.tr("Playlist")) { songStackPage.covers = Playlists.getPlaylistCovers(songStackPage.line2) } } header: BlurredHeader { id: blurredHeader rightColumn: Column { spacing: units.gu(2) PlayAllButton { model: albumtrackslist.model width: blurredHeader.width > units.gu(60) ? units.gu(23.5) : (blurredHeader.width - units.gu(13)) / 2 onClicked: { if (isAlbum && songStackPage.line1 !== i18n.tr("Genre")) { Library.addRecent(albumtrackslist.model.get(0, albumtrackslist.model.RoleModelData).album, "album") } else if (songStackPage.line1 === i18n.tr("Playlist")) { Library.addRecent(songStackPage.line2, "playlist") } else { console.debug("Unknown type to add to recent") } recentChangedHelper(); } } ShuffleButton { model: albumtrackslist.model width: blurredHeader.width > units.gu(60) ? units.gu(23.5) : (blurredHeader.width - units.gu(13)) / 2 onClicked: { if (isAlbum && songStackPage.line1 !== i18n.tr("Genre")) { Library.addRecent(albumtrackslist.model.get(0, albumtrackslist.model.RoleModelData).album, "album") } else if (songStackPage.line1 === i18n.tr("Playlist")) { Library.addRecent(songStackPage.line2, "playlist") } else { console.debug("Unknown type to add to recent") } recentChangedHelper(); } } QueueAllButton { model: albumtrackslist.model width: blurredHeader.width > units.gu(60) ? units.gu(23.5) : (blurredHeader.width - units.gu(13)) / 2 } } property int baseHeight: songStackPage.width > units.gu(60) ? units.gu(33.5) : ((songStackPage.width - units.gu(5)) / 2) + units.gu(12) coverSources: songStackPage.covers height: songStackPage.line1 !== i18n.tr("Playlist") && songStackPage.line1 !== i18n.tr("Genre") && songStackPage.width <= units.gu(60) ? baseHeight + units.gu(3) : baseHeight bottomColumn: Column { Label { id: albumLabel anchors { left: parent.left right: parent.right } color: styleMusic.common.music elide: Text.ElideRight fontSize: "x-large" maximumLineCount: 1 text: line2 != "" ? line2 : i18n.tr("Unknown Album") wrapMode: Text.NoWrap } Item { height: units.gu(0.75) width: parent.width visible: albumArtist.visible } Label { id: albumArtist anchors { left: parent.left right: parent.right } color: styleMusic.common.subtitle elide: Text.ElideRight fontSize: "small" maximumLineCount: 1 objectName: "songsPageHeaderAlbumArtist" text: { if (line1 == 'Various') { return i18n.tr("Various"); } else if (line1 != '') { return line1; } return i18n.tr("Unknown Artist"); } visible: text !== i18n.tr("Playlist") && text !== i18n.tr("Genre") wrapMode: Text.NoWrap } Item { height: units.gu(1) width: parent.width } Label { id: albumYear anchors { left: parent.left right: parent.right } color: styleMusic.common.subtitle elide: Text.ElideRight fontSize: "small" maximumLineCount: 1 text: isAlbum && line1 !== i18n.tr("Genre") ? (year !== "" ? year + " | " : "") + i18n.tr("%1 track", "%1 tracks", albumtrackslist.count).arg(albumtrackslist.count) : i18n.tr("%1 track", "%1 tracks", albumtrackslist.count).arg(albumtrackslist.count) wrapMode: Text.NoWrap } } } delegate: MusicListItem { id: track objectName: "songsPageListItem" + index leadingActions: songStackPage.line1 === i18n.tr("Playlist") ? playlistRemoveAction.item : null multiselectable: true reorderable: songStackPage.line1 === i18n.tr("Playlist") subtitle { text: model.author } title { objectName: "songspage-tracktitle" text: model.title } trailingActions: AddToQueueAndPlaylist { } onItemClicked: { trackClicked(albumtrackslist.model, index) // play track if (isAlbum && songStackPage.line1 !== i18n.tr("Genre")) { Library.addRecent(albumtrackslist.model.get(0, albumtrackslist.model.RoleModelData).album, "album") } else if (songStackPage.line1 === i18n.tr("Playlist")) { Library.addRecent(songStackPage.line2, "playlist") } else { console.debug("Unknown type to add to recent") } recentChangedHelper(); } Loader { id: playlistRemoveAction sourceComponent: ListItemActions { actions: [ Remove { onTriggered: { Playlists.removeFromPlaylist(songStackPage.line2, [model.i]) playlistChangedHelper() // update recent/playlist models albumTracksModel.filterPlaylistTracks(songStackPage.line2) } } ] } } Component.onCompleted: { if (model.date !== undefined) { songStackPage.file = model.filename; songStackPage.year = new Date(model.date).toLocaleString(Qt.locale(),'yyyy'); } } } onReorder: { console.debug("Move: ", from, to); Playlists.move(songStackPage.line2, from, to) albumTracksModel.filterPlaylistTracks(songStackPage.line2) } } Component.onCompleted: loaded = true } lomiri-music-app-v3.0.3/apparmor.json000066400000000000000000000006571451274533600176300ustar00rootroot00000000000000{ "policy_version": 20.04, "policy_groups": [ "audio", "content_exchange", "content_exchange_source", "music_files_read", "networking", "keep-display-on", "usermetrics" ], "read_path": [ "@{HOME}/.cache/media-art/", "@{HOME}/.cache/mediascanner-2.0/", "/media/*/*/" ], "write_path": [ "@{HOME}/Music/Imported/" ] } lomiri-music-app-v3.0.3/clickable.yaml000066400000000000000000000002551451274533600177030ustar00rootroot00000000000000clickable_minimum_required: '7.5.0' builder: pure-qml-cmake framework: ubuntu-sdk-20.04 dependencies_host: - cmake-extras kill: app/music-app.qml ignore_review_errors: true lomiri-music-app-v3.0.3/debian/000077500000000000000000000000001451274533600163265ustar00rootroot00000000000000lomiri-music-app-v3.0.3/debian/Jenkinsfile000066400000000000000000000004241451274533600205120ustar00rootroot00000000000000@Library('ubports-build-tools') _ buildAndProvideDebianPackage() // Or if the package consists entirely of arch-independent packages: // (optional optimization, will confuse BlueOcean's live view at build stage) // buildAndProvideDebianPackage(/* isArchIndependent */ true) lomiri-music-app-v3.0.3/debian/changelog000066400000000000000000000416071451274533600202100ustar00rootroot00000000000000lomiri-music-app (3.0.3) unstable; urgency=medium * Upstream-provided Debian package for lomiri-music-app. See upstream ChangeLog for recent changes. -- UBports developers Sun, 15 Oct 2023 13:19:57 +0200 lomiri-music-app (3.0.2) unstable; urgency=medium * Upstream-provided Debian package for lomiri-music-app. See upstream ChangeLog for recent changes. -- UBports developers Mon, 27 Feb 2023 12:10:14 +0100 lomiri-music-app (3.0.1) unstable; urgency=medium * Upstream-provided Debian package for lomiri-music-app. See upstream ChangeLog for recent changes. -- UBports developers Fri, 03 Feb 2023 15:55:57 +0100 lomiri-music-app (3.0.0) focal; urgency=medium [ UBports developers ] * Upstream-provided Debian package for lomiri-music-app. See upstream ChangeLog for recent changes. -- UBports developers Wed, 18 Jan 2023 12:45:27 +0100 music-app (2.5) xenial; urgency=medium * Release 2.4 and start 2.5 * Remove gstreamer0.10-fluendo-mp3 plugin from control as 1.0 should instead be used * Fix for autopilot using switch_to_tab instead of leadingActionBar (LP: #1613328). * Fix for duplicate Toolbars being created, confusing autopilot -- Andrew Hayzen Wed, 03 Aug 2016 21:57:36 +0100 music-app (2.4) xenial; urgency=medium [ Victor Thompson ] * Release 2.3 and start 2.4 * Remove repeater for getting album titles in Artists.qml (LP: #1515067). * Change translation strings from song to track (LP: #1378143). * Ensure that only one ContentHubExport page is open (LP: #1538863). * Fix fallback image path in MusicListItem (LP: #1549580). * Fix regression where AddToPlaylist.qml no long supports plural track counts (LP: #1550832). * Remove offset from the top of AddToPlaylist.qml (LP: #1538832). * Fix topMargin of the Playlists empty state so title is not obscurred (LP: #1538829). * Fix fallback art when the it is linked to the Player's currentMeta (LP: #1549557). * Update a number of components to work properly with new color palette in the SDK (LP: #1550096). * Fix the Search TextField component color so the text is not invisible when field is not in focus (LP: #1550096). [ Andrew Hayzen ] * Fix so that a press and hold cannot disable selection in the ContentHubExport.qml (LP: #1538838) * Implement convergent mode with now playing and queue as a sidebar (LP: #1253761) [ Ken VanDine ] * Bump Ubuntu.Content import to 1.3 to fix theme issue -- Andrew Hayzen Wed, 03 Aug 2016 21:57:15 +0100 music-app (2.3) vivid; urgency=medium [ Andrew Hayzen ] * Release 2.2ubuntu2 and start on 2.3 * Use ListItemLayout for listitems to improve performance and match design guidelines (LP: #1526247). * Switch to using Qt GridView instead of custom CardView * Add support for media-hub background playlists * Bump framework to 15.04.3-qml * Bump QtMultimedia import to 5.6 [ Ken VanDine ] * Install the content-hub json file in the correct place for peer registry [ Vamshi Balanaga ] * Add test to make sure that the LibraryEmptyState page is visible when no audio is detected on the device (LP: #1261587). [ Girish Rawat ] * Expanded and updated READMEs -- Victor Wed, 27 Jan 2016 19:40:13 -0600 music-app (2.2ubuntu2) vivid; urgency=medium [ Bartosz Kosiorek ] * Reduce size of images (with tinypng.com) to decrease click size and improve performance [ Victor Thompson ] * Remove some deprecated code for the UbuntuShape image property. * Update app to use the Ubuntu Components version 1.3 (LP: #1508363) * Update canned mediastore.db schema version from 8 to 9 (LP: #1511585). * Update canned mediastore.db schema version from 9 to 10. * Add directions for updating and debugging schema version changes. * Add initial page sections to Now Playing view (LP: #1447428) * Resolve FIXMEs/TODOs in main qml file * Resolve DEPRECATED warnings in Theme files [ Andrew Hayzen ] * Switch to using the new uc1.3 listitems within the SDK * Workaround for bug 1514143 by locking the header when searching (LP: #1514143) -- Andrew Hayzen Thu, 03 Dec 2015 14:10:59 +0000 music-app (2.2ubuntu1) vivid; urgency=medium [ Victor Thompson ] * Fix SongsView album art for albums and genres (LP: #1477366) * Fix to allow the LibraryEmptyState to work again (LP: #1478162) * Fix typo in README.autopilot and clarify the instructions * Show all README files in QtCreator * Force playlist tracks to sync (LP: #1483962) * Allow arrow keys to control the initial walkthrough (LP: #1482760) * Always fit the cover art to vertically fill the BlurredBackground [ Andrew Hayzen ] * Fix for console errors when using the parent changed helpers * Add support for a content-hub source in both single and multiple selection modes (LP: #1357324) -- Andrew Hayzen Sat, 05 Sep 2015 00:04:24 +0100 music-app (2.2) vivid; urgency=medium [ Andrew Hayzen ] * Bump framework to 15.04 -- Andrew Hayzen Sat, 27 Jun 2015 21:30:23 +0100 music-app (2.1) vivid; urgency=medium [ Andrew Hayzen ] * Fixes and add preloading compatibility to ColumnFlow.qml. * Only autoset the source due to queue count changes when the queue worker has completed. * Improve the way the currentIndex is restored so that there is less/no delay. * Delay urlhandler/content-hub calls until after walkthrough is complete. Fixes: https://bugs.launchpad.net/bugs/1438317. * Make SongsView and ArtistView adaptive. Fixes: https://bugs.launchpad.net/bugs/1436771. * Ensure dialogs are closed before popping a page. Fixes: https://bugs.launchpad.net/bugs/1435658. * Split content-hub, uri-handler and metrics into Helpers. * Split the NowPlaying page into NowPlaying, Queue and NowPlayingToolbar * Destroy dialog before popping page. Fixes: https://bugs.launchpad.net/bugs/1428450. * Move delegates into their own folder in components * Create generic MultiSelectListView.qml for handling multiselect * Do not allow LibraryEmptyState loader to be active if content-hub is running. Fixes: https://bugs.launchpad.net/bugs/1418366. * Move all Dialog components into their own files in components/Dialog. * Create common components for Play All, Queue All and Shuffle buttons within 'Views'. * Split EmptyStates into a page (for noMusic) and a component (for noPlaylists) and load in async. * Move existing head states into HeadState folder * Make use of SDK PageStack.push(url, properties) instead of creating the component, object and pushing ourselves. * Rename common to components * Move pages into separate /ui folder * Fix for autopilot launcher detection for debian mode. * Move applications files into app folder. Fixes: https://bugs.launchpad.net/bugs/1357319. [ Darran Kelinske ] * Added a test case for deleting a playlist. Fixes: https://bugs.launchpad.net/bugs/1428454. [ Victor Thompson ] * Prevent click build warnings for unterminated string literals * Improve multiselect delete for playlist items. Fixes: https://bugs.launchpad.net/bugs/1439185. * Force active focus to dialogs. Fixes: https://bugs.launchpad.net/bugs/1435260. * Merge from trunk to refactor to pull in trunk revision 832 and updated translations. * Trigger list reset animation when the index did not change. Fixes: https://bugs.launchpad.net/bugs/1428913. * Do not show toolbar in the 'Select playlist' view. Fixes: https://bugs.launchpad.net/bugs/1417823. -- Victor Thompson Sun, 09 May 2015 19:31:23 -0500 music-app (2.0) utopic; urgency=medium * Fix for cover art getting out of sync on the SongsPage.qml * Ensure recent/playlists pages remain in sync as items are added/removed from the playlist. * Update ListItemWithActions background color and reenable dim * Optimise the addQueueList transaction. * Sort playlists by name. * Change scrolling behaviour * Performance tweaks to ListItemWithActions.qml. * Change recent schemas so that it stores less and loads more from ms2 (eg art). * Fix for console errors when clearing the queue. * Only load model once CardView is visible. * Create generic WorkerModelLoader.qml * Load queue at startup via WorkerScript. * Intial changes to remember the previous queue when restarting the app. * Load queueList in async * Fix to prevent jumping from queue->full view * Defer loading of pages * Async load MediaPlayer object. * Correctly hide empty state when in Now Playing or Queue. * Async loading of MusicNowPlaying. * Add read path to Music on the SD card to extract in process thumbnail extraction. * Highlight stroke buttons on press. * Optimise MusicRow.qml by using Image rather than CoverGrid (as there will only ever be one image). * Add a bottom margin to MusicTracks.qml and MusicNowPlaying.qml. * Fix playlist art in Now Playing page. * Add save to playlist action * Only enable actions in now playing when trackQueue count > 0 * Use async for loaders and unused loaders invisible. * Move to using Qt.labs.settings and remove settings.js. * Remove CoverRow * Remove isPressedChanged workaround * Remove MusicRow isSquare specialization. * Remove lastfm, search and settings. * Pull upstream ListItemWithActions.qml * Add support for multiselect mode * Disable triggerOnRelease. * Initial empty state prototype. * Do not show the artist in the grid of albums. * Fix so that label is correct when seeking when paused. * Only show year in SongsPage.qml if year exists. * Add an initial Genres tab. * Disable clear recent icon when recent is empty. * Make Images asynchronous. * Add back apparmor confinement. * Use CardView in Recent Tab * Use Recent as default if >0 recent items otherwise use Albums Tab. * Set sourceSize of images. * Force AlbumsPage's SongsModel to filter upon startup. * Fix playlist deletion and renaming in recent table. * Add support for CardView in AlbumsPage.qml * Add support for header property in CardView.qml * Add BlurredHeader.qml * Make AlbumsPage.qml and SongsPage.qml use BlurredHeader.qml. * Allow for imports (from content-hub) to start when already importing. * Use CardView in MusicPlaylists.qml * Use header actions for edit and delete of playlists. * Make SongsPage use CoverGrid. * Add CoverGrid.qml component * Use CoverGrid in Card.qml * Initial Artists view with CardView. * Add clear queue action. Fixes: https://bugs.launchpad.net/bugs/1379895. * Switch to use positionAt when isListView becomes true * Strip out jumpTo/ensureVisible code for the now playing queue * Fix for console errors when pressing items in queue. * Remove deleted item before updating currentIndex. * Initial Now Playing queue list refactor * Initial Songs tab redesign for remix. * Ignore first value back after seeking [Workaround]. Fixes: bug 1310706. * Do not switch to full view if clicking a song in the queue. * Fix Ubuntu-Splash-Color to not get pulled into translations. * Albums tab makes use of 'CardView' * Old toolbars removed * Now playing "full" view is now default * Fix header disappearing in "full" view * Fix for cover art in albums tab to use correct data * SongsPage implemented * Now Playing "full" view implemented (other than swiping and margins need review) * Toolbar implemented and always shown (Now Playing "list" view shows old toolbar) * Background colour of app set -- Victor Thompson Wed, 29 Oct 2014 06:41:45 -0500 music-app (1.2ubuntu2) trusty; urgency=medium [ Andrew Hayzen ] * Refactor media player to make it easier to change shuffle/repeat * Added basic keyboard shortcuts * Modify cmakelist to scan for *.qml files [ Dimitri John Ledkov ] * Use python 3 compatible mock import [ Alan Pope ] * Add -qt5 command line option [lp:#1288885] [ Victor Thompson ] * Add an autopilot test to test playing a song from the Artists tab. [lp:#1268455] * Remove duplicate quit in HUD and move back button so visible [lp:#1285838] * Rebuild library from scratch on each run [lp:#1287720] * Fix PPA issue due to change log [lp:#1284637] -- Andrew Hayzen Mon, 10 Mar 2014 18:12:00 +0000 music-app (1.2ubuntu1); urgency=medium [ Daniel Holm ] * Search functionality [ Alan Pope ] * Fix .desktop file [lp:#1284025] * New icon -- Alan Pope Mon, 24 Feb 2014 12:13:29 +0000 music-app (1.1) raring; urgency=low * Blurred album art added to the now playing queue * Solid labels on cover art * Test shuffle and mp3 playback * Enable translations * Add recent albums and playlists to Music tab * Introduce user metrics of songs played * Optimize music library loading time -- Victor Thompson Tue, 29 Oct 2013 20:16:34 -0500 music-app (1.0) raring; urgency=low * Finalize changes before Saucy 13.10 release. -- Victor Thompson Thu, 10 Oct 2013 04:21:11 -0500 music-app (0.9) raring; urgency=low * A LOT of changes. -- Daniel Holm Thu, 10 Oct 2013 00:39:50 +0200 music-app (0.8) saucy; urgency=low * Added support for building and shipping translations -- David Planella Thu, 26 Sep 2013 09:52:47 +0200 music-app (0.7) raring; urgency=low * Now uses mediascanner. -- Victor Thompson Tue, 23 Sep 2013 19:47:50 -0500 music-app (0.6.5) raring; urgency=low * Resolved bug with duplicate removal error of tracks in playlist. * Added support for arguments. * Use sheets for add track to Playlist and Settings. * Fixed issue with toolbar not showing up in Playlists tab. * Clean up and smaller fixes. -- Daniel Holm Sat, 21 Sep 2013 14:41:50 +0200 music-app (0.6) raring; urgency=low * New first page with last played tracks and genre. * Playlists shows number of tracks in playlist. * NowPlaying has become the central part. * New Icon, thanks to Sam Hewitt. * 100th rev! -- Daniel Holm Thu, 03 Sep 2013 21:41:50 +0200 music-app (0.5) raring; urgency=low * HUD support. -- Daniel Holm Fri, 02 Aug 2013 21:29:50 +0200 music-app (0.4.7) raring; urgency=low * Queue moved to playlist tab. * Queue tracks now in own page. -- Daniel Holm Wed, 17 Jul 2013 18:29:50 +0200 music-app (0.4.5) raring; urgency=low * Show tracks in playlists. * Removed queue from toolbar to Playlist tab. Initial queue change. * Play track from playlist. -- Daniel Holm Wed, 17 Jul 2013 18:29:50 +0200 music-app (0.4.3) raring; urgency=low * Provide new icons. -- Lucas Romero Di Benedetto Wed, 17 Jul 2013 01:47:50 +0100 music-app (0.4.2) raring; urgency=low * Added worker for adding rows to Library model (allows gui to respond while adding to the ListModel) * Tracks are now sorted by Artist->Album->File * Text on rows in MusicTracks and MusicArtists now doesn't wrap. This means that if it is too long it now doesn't cover the row below. * Rows in MusicTracks and MusicArtists now expand to fit their parent, therefore expanding as the window expands. -- Andrew Hayzen Wed, 17 Jul 2013 01:47:50 +0100 music-app (0.4.1) raring; urgency=low * Use resolution independent font sizes for text. -- Victor Thompson Tue, 16 Jul 2013 19:47:50 -0500 music-app (0.4) raring; urgency=low * Create new playlists. * Edit name of existing playlists. * Remove playlists. * Add track to playlist. * Popover in track list. -- Daniel Holm Wed, 15 Jul 2013 15:03:31 +0200 music-app (0.3.1) raring; urgency=low * Resolved issues with icons in toolbar changing when switching tab. * Read music from ~/Music and populate library on each start. -- Victor Thompson Sun, 09 Jul 2013 19:47:50 -0500 music-app (0.3) raring; urgency=low * Back to tabs. * Album covers in Albums tab. * New toolbar. * Initial code for scrobble support. * Inital UI for last.fm - login dialog, import playlists. * Inital code for playlists. * Bug fixes for the library. * Added a temporary reset settings button in settings. -- Daniel Holm Tue, 18 Jun 2013 14:45:50 +0200 music-app (0.2.2) raring; urgency=low * Changing name of application to music-app -- Victor Thompson Sun, 09 Jun 2013 19:47:50 -0500 music-app (0.2.1) raring; urgency=low * Changing name of application to ubuntu-music-app -- Daniel Holm Tue, 04 Jun 2013 16:43:32 +0200 music-app (0.2) raring; urgency=low * Merge of Daniel's and Victor's code -- Victor Thompson Tue, 04 June 2013 11:45:00 -0500 music-app (0.1) raring; urgency=low * Initial Release. -- Michael Thu, 23 May 2013 17:10:45 -0400 lomiri-music-app-v3.0.3/debian/control000066400000000000000000000032631451274533600177350ustar00rootroot00000000000000Source: lomiri-music-app Section: misc Priority: extra Maintainer: UBports Developers Build-Depends: cmake, debhelper-compat (= 12), dh-migrations, intltool, python3:any, qt5-default, Standards-Version: 3.9.4 Homepage: https://gitlab.com/ubports/development/apps/lomiri-music-app Vcs-Git: https://gitlab.com/ubports/development/apps/lomiri-music-app.git Vcs-Browser: https://gitlab.com/ubports/development/apps/lomiri-music-app Package: lomiri-music-app Architecture: all Depends: mediascanner2.0, python3:any, qmlscene, qml-module-qt-labs-settings, qml-module-qtmultimedia (>=5.5.1-1ubuntu2), qml-module-lomiri-content, qml-module-qtquick-localstorage, qml-module-qtquick-particles2, qml-module-qtmultimedia, qml-module-qtquick2, qml-module-mediascanner0.1, qml-module-lomiri-thumbnailer0.1, qml-module-lomiri-components, qml-module-lomiri-layouts, qml-module-lomiri-performancemetrics, qtdeclarative5-usermetrics0.1, qml-module-qtquick-window2, lomiri-thumbnailer-service, suru-icon-theme | ubuntu-mobile-icons, ${misc:Depends}, Description: Music player for Ubuntu Touch Touch enabled music player for Ubuntu Touch. Package: lomiri-music-app-autopilot Architecture: all Depends: libautopilot-qt (>= 1.4), libqt5test5, lomiri-music-app (= ${source:Version}), lomiri-ui-toolkit-autopilot, ${misc:Depends}, Description: Autopilot tests for Music App This package contains the autopilot tests for the Music App lomiri-music-app-v3.0.3/debian/copyright000066400000000000000000000024361451274533600202660ustar00rootroot00000000000000Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: music-app Source: https://launchpad.net/music-app Files: * Copyright: 2013 Daniel Holm 2013 Andrew Hayzen 2013 Daniel Kessel 2013 Lucas Romero Di Benedetto 2013 Victor Thompson License: GPL-3.0+ Files: debian/* Copyright: 2013 Michael Hall License: GPL-3.0+ License: GPL-3.0+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . . On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". lomiri-music-app-v3.0.3/debian/install000066400000000000000000000000261451274533600177150ustar00rootroot00000000000000usr/bin/* usr/share/* lomiri-music-app-v3.0.3/debian/lomiri-music-app-autopilot.install000066400000000000000000000000531451274533600251210ustar00rootroot00000000000000usr/lib/*/dist-packages/lomiri_music_app/* lomiri-music-app-v3.0.3/debian/lomiri-music-app-name-change.sh000066400000000000000000000006221451274533600242120ustar00rootroot00000000000000#!/bin/sh old_name=com.ubuntu.music name=music.ubports for base in "${XDG_CONFIG_HOME:-${HOME}/.config}" \ "${XDG_DATA_HOME:-${HOME}/.local/share}" \ "${XDG_CACHE_HOME:-${HOME}/.cache}"; do if [ -d "${base}/${old_name}" ]; then mv -T "${base}/${old_name}" \ "${base}/${name}" 2>/dev/null fi done /usr/share/lomiri-music-app/lomiri-music-app-migrate.py exit 0 lomiri-music-app-v3.0.3/debian/lomiri-music-app.migrations000066400000000000000000000000471451274533600236140ustar00rootroot00000000000000debian/lomiri-music-app-name-change.sh lomiri-music-app-v3.0.3/debian/rules000077500000000000000000000011221451274533600174020ustar00rootroot00000000000000#!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 %: dh $@ --with migrations override_dh_auto_configure: dh_auto_configure -- -DCLICK_MODE=OFF -DINSTALL_TESTS=on overide_dh_missing: dh_missing --fail-missing lomiri-music-app-v3.0.3/debian/source/000077500000000000000000000000001451274533600176265ustar00rootroot00000000000000lomiri-music-app-v3.0.3/debian/source/format000066400000000000000000000000151451274533600210350ustar00rootroot000000000000003.0 (native) lomiri-music-app-v3.0.3/lomiri-music-app-migrate.py000077500000000000000000000014771451274533600223070ustar00rootroot00000000000000#!/usr/bin/python3 import os import sys from pathlib import Path organization = "music.ubports" application = "music.ubports" old_application = "com.ubuntu.music" xdg_config_home = Path(os.environ.get("XDG_CONFIG_HOME", Path.home() / ".config")) old_config_file = xdg_config_home / organization / f"{old_application}.conf" new_config_file = xdg_config_home / organization / f"{application}.conf" if old_config_file.is_file() and not new_config_file.exists(): with old_config_file.open() as old, \ new_config_file.open(mode="w+") as new: for line in old: if line.strip() == f"repeat=true": line = f"repeat=repeatAlbum\n" new.write(line) old_config_file.unlink() if len(sys.argv) > 1: os.execvp(sys.argv[1], sys.argv[1:]) lomiri-music-app-v3.0.3/lomiri-music-app.desktop.in.in000066400000000000000000000007361451274533600227060ustar00rootroot00000000000000[Desktop Entry] Name=Music Comment=A music application for Lomiri Keywords=music;songs;play;tracks;player;tunes; Type=Application Terminal=false Exec=@EXEC@ Icon=@ICON@ StartupNotify=true X-Lomiri-Touch=true X-Lomiri-Single-Instance=true X-Lomiri-Splash-Show-Header=false X-Lomiri-Splash-Title=Music X-Lomiri-Splash-Color=#f03051 X-Lomiri-Splash-Color-Footer=#F1454E X-Lomiri-Splash-Color-Header=#EF2459 X-Lomiri-Splash-Image=@SPLASH@ X-Lomiri-Default-Department-ID=sound-video lomiri-music-app-v3.0.3/lomiri-music-app.in000066400000000000000000000001341451274533600206210ustar00rootroot00000000000000#!/bin/bash export QT_SELECT=qt5 exec qmlscene @CMAKE_INSTALL_PREFIX@/@DATA_DIR@/@MAIN_QML@ lomiri-music-app-v3.0.3/manifest.json.in000066400000000000000000000011651451274533600202150ustar00rootroot00000000000000{ "architecture": "all", "description": "A music application for Ubuntu Touch", "framework": "ubuntu-sdk-20.04", "hooks": { "music": { "apparmor": "apparmor.json", "content-hub": "music-app-content.json", "desktop": "@DESKTOP_FILE@", "urls": "@URLS_FILE@" } }, "icon": "@ICON@", "maintainer": "UBports ", "name": "@CLICK_NAME@", "title": "Music", "version": "@PROJECT_VERSION@", "migrations": { "old-name": "com.ubuntu.music" }, "x-test": { "autopilot": "@AUTOPILOT_DIR@" } } lomiri-music-app-v3.0.3/music-app-content.json000066400000000000000000000001261451274533600213440ustar00rootroot00000000000000{ "destination": [ "music" ], "source": [ "music" ] } lomiri-music-app-v3.0.3/music-app.qmlproject000066400000000000000000000016501451274533600211060ustar00rootroot00000000000000/* File generated by Qt Creator, version 2.7.0 */ import QmlProject 1.1 Project { mainFile: "music-app.qml" /* Include .qml, .js, and image files from current directory and subdirectories */ QmlFiles { directory: "." } JavaScriptFiles { directory: "." } ImageFiles { directory: "." } /* Shows the desktop file in the project view */ Files { filter: "*.desktop" } /* Shows the README files in the project view */ Files { filter: "README*" } /* Shows the translation files and the .pro file used to generate the .pot template */ Files { filter: "*.po*" } Files { filter: "CMakeLists.txt" } /* Shows the autopilot python files in the project view */ Files { filter: "*.py" } /* List of plugin directories passed to QML runtime */ // importPaths: [ "../exampleplugin" ] } lomiri-music-app-v3.0.3/music-app.qmltheme000066400000000000000000000001561451274533600205420ustar00rootroot00000000000000@qml-mapping(.frame, , FrameDelegate); @qml-import(Lomiri.Components 1.3); .button { color: "#c94212"; } lomiri-music-app-v3.0.3/music.ubports_music.url-dispatcher000066400000000000000000000001251451274533600237670ustar00rootroot00000000000000[ { "protocol": "album" }, { "protocol": "music" } ] lomiri-music-app-v3.0.3/po/000077500000000000000000000000001451274533600155225ustar00rootroot00000000000000lomiri-music-app-v3.0.3/po/CMakeLists.txt000066400000000000000000000034141451274533600202640ustar00rootroot00000000000000include(FindGettext) find_program(GETTEXT_XGETTEXT_EXECUTABLE xgettext) set(DOMAIN ${PROJECT_NAME}) set(POT_FILE ${DOMAIN}.pot) file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/LINGUAS LINGUAS REGEX "^[^#].*") string(REGEX MATCHALL "[^ \t]+" LANGS "${LINGUAS}") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/POTFILES.in ${CMAKE_CURRENT_BINARY_DIR}/POTFILES COPYONLY ) # Creates the .pot file containing the translations template add_custom_target(${POT_FILE} ALL COMMENT "Generating translation template" COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} -o ${POT_FILE} --from-code=UTF-8 --language=Desktop --package-name='${PROJECT_NAME}' --copyright-holder='Canonical Ltd.' -D ${CMAKE_BINARY_DIR} ${DESKTOP_FILE}.in COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} -o ${POT_FILE} -D ${CMAKE_SOURCE_DIR} -D ${CMAKE_CURRENT_SOURCE_DIR} -D ${CMAKE_CURRENT_BINARY_DIR} --from-code=UTF-8 --c++ --qt --add-comments=TRANSLATORS --keyword=tr --keyword=tr:1,2 --keyword=N_ --package-name='${PROJECT_NAME}' --copyright-holder='Canonical Ltd.' --join-existing --files-from=${CMAKE_CURRENT_BINARY_DIR}/POTFILES) foreach(LANG ${LANGS}) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${LANG}.po ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po COPYONLY) endforeach(LANG) gettext_process_pot_file(${POT_FILE} ALL INSTALL_DESTINATION ${CMAKE_INSTALL_LOCALEDIR} LANGUAGES ${LANGS}) # make the translation files visible on qtcreator file(GLOB TRANSLATION_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.po *.pot) add_custom_target(music_ubports_TRANSLATIONFiles ALL SOURCES ${TRANSLATION_FILES}) lomiri-music-app-v3.0.3/po/LINGUAS000066400000000000000000000005741451274533600165550ustar00rootroot00000000000000am ar ast az be bg bn br bs ca ca@valencia ckb cs cy da de el en_AU en_GB en_US eo es eu fa fi fo fr fr_CA ga gd gl he hr hu id is it ja km kn ko lo lt lv mi ml mr ms my nb nl pa pl ps pt pt_BR ro ru sc shn si sk sl sq sr st sv ta te th tr ug uk zh_CN zh_HK zh_TW kmr nan dv sdh gu bn_BD aa hi hy ka tk fur en_CA mk om bem pam sco frp tg io jbo sd tet ny ur fr_CH lb ln kab mg sa lomiri-music-app-v3.0.3/po/POTFILES.in000066400000000000000000000050761451274533600173070ustar00rootroot00000000000000app/components/BlurredBackground.qml app/components/BlurredHeader.qml app/components/CoverGrid.qml app/components/Delegates/ActionDelegate.qml app/components/Delegates/Card.qml app/components/Delegates/MusicListItem.qml app/components/Dialog/ContentHubErrorDialog.qml app/components/Dialog/ContentHubNotFoundDialog.qml app/components/Dialog/ContentHubWaitDialog.qml app/components/Dialog/EditPlaylistDialog.qml app/components/Dialog/NewPlaylistDialog.qml app/components/Dialog/RemovePlaylistDialog.qml app/components/Flickables/MultiSelectListView.qml app/components/Flickables/MusicGridView.qml app/components/Flickables/MusicListView.qml app/components/HeadState/EmptyHeadState.qml app/components/HeadState/MultiSelectHeadState.qml app/components/HeadState/PlaylistHeadState.qml app/components/HeadState/PlaylistsHeadState.qml app/components/HeadState/QueueHeadState.qml app/components/HeadState/SearchHeadState.qml app/components/HeadState/SearchableHeadState.qml app/components/Helpers/ContentHubHelper.qml app/components/Helpers/UriHandlerHelper.qml app/components/Helpers/UserMetricsHelper.qml app/components/LibraryListModel.qml app/components/ListItemActions/AddToPlaylist.qml app/components/ListItemActions/AddToQueue.qml app/components/ListItemActions/AddToQueueAndPlaylist.qml app/components/ListItemActions/Remove.qml app/components/ListItemReorderComponent.qml app/components/LoadingSpinnerComponent.qml app/components/MusicPage.qml app/components/MusicToolbar.qml app/components/NowPlayingFullView.qml app/components/NowPlayingSidebar.qml app/components/NowPlayingToolbar.qml app/components/Player.qml app/components/PlaylistsEmptyState.qml app/components/Queue.qml app/components/Style.qml app/components/Themes/Ambiance/BubbleShape.qml app/components/Themes/Ambiance/SliderStyle.qml app/components/ViewButton/PlayAllButton.qml app/components/ViewButton/QueueAllButton.qml app/components/ViewButton/ShuffleButton.qml app/components/Walkthrough/FirstRunWalkthrough.qml app/components/Walkthrough/Slide1.qml app/components/Walkthrough/Slide2.qml app/components/Walkthrough/Slide3.qml app/components/Walkthrough/Walkthrough.qml app/components/WorkerModelLoader.qml app/components/WorkerWaiter.qml app/logic/meta-database.js app/logic/playlists.js app/logic/stored-request.js app/logic/worker-library-loader.js app/music-app.qml app/ui/AddToPlaylist.qml app/ui/Albums.qml app/ui/ArtistView.qml app/ui/Artists.qml app/ui/ContentHubExport.qml app/ui/Genres.qml app/ui/LibraryEmptyState.qml app/ui/NowPlaying.qml app/ui/Playlists.qml app/ui/Recent.qml app/ui/SettingsPage.qml app/ui/Songs.qml app/ui/SongsView.qml lomiri-music-app-v3.0.3/po/aa.po000066400000000000000000000244001451274533600164430ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: aa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/am.po000066400000000000000000000335031451274533600164630ustar00rootroot00000000000000# Amharic translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-08-01 17:36+0000\n" "Last-Translator: Samson \n" "Language-Team: Amharic \n" "Language: am\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "ሙዚቃ" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "ለ ኡቡንቱ የሙዚቃ መተግበሪያ" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "ሙዚቃ;ዘፈኖች;ማጫወቻ;ተረኞች;ማጫወቻዜማ;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "እሺ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "የመጣውን ፋይል ማግኘት አልተቻለም" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "ይጠብቁ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "መሰረዣ" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "በ መጠበቅ ላይ ፋይል(ሎች)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "የማጫወቻ ዝርዝር እንደገና መሰየሚያ" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "የማጫወቻ ዝርዝር ስም ያስገቡ" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "መቀየሪያ" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "የማጫወቻው ዝርዝር ቀደም ሲል ነበር" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "እባክዎን ስም ይጻፉ." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "አዲስ የማጫወቻ ዝርዝር" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "መፍጠሪያ" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "የማጫወቻ ዝርዝር በቋሚነት ላጥፋው?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "ይህን ተግባር መተው አይቻልም" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "ማስወገጃ" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "ምርጫውን መሰረዣ" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "ሁሉንም መምረጫ" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "ወደ ማጫወቻ ዝርዝር መጨመሪያ" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "ወደ ተረኛ መጨመሪያ" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "ማጥፊያ" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "ወረፋውን ምጽጃ" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "ሙዚቃ መፈለጊያ" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "የ ፋይል መንገድ መጀመር አለበት በ" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "የ ፋይል መንገድ ፋይል መሆን አለበት" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "ፋይሉን ማንቀሳቀስ አልተቻለም" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "ዛሬ የ ተጫወቱ ተረኞች" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "ዛሬ ምንም ተረኞች አልተጫወቱም" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "ወደ ወረፋ መጨመሪያ" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "በ መጫን ላይ..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "ምንም እቃዎች አልተገኙም" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "መታ ያድርጉ ሙዚቃውን ለ መቀላቀል" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "ምንም የ ማጫወቻ ዝርዝር አልተገኘም" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "መታ በ ማድረግ ተጨማሪ ነገሮችን ስለ ሙዚቃ ያግኙ %1 ምልክቱን በ መጫን ለ እያንዳንዱ ሁኔታ እና ስሜት የ ማጫወቻ " "ዝርዝር ያሰናዱ" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "ሁሉንም ማጫወቻ" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "ሁሉንም ወረፋ ማስጠበቂያ" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "መበወዣ" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "እንኳን ደህና መጡ ወደ ሙዚቃ" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "እርስዎ የሚወዷቸውን ሙዚቃ በ ኡቡንቱ ሙዚቃማጫወቻ በ መስማት ይደሰቱ: አጭር ጉብኝት ያድርጉ ወይንም መዝለያውን ተጭነው " "ሙዚቃ ያዳምጡ:" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "የ እርስዎን ሙዚቃ ያምጡ" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "የ እርስዎን አካላት ከ ኮምፒዩተር ጋር ያገናኙ እና በ ቀላሉ ፋይሎችን በ መጎተት ወደ ሙዚቃ ፎልደር ውስጥ ይጨምሩ: " "ወይንም የሚወልቁ የ ሙዚቃ መገናኛዎችን ይሰኩ:" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "አዲስ ሙዚቃ ያውርዱ" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "ኢንተርኔትን በ መቃኘት ላይ እንዳሉ የገዙዋቸውን ሙዚቃ በ ቀጥታ ማምጫ" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "መጀመሪያ" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "መዝለያ" #: app/music-app.qml:183 msgid "Next" msgstr "ይቀጥሉ" #: app/music-app.qml:184 msgid "Next Track" msgstr "የሚቀጥለው ተረኛ" #: app/music-app.qml:190 msgid "Pause" msgstr "ማስቆሚያ" #: app/music-app.qml:190 msgid "Play" msgstr "ማጫወቻ" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "በድጋሚ ማጫወቱን ማስቆሚያ" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "በድጋሚ ማጫወቱን መቀጠያ ወይንም ማስጀመሪያ" #: app/music-app.qml:197 msgid "Back" msgstr "ወደ ኋላ" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "ወደ መጨረሻው ገጽ መሄጃ" #: app/music-app.qml:206 msgid "Previous" msgstr "ቀደም ያለው" #: app/music-app.qml:207 msgid "Previous Track" msgstr "ቀደም ያለው ተረኛ" #: app/music-app.qml:212 msgid "Stop" msgstr "ማስቆሚያ" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "በድጋሚ ማጫወቱን ማስቆሚያ" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "የ ቅርብ ጊዜ" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "ተዋንያን" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "አልበሞች" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "ምድብ" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "ተረኞች" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "የማጫወቻ ዝርዝር" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "አሁን የሚጫወተው" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "የማጫወቻ ዝርዝር ይምረጡ" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 ተረኛ" msgstr[1] "%1 ተረኞች" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "ያልታወቀ አልበም" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "ቀደም ያለው" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "ያልታወቀ ድምፃዊ" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "አልበም" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 አልበም" msgstr[1] "%1 አልበሞች" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "ተዋናይ" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "ተረኛ መላኪያ" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "መለያ" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "ምንም ሙዚቃ አልተገኘም" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "በ ሙሉ መመልከቻ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "ወረፋ" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "የማጫወቻ ዝርዝር" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ar.po000066400000000000000000000320531451274533600164670ustar00rootroot00000000000000# Arabic translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-07-28 11:06+0000\n" "Last-Translator: abidin toumi \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 5.0-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "موسيقى" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "تطبيق موسيقى لِلوميري" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "موسيقى;أغانى;تشغيل;مقطوعات;مشغل;نغمات;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "موافق" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "الملف المستورد غير موجود" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "انتظر" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "إلغاء" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "ينتظر الملف(ات)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "أعد تسمية قائمة التشغيل" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "أدخل اسم قائمة التشغيل" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "غيِّر" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "هذه القائمة موجودة بالفعل" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "رجاءً أدخل اسمًا." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "قائمة تشغيل جديدة" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "أنشئ" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "حذف القائمة نهائيا؟" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "هذا الإجراء لا يمكن التراجع عنه" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "احذف" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "ألغ التحديد" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "حدد الكل" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "أضف إلى قائمة التشغيل" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "أضف إلى قائمة الانتظار" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "احذف" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "مسح الاصطفاف" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "ابحث في الموسيقى" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "يجب أن يبدأ مسار الملف بـ %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "يجب أن يشير المسار إلى ملف موجود" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "فشل نسخ الملف" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "أضف إلى الاصطفاف" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "يُحمّل..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "لم يُعثر على أي عنصر" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "انقر لخلط الموسيقى عشوائيا" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "لم يُعثر على قوائم تشغيل" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "تشغيل الكل" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "اصطفاف الكل" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "خلط عشوائي" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "مرحبا بك في تطبيق الموسيقى" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "استمتع بالموسيقى المُفضلة لديك مع تطبيق أوبونتو للموسيقى. قُم بجولة قصيرة عن " "كيفية استخدام التطبيق أو انقر تخطّي للبدء بالاستماع الآن." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "استورد موسيقاك" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "قم بتوصيل جهازك بأي حاسوب وقم بسحب الملفات إلى مُجلد الموسيقى أو أدخِل فلاشة " "تحتوي على ملفات موسيقى." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "تنزيل موسيقى جديدة" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "ابدأ" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "تخط" #: app/music-app.qml:183 msgid "Next" msgstr "التالي" #: app/music-app.qml:184 msgid "Next Track" msgstr "المقطوعة التالية" #: app/music-app.qml:190 msgid "Pause" msgstr "أوقف" #: app/music-app.qml:190 msgid "Play" msgstr "شغّل" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "إلباث" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "استأنف أو ابدأ تشغيل المقطوعة" #: app/music-app.qml:197 msgid "Back" msgstr "للخلف" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "العودة إلى آخر صفحة" #: app/music-app.qml:206 msgid "Previous" msgstr "السابقة" #: app/music-app.qml:207 msgid "Previous Track" msgstr "المقطوعة السابقة" #: app/music-app.qml:212 msgid "Stop" msgstr "أوقف" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "أوقف تشغيل المقطوعة" #: app/music-app.qml:325 msgid "Debug: " msgstr "التصحيح: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "جديد" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "الفنانين" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "ألبومات" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "الأنواع" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "قوائم التشغيل" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "مُشغّل الآن" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "اختر قائمة تشغيل" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "ألبوم مجهول" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "السابقة" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "فنان مجهول" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "ألبوم" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 فنان" msgstr[1] "فنان واحد (%1)" msgstr[2] "فنانيّن (%1)" msgstr[3] "%1 فنانين" msgstr[4] "%1 فنانا" msgstr[5] "%1 فنان" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "الفنان" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "النوع" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "لم يُعثر على موسيقى" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "الاصطفاف" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "قائمة التشغيل" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ast.po000066400000000000000000000247521451274533600166630ustar00rootroot00000000000000# Asturian translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2019-10-30 01:36+0000\n" "Last-Translator: enolp \n" "Language-Team: Asturian \n" "Language: ast\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.8\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Encaboxar" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Esbillar too" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Desaniciar" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Cargando…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "Sig." #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "Atrás" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/az.po000066400000000000000000000257531451274533600165100ustar00rootroot00000000000000# Azerbaijani translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-05-14 23:42+0000\n" "Last-Translator: Nicat Məmmədov \n" "Language-Team: Azerbaijani \n" "Language: az\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musiqi" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Ubuntu üçün musiqi tətbiqetməsi." #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "İmtina" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Dəyişdir" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Çalğı siyahısı onsuzda var" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Yeni oxunma siyahısı" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Yarat" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Oxunma siyahısına əlavə et" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Sil" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Faylı köçürmək alınmadı" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Yüklənir..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Hamısını oxut" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "Növbəti" #: app/music-app.qml:184 msgid "Next Track" msgstr "Növbəti Mahnı" #: app/music-app.qml:190 msgid "Pause" msgstr "Fasilə" #: app/music-app.qml:190 msgid "Play" msgstr "Oxut" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "Geri" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Əvvəlki səhifəyə qayıt" #: app/music-app.qml:206 msgid "Previous" msgstr "Əvvəlki" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Əvvəlki Mahnı" #: app/music-app.qml:212 msgid "Stop" msgstr "Dayan" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Ən son" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "İfaçılar" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albomlar" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Janrlar" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Oxunma siyahısı" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Oxunma siyahısını seç" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Naməlum Albom" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Əvvəlki" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Naməlum İfaçı" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albom" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albom" msgstr[1] "%1 albomlar" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "İfaçı" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Çalğı siyahısı" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/be.po000066400000000000000000000342101451274533600164500ustar00rootroot00000000000000# Belarusian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-11-27 11:32+0000\n" "Last-Translator: Zmicer \n" "Language-Team: Belarusian \n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Музыка" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Музычная праграма для Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "музыка; песні; прайграць; кампазіцыі; прайгравальнік; мелодыі;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Добра" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Імпартаваны файл не знойдзены" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Пачакайце" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Скасаваць" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Чаканне файла(-ў)…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Змяніць назву спіса прайгравання" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Увядзіце назву спіса прайгравання" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Змяніць" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Спіс прайгравання ўжо існуе" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Калі ласка, увядзіце назву." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Новы спіс прайгравання" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Стварыць" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Выдаліць спіс прайгравання?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Дзеяння нельга будзе адрабіць" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Выдаліць" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Скасаваць выбар" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Абраць усе" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Дадаць у спіс прайгравання" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Дадаць у чаргу" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Выдаліць" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Ачысціць чаргу" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Пошук музыкі" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Шлях да файла мусіць пачынацца з" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Шлях мусіць паказваць на файл" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Не атрымалася перамясціць файл" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "праслуханыя сёння кампазіцыі" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Сёння нічога не прайгравалася" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Дадаць у чаргу" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Загрузка..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Нічога не знойдзена" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Націсніце, каб змяшаць музыку" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Спісаў не знойдзена" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Выкарыстоўвайце ўсе функцыі праграмы. Націсніце на значок %1, і стварайце " "спісы прайгравання на любы выпадак." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Прайграць усё" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Дадаць усё ў чаргу" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Змяшаць" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Вітаем у праграме" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Слухайце ўлюбёную музыку з дапамогай праграмы \"Музыка\" для Ubuntu. " "Азнаёмцеся з функцыямі праграмы, або націсніце кнопку \"Прамінуць\", каб " "перайсці да праслухоўвання музыкі." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Імпартуйце музыку" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Падлучыце прыладу да камп'ютара і проста перацягніце файлы ў каталог музыкі, " "або устаўце рухомы носьбіт з музыкай." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Спампоўвайце новую музыку" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Спампоўвайце музыку непасрэдна з браўзера." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Пачаць" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Мінуць" #: app/music-app.qml:183 msgid "Next" msgstr "Далей" #: app/music-app.qml:184 msgid "Next Track" msgstr "Наступная кампазіцыя" #: app/music-app.qml:190 msgid "Pause" msgstr "Прыпыніць" #: app/music-app.qml:190 msgid "Play" msgstr "Прайграць" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Прыпыніць прайграванне" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Працягнуць або пачаць прайграванне" #: app/music-app.qml:197 msgid "Back" msgstr "Назад" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Вярнуцца на апошнюю старонку" #: app/music-app.qml:206 msgid "Previous" msgstr "Папярэдняя" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Папярэдняя кампазіцыя" #: app/music-app.qml:212 msgid "Stop" msgstr "Спыніць" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Спыніць прайграванне" #: app/music-app.qml:325 msgid "Debug: " msgstr "Адладка: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Нядаўнія" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Выканаўцы" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Альбомы" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Жанры" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Кампазіцыі" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Спісы прайгравання" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Прайграецца" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Абраць спіс прайгравання" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 кампазіцыя" msgstr[1] "%1 кампазіцыі" msgstr[2] "%1 кампазіцый" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Невядомы альбом" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Папярэдняя" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Невядомы выканаўца" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Альбом" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 альбом" msgstr[1] "%1 альбомы" msgstr[2] "%1 альбомаў" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Выканаўца" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Экспартаваць кампазіцыю" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Жанр" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Музыкі не знойдзена" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Паказаць поўнасцю" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Чарга" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Спіс прайгравання" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/bem.po000066400000000000000000000246451451274533600166400ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Bemba \n" "Language: bem\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/bg.po000066400000000000000000000264221451274533600164600ustar00rootroot00000000000000# Bulgarian translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Музика" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Промени" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Нов плейлист" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Създай" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Премахни" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Добави към плейлист" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Добави към опашката" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Зареждане..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "Следваща" #: app/music-app.qml:184 msgid "Next Track" msgstr "Следваща песен" #: app/music-app.qml:190 msgid "Pause" msgstr "Пауза" #: app/music-app.qml:190 msgid "Play" msgstr "Старт" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Паузирай възпроизвеждане" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Продължи или започни възпроизвеждане" #: app/music-app.qml:197 msgid "Back" msgstr "Назад" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Върни се на последна страница" #: app/music-app.qml:206 msgid "Previous" msgstr "Предишена" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Предишна песен" #: app/music-app.qml:212 msgid "Stop" msgstr "Спри" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Спиране на възпроизвеждането" #: app/music-app.qml:325 msgid "Debug: " msgstr "Дебъгване " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Последни" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Изпълнители" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Албуми" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Жанрове" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Плейлисти" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Избери плейлист" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Неизвестен албум" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Предишена" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Неизвестен изпълнител" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 албум" msgstr[1] "%1 албуми" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/bn.po000066400000000000000000000252351451274533600164700ustar00rootroot00000000000000# Bengali translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2021-01-30 16:27+0000\n" "Last-Translator: imrufbd \n" "Language-Team: Bengali \n" "Language: bn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ঠিক আছে" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "বাতিল" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "সরান" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "নির্বাচন বাতিল করুন" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "সবগুলি নির্বাচন" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "মুছুন" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "লোড হচ্ছে .." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "পরবর্তী" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "পূর্বপাতা" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/bn_BD.po000066400000000000000000000247421451274533600170370ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-08-20 08:04+0000\n" "Last-Translator: Abdullah AL Shohag \n" "Language-Team: Bengali (Bangladesh) \n" "Language: bn_BD\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.0-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "মিউজিক" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "সব নির্বাচন করুন" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "সেটিংস" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/br.po000066400000000000000000000310651451274533600164720ustar00rootroot00000000000000# Breton translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2016-08-29 06:19+0000\n" "Last-Translator: Fohanno Thierry \n" "Language-Team: Breton \n" "Language: br\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Sonerezh" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Ul lenner sonerezh evit Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "sonerezh;tonioù;lenn;tonioù;lennet;tonioù;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Mat eo" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "N'eo ket bet kavet ar restr enporzhiet" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Gortoz" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Nullañ" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "O c'hortoz ur restr pe restroù..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Adenvel ar roll-tonioù" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Merkañ anv ar roll-tonioù" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Cheñch" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Ar roll tonioù zo anezhañ dija" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Skrivit un anv, mar plij." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Roll-tonioù nevez" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Krouiñ" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Dilemel ar roll-tonioù da viken ?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Ne c'hall ket bezañ nullet" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Dilemel" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Nullañ an diuzadur" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Diuzañ pep tra" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Ouzhpennañ d'ar roll-tonioù" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Ouzhpennañ d'al lostennad" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Diverkañ" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Goulloiñ al lostenn" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Klask sonerezh" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Ret eo da hent ar restr kregiñ gant" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Hent ar restroù a rank bezañ ur restr" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "N'eus ket bet gallet dilec'hiañ ar restr" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "tonioù lennet hiziv" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "N'eus bet lennet ton ebet hiziv" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Ouzhpennañ d'al lostennad" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "O kargañ..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "N'eus bet kavet elfenn ebet" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Touch evit sonerezh mesk-ha-mesk" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "N'eus bet kavet roll-tonioù ebet" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Tapit muioc'h a sonerezh o pouezañ war an arlun %1 evit kregiñ da grouiñ " "rolloù-tonioù diouzh hoc'h imor hag an degouezhioù." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Lenn pep tra" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Lakaat pep tra el lostenn" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Sonerezh mesk-ha-mesk" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Deuet-mat oc'h e Sonerezh" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Ho pet plijadur gant ho sonerezh gwellañ-deuet en arload Sonerezh Ubuntu. " "Grit un dro buan-ha-buan evit deskiñ penaos kregiñ ganti pe pouzit war " "lammat evit kregiñ da selaou bremañ." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Enporzhiañ ho sonerezh" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Kevreit ho penveg ouzh un urzhiataer bennak ha riklit restroù er renkell " "Sonerezh pe ensoc'hit ur media lem-laka gant sonerezh ennañ." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Pellgargañ sonerezh nevez" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Enporzhiañ war-eeun sonerezh prenet enlinenn." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Loc'hañ" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Lammat" #: app/music-app.qml:183 msgid "Next" msgstr "War-lerc'h" #: app/music-app.qml:184 msgid "Next Track" msgstr "Ton da-heul" #: app/music-app.qml:190 msgid "Pause" msgstr "Ehan" #: app/music-app.qml:190 msgid "Play" msgstr "Lenn" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Ehanañ" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Derc'hel da lenn pe kregiñ da lenn" #: app/music-app.qml:197 msgid "Back" msgstr "Distreiñ" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Distro d'ar bajenn diwezhañ" #: app/music-app.qml:206 msgid "Previous" msgstr "Diaraok" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Ton diaraok" #: app/music-app.qml:212 msgid "Stop" msgstr "Paouez" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Paouez da lenn" #: app/music-app.qml:325 msgid "Debug: " msgstr "Dizreinañ : " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nevez zo" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Arzourien" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albomoù" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Stiloù" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Tonioù" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Rolloù-tonioù" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Lennet bremañ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Diuzañ ur roll-tonioù" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 ton" msgstr[1] "%1 a donioù" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Albom dianav" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Diaraok" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Arzour dianav" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albom" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albom" msgstr[1] "%1 albom" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Arzour" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Ezporzhiañ an ton" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Stil" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "N'eus ket bet kavet sonerezh" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Gwek klok" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Lostenn" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Roll tonioù" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/bs.po000066400000000000000000000310221451274533600164640ustar00rootroot00000000000000# Bosnian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2016-03-20 14:11+0000\n" "Last-Translator: Kenan Gutić \n" "Language-Team: Bosnian \n" "Language: bs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Muzika" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Aplikacija za muziku za Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "muzika;pjesme;pusti;albumi;reproduktor;melodije;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Uredu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Dodani dokument nije pronađen" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Sačekajte" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Odustani" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Čekam dokument(e)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Preimenuj listu izvođenja" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Unesi ime liste izvođenja" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Promjeni" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Lista izvođenja već postoji" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Molim unesite ime." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nova lista izvođenja" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Napravi" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Trajno obriši listu izvođenja?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Ovo ne može biti poništeno" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Ukloni" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Poništi izbor" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Izaberi sve" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Dodaj u listu izvođenja" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Dodaj u red" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Obriši" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Očisti red" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Traži muziku" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Putanja dokumenata mora početi sa" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Putanja dokumenata mora biti dokument" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Prebacivanje dokumenta nije uspjelo" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "pjesama pušteno danas" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Nema puštenih pjesama danas" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Dodaj u red" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Učitavanje..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nema pronađenih stavki" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Dodirni za nasumičnu reprodukciju" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nema pronađenih listi izvođenja" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Dobijte više od Muzike dodirom na %1 ikonu kako bi napravili listu izvođenja " "za svako raspoloženje i priliku." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Pusti sve" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Sve u red" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Nasumično" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Dobrodošli u Muziku" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Uživajte u svojoj omiljenoj musici sa Ubuntu Music aplikacijom. Pogledajte " "kratki pregled aplikacija o tome kako početi ili kliknite preskoči kako bi " "počeli slušati odmah." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Dodajte svoju muziku" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Povežite svoj uređaj sa bilo kojim računarom i jednostavno prevucite " "dokumente u folder Muzika (Music) ili ubacite prenosivi medij sa muzikom." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Preuzmi novu muziku" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Direktno dodajte muziku kupljenu online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Pokreni" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Preskoči" #: app/music-app.qml:183 msgid "Next" msgstr "Naprijed" #: app/music-app.qml:184 msgid "Next Track" msgstr "Sledjeća pjesma" #: app/music-app.qml:190 msgid "Pause" msgstr "Pauza" #: app/music-app.qml:190 msgid "Play" msgstr "Pokreni" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pauziraj reprodukciju" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Nastavi ili pokreni reprodukciju" #: app/music-app.qml:197 msgid "Back" msgstr "Nazad" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Idi nazad na zadnju stranu" #: app/music-app.qml:206 msgid "Previous" msgstr "Prethodna" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Prethodna pjesma" #: app/music-app.qml:212 msgid "Stop" msgstr "Zaustavi" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Zaustavi reprodukciju" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nedavno" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Izvođači" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumi" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Žanrovi" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Pjesme" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Liste izvođenja" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Sada svira" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Odaberi listu izvođenja" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 pjesma" msgstr[1] "%1 pjesme" msgstr[2] "%1 pjesme" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Nepoznat album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Prethodna" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Nepoznat izvođač" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albuma" msgstr[2] "%1 albuma" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Izvođač" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Izvezi pjesmu" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Žanr" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Muzika nije pronađena" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Puni prikaz" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Red" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Lista izvođenja" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ca.po000066400000000000000000000313251451274533600164510ustar00rootroot00000000000000# Catalan translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-10-27 00:15+0000\n" "Last-Translator: Joan CiberSheep \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Música" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Una aplicació de música per a l'Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "música;cançons;reprodueix;pistes;reproductor;melodies;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "d'acord" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "No s'ha trobat el fitxer importat" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Espereu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancel·la" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "S'estan esperant els fitxers..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Canvia el nom de la llista de reproducció" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Escriviu el nom de la llista" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Canvia" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Ja existeix la llista de reproducció" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Escriviu un nom." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Llista de reproducció nova" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Crea" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Voleu suprimir la llista de reproducció permanentment?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Aquesta acció no es pot desfer" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Elimina" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancel·la la selecció" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Selecciona-ho tot" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Afegeix a la llista de reproducció" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Afegeix-ho a la cua" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Elimina" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Buida la cua" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Cerca música" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "El camí del fitxer ha de començar per" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "El camí del fitxer ha d'apuntar a un fitxer" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Ha fallat el trasllat del fitxer" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "pistes reproduïdes avui" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Cap pista reproduïda avui" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Afegeix a la cua" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "S'està carregant..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "No s'ha trobat cap element" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Feu un toc per reproduir de manera aleatòria" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "No s'ha trobat cap llista de reproducció" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Useu tot el potencial de l'app: Toqueu la icona %1 i creeu llistes de " "reproducció per cada ocasió i estat d'ànim." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Reprod. tot" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Tot a la cua" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Aleatori" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Us donem la benvinguda a Música" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Gaudiu de la vostra música preferida amb aquesta aplicació. Feu una breu " "visita guiada d'introducció, o bé toqueu «Omet» per començar a escoltar " "música ara." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importeu la vostra música" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Connecteu el dispositiu a un ordinador i arrossegueu fitxers de música a la " "carpeta Music o inseriu una targeta de memòria que contingui música." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Baixa música nova" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importeu la música que compreu directament mentre navegueu." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Inicia" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Omet" #: app/music-app.qml:183 msgid "Next" msgstr "Seg." #: app/music-app.qml:184 msgid "Next Track" msgstr "Pista següent" #: app/music-app.qml:190 msgid "Pause" msgstr "Pausa" #: app/music-app.qml:190 msgid "Play" msgstr "Reprodueix" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Posa la reproducció en pausa" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continua o inicia la reproducció" #: app/music-app.qml:197 msgid "Back" msgstr "Enrere" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Torna a la pàgina anterior" #: app/music-app.qml:206 msgid "Previous" msgstr "Anterior" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Pista anterior" #: app/music-app.qml:212 msgid "Stop" msgstr "Atura" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Atura la reproducció" #: app/music-app.qml:325 msgid "Debug: " msgstr "Depuració: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recents" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistes" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Àlbums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Gèneres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Pistes" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Llistes de reproducció" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "S'està reproduint" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Seleccioneu una llista de reproducció" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 pista" msgstr[1] "%1 pistes" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Àlbum desconegut" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Anterior" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista desconegut" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Àlbum" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 àlbum" msgstr[1] "%1 àlbums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exporta la pista" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Gènere" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "No s'ha trobat música al dispositiu" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vista completa" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Cua" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Llista de reproducció" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ca@valencia.po000066400000000000000000000313141451274533600202520ustar00rootroot00000000000000# Catalan translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-05-14 23:43+0000\n" "Last-Translator: David Planella \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Música" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Una aplicació de música per a l'Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "música;cançons;temes;reprodueix;reproducció;peces;àlbums;reproductor;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "D’acord" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "No s'ha trobat el fitxer importat" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Espereu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancel·la" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "S'estan esperant els fitxers..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Canvia el nom de la llista de reproducció" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Escriviu el nom de la llista de reproducció" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Canvia" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Ja existeix la llista de reproducció" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Escriviu un nom" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Llista de reproducció nova" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Crea" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Voleu suprimir la llista de reproducció permanentment?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Esta acció no es pot desfer" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Suprimeix-la" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancel·la la selecció" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Selecciona-ho tot" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Afig a la llista de reproducció" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Afig-ho a la cua" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Suprimeix-la" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Buida la cua" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Cerca música" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "El camí del fitxer ha de començar per" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "El camí del fitxer ha d'apuntar a un fitxer" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Ha fallat el trasllat del fitxer" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Afig a la cua" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "S'està carregant..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "No s'ha trobat cap element" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Feu un toc per reproduir de manera aleatòria" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "No s'ha trobat cap llista de reproducció" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Feu servir tot el potencial de l'aplicació Música i feu un toc a la icona %1 " "per començar a crear llistes de reproducció per cada ocasió i estat d'ànim." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Reprod. tot" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Tot a la cua" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Aleatori" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Vos donem la benvinguda a Música" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Gaudiu de la vostra música preferida amb l'aplicació de Música de l'Ubuntu. " "Feu una breu visita guiada per començar, o bé feu un toc a Omet per escoltar " "música directament." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importeu la vostra música" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Connecteu el dispositiu a qualsevol ordinador i arrossegueu i deixeu anar " "els fitxers de música a la carpeta Music. També podeu inserir targetes de " "memòria que continguen música." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Baixa música nova" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importeu la música que compreu directament mentre navegueu." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Inicia" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Omet" #: app/music-app.qml:183 msgid "Next" msgstr "Següent" #: app/music-app.qml:184 msgid "Next Track" msgstr "Tema següent" #: app/music-app.qml:190 msgid "Pause" msgstr "Posa en pausa" #: app/music-app.qml:190 msgid "Play" msgstr "Reprodueix" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Posa la reproducció en pausa" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continua o inicia la reproducció" #: app/music-app.qml:197 msgid "Back" msgstr "Arrere" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Torna a la pàgina anterior" #: app/music-app.qml:206 msgid "Previous" msgstr "Anterior" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Tema anterior" #: app/music-app.qml:212 msgid "Stop" msgstr "Para" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Para la reproducció" #: app/music-app.qml:325 msgid "Debug: " msgstr "Depuració: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recents" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistes" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Àlbums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Gèneres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Llistes de reproducció" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "S'està reproduïnt" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Seleccioneu una llista de reproducció" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Àlbum desconegut" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Anterior" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista desconegut" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Àlbum" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 àlbum" msgstr[1] "%1 àlbums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Gènere" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "No s'ha trobat música al dispositiu" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Cua" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Llista de reproducció" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ckb.po000066400000000000000000000250061451274533600166240ustar00rootroot00000000000000# Kurdish (Sorani) translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kurdish (Central) \n" "Language: ckb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/cs.po000066400000000000000000000306221451274533600164720ustar00rootroot00000000000000# Czech translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-03-30 13:46+0000\n" "Last-Translator: Jozef Mlich \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 4.17-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Hudba" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Hudební přehrávač pro Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "hudba;skladby;hrát;stopy;přehrávač;melodie;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Importovaný soubor nebyl nalezen" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Počkat" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Zrušit" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Čekání na soubor(y)…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Přejmenovat seznam stop" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Zadejte název seznamu stop" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Změnit" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Seznam stop už existuje" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Zadejte název." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nový seznam stop" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Vytvořit" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Odstranit seznam skladeb?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Nelze vzít zpět" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Odstranit" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Zrušit výběr" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Vybrat vše" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Přidat do seznamu stop" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Přidat do fronty" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Smazat" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Vyčistit frontu" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Hledat skladbu" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Je třeba, aby popis umístění souboru začínal na %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Je třeba, aby popis umístění vedl na soubor" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Soubor se nepodařilo okopírovat" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "dnes přehrané skladby" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Dnes žádné přehrané skladby" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Přidat do fronty" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Načítání…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nenalezeny žádné položky" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Klepnutím zamícháte pořadí" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nenalezen žádný seznam stop" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Získejte více z hudby klepnutím na %1 ikonu pro vytváření seznamů stop pro " "každou náladu a příležitost." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Přehrát vše" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Zařadit vše do fronty" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Promíchat" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Vítejte v aplikaci hudba" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Užívejte si vámi oblíbené skladby v aplikaci hudba. Prohlédněte si krátký " "návod anebo přeskočte a začněte rovnou poslouchat." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importovat vaše skladby" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Připojte svůj telefon k počítači a jednoduše přetáhněte soubory do složky " "hudba anebo vložte vyměnitelné médium s hudbou." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Stáhnout si novou hudbu" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Automaticky si stáhnout zakoupené skladby při prohlížení Internetu." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Spustit" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Přeskočit" #: app/music-app.qml:183 msgid "Next" msgstr "Další" #: app/music-app.qml:184 msgid "Next Track" msgstr "Další skladba" #: app/music-app.qml:190 msgid "Pause" msgstr "Pozastavit" #: app/music-app.qml:190 msgid "Play" msgstr "Přehrát" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pozastavit přehrávání" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Pokračovat anebo spustit přehrávání" #: app/music-app.qml:197 msgid "Back" msgstr "Zpět" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Zpět na poslední stránku" #: app/music-app.qml:206 msgid "Previous" msgstr "Předchozí" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Předchozí skladba" #: app/music-app.qml:212 msgid "Stop" msgstr "Zastavit" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Zastavit přehrávání" #: app/music-app.qml:325 msgid "Debug: " msgstr "Ladící informace: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nedávné" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Umělci" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Alba" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Žánry" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Skladby" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Sezn. stop" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Právě hraje" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Vybrat seznam stop" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 skladba" msgstr[1] "%1 skladby" msgstr[2] "%1 skladeb" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Neznámé album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Různý" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Neznámý interpret" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 alba" msgstr[2] "%1 alb" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Umělec" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exportovat skladbu" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Žánr" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nebyla nalezena žádná hudba" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Celá obrazovka" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Fronta" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Seznam skladeb" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Nastavení" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Nevypínat obrazovku když hraje hudba" lomiri-music-app-v3.0.3/po/cy.po000066400000000000000000000305301451274533600164760ustar00rootroot00000000000000# Welsh translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-07-16 14:20+0000\n" "Last-Translator: Owen Llywelyn \n" "Language-Team: Welsh \n" "Language: cy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? " "2 : 3;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Cerddoriaeth" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Ap cerddoriaeth ar gyfer Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "cerddoriaeth;caneuon;chwarae;traciau;chwaraewr;tonau;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Iawn" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Methwyd canfod y ffeil fewnforiwyd" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Arhoswch" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Diddymu" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Aros am ffeil(iau)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Ailenwi rhestr chwarae" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Enwi rhestr chwarae" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Newid" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Rhestr chwarae eisoes yn bodoli" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Teipiwch enw" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Rhestr chwarae newydd" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Creu" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Dileu rhestr chwarae am byth?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Does dim modd dadwneud hyn" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Tynnu" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Diddymu'r dewis" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Dewis y Cyfan" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Ychwanegu at restr chwarae" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Ychwanegu at y ciw" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Dileu" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Clirio'r ciw" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Chwilio cerddoriaeth" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Rhaid i'r llwybr ffeil ddechrau gyda" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Rhaid i'r llwybr ffeil fod yn ffeil" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Methwyd symud y ffeil" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Ychwanegu at y Ciw" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Llwytho..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Heb ganfod eitemau" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Tapiwch i shifflo cerddoriaeth" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Heb ganfod rhestrau chwarae" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Gwnech yn fawr o Cerddoriaeth drwy dapio'r eicon %1 i greu rhestrau chwarae " "ar gyfer pob achlysur." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Chwarae'r cyfan" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Ciwio'r cyfan" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Shifflo" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Croeso i Cerddoriaeth" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Mwynhewch eich hoff gerddoriaeth gydag Ap Cerddoriaeth Ubuntu. Ewch ar daith " "dywys fer i ddysgu sut i ddechrau neu sgipiwch i ddechrau gwrando nawr." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Mewnforio ecih cerddoriaeth" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Cysylltwch eich dyfais i unrhyw gyfrifiadur a llusgwch ffeiliau i'r blygell " "Cerddoriaeth neu gysylltu cyfrwng cludadwy sy'n cynnwys cerddoriaeth." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Llwytho cerddoriaeth newydd" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Mewnforio cerddoriaeth brynwyd wrth bori arlein yn uniongyrchol." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Cychwyn" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Neidio" #: app/music-app.qml:183 msgid "Next" msgstr "Nesaf" #: app/music-app.qml:184 msgid "Next Track" msgstr "Trac Nesaf" #: app/music-app.qml:190 msgid "Pause" msgstr "Seibio" #: app/music-app.qml:190 msgid "Play" msgstr "Chwarae" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Seibio Chwarae" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Parhau neu gychwyn chwarae" #: app/music-app.qml:197 msgid "Back" msgstr "Nôl" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Nôl i'r dudalen flaenorol" #: app/music-app.qml:206 msgid "Previous" msgstr "Blaenorol" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Trac Blaenorol" #: app/music-app.qml:212 msgid "Stop" msgstr "Atal" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Atal Chwarae" #: app/music-app.qml:325 msgid "Debug: " msgstr "Dadfygio: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Diweddar" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistiaid" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albymau" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Mathau" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Rhestr Chwarae" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Yn chwarae nawr" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Dewis rhestr chwarae" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Albwm Anhysbys" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Blaenorol" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artist Anhysbys" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albwm" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albwm" msgstr[1] "%1 albwm" msgstr[2] "%1 albwm" msgstr[3] "%1 albwm" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artist" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Math" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Heb ganfod cerddoriaeth" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Ciw" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Rhestr chwarae" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/da.po000066400000000000000000000304411451274533600164500ustar00rootroot00000000000000# Danish translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2018-09-18 12:39+0000\n" "Last-Translator: Øjvind Fritjof Arnfred \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.20\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musik" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Et musikprogram til Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "musik;sange;numre;afspil;spor;afspiller;melodier;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Importeret fil findes ikke" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Vent" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Annullér" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Venter på fil(er)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Omdøb afspilningsliste" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Udfyld afspilningslistenavn" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Skift" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Afspilningslisten findes allerede" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Indtast venligst et navn." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Ny afspilningsliste" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Opret" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Slet afspilningsliste permanent?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Dette kan ikke fortrydes" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Fjern" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Annullér valg" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Vælg alle" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Føj til afspilningsliste" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Føj til køen" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Slet" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Ryd kø" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Søg efter musik" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Stien skal starte med" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Stien skal føre til en fil" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Det mislykkedes at flytte filen" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "Spor afspillet idag" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Ingen spor afspillet idag" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Føj til afspilningsliste" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Indlæser..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Intet fundet" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Tryk for at blande musik" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Ingen afspilningslister fundet" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Få mere ud af Musik ved at trykke på %1 knappen, og lav afspilningslister " "til enhver lejlighed." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Afspil alle" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Føj alle til kø" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Bland" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Velkommen til Musik" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Nyd din favorit musik med Ubuntus Musik program. Tag en kort rundvisning, " "eller spring over for at høre musik nu." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importér din musik" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Forbind din enhed til en computer og træk filer til Musik mappen, eller " "indsæt et flytbart medie med musik." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Hent ny musik" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importér musik der er købt online, direkte." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Start" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Spring over" #: app/music-app.qml:183 msgid "Next" msgstr "Næste" #: app/music-app.qml:184 msgid "Next Track" msgstr "Næste spor" #: app/music-app.qml:190 msgid "Pause" msgstr "Pause" #: app/music-app.qml:190 msgid "Play" msgstr "Afspil" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Sæt afspilning på pause" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Fortsæt eller start afspilning" #: app/music-app.qml:197 msgid "Back" msgstr "Tilbage" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Gå tilbage til sidste side" #: app/music-app.qml:206 msgid "Previous" msgstr "Forrige" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Forrige spor" #: app/music-app.qml:212 msgid "Stop" msgstr "Stop" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Stop afspilning" #: app/music-app.qml:325 msgid "Debug: " msgstr "Fejlsøgning: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nylige" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Kunstnere" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albummer" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genrer" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Spor" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Afspilningslister" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Afspiller nu" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Vælg afspilningsliste" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 spor" msgstr[1] "%1 spor" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Ukendt album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Forrige" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Ukendt kunstner" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albummer" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Kunstner" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Eksportér Spor" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Ingen musik fundet" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Fuld oversigt" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Føj til kø" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Afspilningsliste" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/de.po000066400000000000000000000310221451274533600164500ustar00rootroot00000000000000# German translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-06-28 02:28+0000\n" "Last-Translator: \"J. Lavoie\" \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.18.1\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musik" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Eine Musik-App für Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "Musik;Titel;Alben;Wiedergabe;Abspielen;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Importierte Datei nicht gefunden" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Warten" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Abbrechen" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Auf Datei(en) wird gewartet …" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Wiedergabeliste umbenennen" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Name für Wiedergabeliste eingeben" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Ändern" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Wiedergabeliste bereits vorhanden" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Bitte einen Namen eingeben." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Neue Wiedergabeliste" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Erstellen" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Wiedergabeliste unwiderruflich löschen?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Dies kann nicht rückgängig gemacht werden" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Entfernen" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Auswahl abbrechen" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Alles auswählen" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Zu Wiedergabeliste hinzufügen" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Zur Warteschlange hinzufügen" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Löschen" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Warteschlange leeren" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Musik durchsuchen" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Dateipfad muss beginnen mit %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Dateipfad muss eine Datei sein" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Verschieben der Datei fehlgeschlagen" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "heute gespielte Titel" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Heute noch keine Titel gespielt" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Zur Warteschlange hinzufügen" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Wird geladen …" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Keine Elemente gefunden" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Zum Starten der Zufallswiedergabe tippen" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Keine Wiedergabelisten gefunden" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Holen Sie mehr aus dieser Anwendung heraus, indem Sie auf »%1« tippen, um " "Wiedergabelisten für jede Stimmung und Gelegenheit zu erstellen." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Alle wiedergeben" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Alle zur Warteschlange hinzufügen" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Zufällig" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Willkommen bei Musik" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Genießen Sie Ihre Lieblingsmusik mit der Musik-App von Lomiri. Nehmen Sie " "sich kurz Zeit für eine Einführung oder tippen Sie auf »Überspringen«, um " "sofort mit dem Musikhören zu beginnen." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Ihre Musik importieren" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Verbinden Sie Ihr Gerät mit einem Rechner und ziehen Sie Dateien einfach in " "den Musikordner oder legen Sie einen Wechseldatenträger mit Musik ein." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Neue Musik herunterladen" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Musik direkt importieren, die Sie im Internet gekauft haben." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Start" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Überspringen" #: app/music-app.qml:183 msgid "Next" msgstr "Weiter" #: app/music-app.qml:184 msgid "Next Track" msgstr "Nächster Titel" #: app/music-app.qml:190 msgid "Pause" msgstr "Pause" #: app/music-app.qml:190 msgid "Play" msgstr "Wiedergeben" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Wiedergabe unterbrechen" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Wiedergabe fortsetzen oder starten" #: app/music-app.qml:197 msgid "Back" msgstr "Zurück" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Zur letzten Seite zurück gehen" #: app/music-app.qml:206 msgid "Previous" msgstr "Vorheriger" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Vorheriger Titel" #: app/music-app.qml:212 msgid "Stop" msgstr "Stopp" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Wiedergabe anhalten" #: app/music-app.qml:325 msgid "Debug: " msgstr "Fehlersuche: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Kürzlich" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Interpreten" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Alben" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Titel" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Wiedergabelisten" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Jetzt läuft" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Wiedergabeliste auswählen" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 Titel" msgstr[1] "%1 Titel" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Unbekanntes Album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Verschiedene" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Unbekannter Interpret" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 Album" msgstr[1] "%1 Alben" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Interpret" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Titel exportieren" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Es konnte keine Musik gefunden werden" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Volle Ansicht" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Warteschlange" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Wiedergabeliste" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Einstellungen" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Display eingeschaltet lassen solang Musik abgespielt wird" lomiri-music-app-v3.0.3/po/dv.po000066400000000000000000000246451451274533600165060ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Dhivehi \n" "Language: dv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/el.po000066400000000000000000000350711451274533600164700ustar00rootroot00000000000000# Greek translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-08-16 08:16+0000\n" "Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Μουσική" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Μια εφαρμογή αναπαραγωγής μουσικής για το Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "μουσική;τραγούδια;αναπαραγωγή;κομμάτια;αναπαραγωγέας;μελωδίες;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ΟΚ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Το αρχείο που εισήχθη δεν βρέθηκε" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Αναμονή" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Ακύρωση" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Αναμονή για αρχείο(α)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Μετονομασία λίστας αναπαραγωγής" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Εισάγετε όνομα λίστας αναπαραγωγής" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Αλλαγή" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Η λίστα αναπαραγωγής υπάρχει ήδη" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Παρακαλούμε εισάγετε ένα όνομα." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Νέα λίστα αναπαραγωγής" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Δημιουργία" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Θέλετε να διαγράψετε μόνιμα την λίστα αναπαραγωγής?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Αυτό δεν μπορεί να ανακτηθεί" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Αφαίρεση" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Ακύρωση επιλογής" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Επιλογή όλων" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Προσθήκη στη λίστα αναπαραγωγής" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Προσθήκη στην ουρά" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Διαγραφή" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Εκκαθάριση σειράς αναμονής" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Αναζήτηση μουσικής" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Η διαδρομή αρχείου πρέπει να ξεκινάει με" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Η διαδρομή αρχείου πρέπει να καταλήγει σε αρχείο" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Αποτυχία μετακίνησης του αρχείου" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "κομμάτια που αναπαρήχθησαν σήμερα" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Κανένα κομμάτι δεν αναπαρήχθη σήμερα" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Προσθήκη στην ουρά" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Γίνεται φόρτωση..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Δε βρέθηκαν αντικείμενα" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Αγγίξτε για ανακάτεμα της μουσικής" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Δεν βρέθηκε καμία λίστα αναπαραγωγής" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Εκμεταλευτείτε περισσότερο την εφαρμογή Μουσική με το να αγγίξτε το " "εικονίδιο %1 για να αρχίσετε να φτιάχνετε λίστες αναπαραγωγής για κάθε " "διάθεση και περίσταση." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Αναπαραγωγή όλων" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Όλα στην αναμονή" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Ανακάτεμα" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Καλώς ορίσατε στην Μουσική" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Απολαύστε την αγαπημένη σας μουσική με την εφαρμογή Μουσικής του Ubuntu. " "Ξεναγηθείτε και μάθετε για το πως να ξεκινήσετε ή πατήστε παράβλεψη για να " "ξεκινήστε να ακούτε μουσική τώρα." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Εισάγετε την μουσική σας" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Συνδέστε την συσκευή σας σε οποιοδήποτε υπολογιστή και απλά σύρετε αρχεία " "στον φάκελο της Μουσικής ή εισάγετε αφαιρούμενο μέσο με μουσική." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Λήψη νέων μουσικών κομματιών" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Άμεση εισαγωγή μουσικής που αγοράζετε κατά την περιήγηση." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Έναρξη" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Παράλειψη" #: app/music-app.qml:183 msgid "Next" msgstr "Επόμενο" #: app/music-app.qml:184 msgid "Next Track" msgstr "Επόμενο κομμάτι" #: app/music-app.qml:190 msgid "Pause" msgstr "Παύση" #: app/music-app.qml:190 msgid "Play" msgstr "Αναπαραγωγή" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Παύση αναπαραγωγής" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Συνέχιση ή έναρξη αναπαραγωγής" #: app/music-app.qml:197 msgid "Back" msgstr "Πίσω" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Επιστροφή στην τελευταία σελίδα" #: app/music-app.qml:206 msgid "Previous" msgstr "Προηγούμενο" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Προηγούμενο κομμάτι" #: app/music-app.qml:212 msgid "Stop" msgstr "Διακοπή" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Διακοπή αναπαραγωγής" #: app/music-app.qml:325 msgid "Debug: " msgstr "Αποσφαλμάτωση: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Πρόσφατα" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Καλλιτέχνες" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Άλμπουμ" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Είδη" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Κομμάτια" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Λίστες αναπαραγωγής" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Αναπαράγεται τώρα" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Επιλογή λίστας αναπαραγωγής" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 κομμάτι" msgstr[1] "%1 κομμάτια" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Άγνωστο άλμπουμ" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Προηγούμενο" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Άγνωστος καλλιτέχνης" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Άλμπουμ" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 άλμπουμ" msgstr[1] "%1 άλμπουμς" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Καλλιτέχνης" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Εξαγωγή κομματιών" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Είδος μουσικής" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Δε βρέθηκε μουσική" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Πλήρης προβολή" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Σειρά αναμονής" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Λίστα αναπαραγωγής" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/en_AU.po000066400000000000000000000277711451274533600170670ustar00rootroot00000000000000# English (Australia) translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-11-18 13:48+0000\n" "Last-Translator: Victor Thompson \n" "Language-Team: English (Australia) \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Music" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "A music application for Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "music;songs;play;tracks;player;tunes;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Imported file not found" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Wait" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Waiting for file(s)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Rename playlist" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Enter playlist name" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Change" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Playlist already exists" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Please type in a name." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "New playlist" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Create" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Permanently delete playlist?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "This cannot be undone" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Remove" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancel selection" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Add to playlist" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Add to queue" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Clear queue" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Search music" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Filepath must start with" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Filepath must be a file" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Failed to move file" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Add to Queue" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Loading…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "No items found" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Tap to shuffle music" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "No playlists found" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Play all" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Queue all" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Shuffle" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Welcome to Music" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Enjoy your favourite music with Ubuntu's Music App. Take a short tour on how " "to get started or press skip to start listening now." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Import your music" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Download new music" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Directly import music bought while browsing online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Start" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Skip" #: app/music-app.qml:183 msgid "Next" msgstr "Next" #: app/music-app.qml:184 msgid "Next Track" msgstr "Next Track" #: app/music-app.qml:190 msgid "Pause" msgstr "Pause" #: app/music-app.qml:190 msgid "Play" msgstr "Play" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pause Playback" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continue or start playback" #: app/music-app.qml:197 msgid "Back" msgstr "Back" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Go back to last page" #: app/music-app.qml:206 msgid "Previous" msgstr "Previous" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Previous Track" #: app/music-app.qml:212 msgid "Stop" msgstr "Stop" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Stop Playback" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recent" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artists" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Playlists" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Now playing" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Select playlist" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Unknown Album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Previous" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Unknown Artist" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artist" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "No music found" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Full view" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Queue" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Playlist" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/en_CA.po000066400000000000000000000275251451274533600170420ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-06-28 02:28+0000\n" "Last-Translator: \"Rudra Harsh V.Singh\" \n" "Language-Team: English (Canada) \n" "Language: en_CA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.18.1\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Music" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "A music application for Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "music;songs;play;tracks;player;tunes;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Imported file not found" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Wait" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Waiting for file(s)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Rename playlist" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Enter playlist name" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Change" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Playlist already exists" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Please type in a name." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "New playlist" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Create" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Permanently delete playlist?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "This cannot be undone" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Remove" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancel selection" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Add to playlist" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Add to queue" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Clear queue" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Search music" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Filepath must start with %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Filepath must be a file" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Failed to copy file" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "tracks played today" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "No tracks played today" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Add to Queue" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Loading..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "No items found" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Tap to shuffle music" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "No playlists found" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Play all" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Queue all" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Shuffle" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Welcome to Music" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Import your music" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Download new music" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Directly import music bought while browsing online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Start" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Skip" #: app/music-app.qml:183 msgid "Next" msgstr "Next" #: app/music-app.qml:184 msgid "Next Track" msgstr "Next Track" #: app/music-app.qml:190 msgid "Pause" msgstr "Pause" #: app/music-app.qml:190 msgid "Play" msgstr "Play" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pause Playback" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continue or start playback" #: app/music-app.qml:197 msgid "Back" msgstr "Back" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Go back to last page" #: app/music-app.qml:206 msgid "Previous" msgstr "Previous" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Previous Track" #: app/music-app.qml:212 msgid "Stop" msgstr "Stop" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Stop Playback" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recent" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artists" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Tracks" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Playlists" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Now playing" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Select playlist" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 track" msgstr[1] "%1 tracks" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Unknown Album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Various" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Unknown Artist" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artist" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Export Track" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "No music found" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Full view" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Queue" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Playlist" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Settings" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Keep screen on while music is played" lomiri-music-app-v3.0.3/po/en_GB.po000066400000000000000000000302001451274533600170270ustar00rootroot00000000000000# English (United Kingdom) translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2018-07-06 12:41+0000\n" "Last-Translator: konrad \n" "Language-Team: English (United Kingdom) \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.15\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Music" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "A music application for Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "music;songs;play;tracks;player;tunes;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Imported file not found" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Wait" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Waiting for file(s)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Rename playlist" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Enter playlist name" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Change" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Playlist already exists" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Please type in a name." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "New playlist" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Create" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Permanently delete playlist?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "This cannot be undone" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Remove" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancel selection" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Add to playlist" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Add to queue" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Clear queue" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Search music" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Filepath must start with" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Filepath must be a file" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Failed to move file" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "tracks played today" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "No tracks played today" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Add to Queue" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Loading..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "No items found" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Tap to shuffle music" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "No playlists found" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Play all" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Queue all" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Shuffle" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Welcome to Music" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Enjoy your favourite music with Ubuntu's Music App. Take a short tour on how " "to get started or press skip to start listening now." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Import your music" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Download new music" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Directly import music bought while browsing online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Start" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Skip" #: app/music-app.qml:183 msgid "Next" msgstr "Next" #: app/music-app.qml:184 msgid "Next Track" msgstr "Next Track" #: app/music-app.qml:190 msgid "Pause" msgstr "Pause" #: app/music-app.qml:190 msgid "Play" msgstr "Play" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pause Playback" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continue or start playback" #: app/music-app.qml:197 msgid "Back" msgstr "Back" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Go back to last page" #: app/music-app.qml:206 msgid "Previous" msgstr "Previous" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Previous Track" #: app/music-app.qml:212 msgid "Stop" msgstr "Stop" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Stop Playback" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recent" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artists" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Tracks" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Playlists" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Now playing" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Select playlist" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 track" msgstr[1] "%1 tracks" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Unknown Album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Previous" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Unknown Artist" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artist" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Export Track" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "No music found" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Full view" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Queue" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Playlist" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/en_US.po000066400000000000000000000246331451274533600171030ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: English (United States) \n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/eo.po000066400000000000000000000304721451274533600164730ustar00rootroot00000000000000# Esperanto translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-03-23 22:41+0000\n" "Last-Translator: phlostically \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.16.2-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Muziko" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Muzika aplikaĵo por Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "muziko;kanzonoj,ludi,trakoj,ludilo,agordoj;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Bone" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Importita dosiero ne trovebla" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Atendu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Nuligi" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Atendante dosiero(j)n..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Alinomigi ludliston" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Enigu ludlistan nomon" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Ŝanĝi" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Ludlisto jam ekzistas" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Bv. tajpi nomon." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nova ludlisto" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Krei" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Ĉu vi volas forigi la ludliston permanente?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Ĉi tio estas nemalfarebla" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Forigi" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Nuligi selekton" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Elekti ĉion" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Aldoni al ludlisto" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Aldoni al atendovico" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Forigi" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Purigi atendovicon" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Serĉi muzikon" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Dosiervojo devas komenci per" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Vi devas enigi dosiervojon" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Eraro dum la dosier-movo" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "trakoj luditaj hodiaŭ" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Neniu trako ludita hodiaŭ" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Aldoni al atendovico" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Ŝargante…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Neniu ero trovita" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Premu por miksi muzikon" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Neniu ludlisto trovita" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Profitu pli de Muziko premante la piktogramon %1 por komenci krei ludlistojn " "por ĉiuj atmosferoj kaj okazoj." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Ludi ĉiujn" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Envicigi ĉiujn" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Miksaĵo" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bonvenon al Muziko" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Ĝuu vian preferatan muzikon dank'al la ubuntua aplikaĵo Muziko. Faru " "mallongan lernoviziton aŭ premu sur preterpaŝi por ekaŭskulti nun." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importi vian muzikon" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Konektu vian aparaton al iu komputilo kaj simple ŝovu dosierojn al la Muzika " "dosiero aŭ enmetu demeteblan memorilon kun muziko." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Elŝuti novan muzikon" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Rekte importi muzikon aĉetitan dum retumado." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Startigi" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Preterpasi" #: app/music-app.qml:183 msgid "Next" msgstr "Sekva" #: app/music-app.qml:184 msgid "Next Track" msgstr "Sekva trako" #: app/music-app.qml:190 msgid "Pause" msgstr "Paŭzo" #: app/music-app.qml:190 msgid "Play" msgstr "Ludi" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Paŭzi ludadon" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Daŭrigi aŭ komenci ludadon" #: app/music-app.qml:197 msgid "Back" msgstr "Reen" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Reiri al lasta paĝo" #: app/music-app.qml:206 msgid "Previous" msgstr "Antaŭa" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Antaŭa trako" #: app/music-app.qml:212 msgid "Stop" msgstr "Haltigi" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Haltigi ludadon" #: app/music-app.qml:325 msgid "Debug: " msgstr "Senerarigo: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Freŝdataj" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistoj" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumoj" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Stiloj" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Trakoj" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Ludlistoj" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Nun ludante" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Selekti ludliston" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 trako" msgstr[1] "%1 trakoj" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Nekonita albumo" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Antaŭa" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Nekonita artisto" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albumo" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albumo" msgstr[1] "%1 albumoj" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artisto" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Eksporti trakon" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Stilo" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Muziko ne estis trovita" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Plena vido" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Atendovico" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Ludlisto" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/es.po000066400000000000000000000304301451274533600164710ustar00rootroot00000000000000# Spanish translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-04-06 21:55+0000\n" "Last-Translator: gallegonovato \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.17-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Música" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Aplicación de música para Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "música;canciones;reproducir;pistas;reproductor;temas;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "De acuerdo" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "No se encontró el archivo importado" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Espere" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancelar" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Esperando archivo(s)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Cambiar nombre de lista" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Escriba el nombre de la lista" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Cambiar" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "La lista ya existe" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Escriba un nombre." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Lista nueva" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Crear" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "¿Quiere eliminar la lista permanentemente?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Esto no se puede deshacer" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Eliminar" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancelar selección" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Seleccionar todo" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Añadir a la lista" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Añadir a la cola" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Eliminar" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Vaciar cola" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Buscar música" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "La ruta de los archivos debe comenzar por %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "La ruta debe ser de un archivo" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "No se pudo copiar el archivo" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "pistas reproducidas hoy" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Ninguna pista reproducida hoy" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Añadir a la cola" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Cargando..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "No se encontró ningún elemento" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Toque para mezclar las canciones" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "No se encontró ninguna lista" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Obtener más de Música tocando el icono %1 para comenzar a crear listas para " "cada estado y ocasión." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Reproducir todo" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Todo a la cola" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Aleatorio" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bienvenido a Música" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Disfrute de su música favorita con la aplicación Música de Lomiri. Realice " "una breve visita guiada de introducción o pulse en «Omitir» para comenzar a " "reproducir ahora." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importar su música" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Conecte su dispositivo a cualquier equipo y simplemente arrastre archivos a " "la carpeta Música o introduzca un medio extraíble con música." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Descargar música nueva" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importar directamente música comprada mientras se navega." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Iniciar" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Omitir" #: app/music-app.qml:183 msgid "Next" msgstr "Sig." #: app/music-app.qml:184 msgid "Next Track" msgstr "Pista siguiente" #: app/music-app.qml:190 msgid "Pause" msgstr "Pausar" #: app/music-app.qml:190 msgid "Play" msgstr "Reproducir" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pausar reproducción" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continuar o iniciar reproducción" #: app/music-app.qml:197 msgid "Back" msgstr "Atrás" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Ir a la ultima página" #: app/music-app.qml:206 msgid "Previous" msgstr "Anterior" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Pista anterior" #: app/music-app.qml:212 msgid "Stop" msgstr "Detener" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Parar reproducción" #: app/music-app.qml:325 msgid "Debug: " msgstr "Depurar: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recientes" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistas" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Álbumes" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Géneros" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Pistas" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Listas" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Ahora suena" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Seleccionar lista" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 pista" msgstr[1] "%1 pistas" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Álbum desconocido" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Varios" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista desconocido" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Álbum" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 álbum" msgstr[1] "%1 álbumes" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exportar pista" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Género" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "No se encontró música" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vista completa" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Cola" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Lista" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Configuración" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Mantener encendida la pantalla al reproducir música" lomiri-music-app-v3.0.3/po/eu.po000066400000000000000000000310601451274533600164730ustar00rootroot00000000000000# Basque translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2019-07-07 09:48+0000\n" "Last-Translator: Aitzol Berasategi \n" "Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.6.1\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musika" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Ubunturako musika-aplikazioa" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" "musika;abestiak;kantak;kantuak;erreproduzitu;erreproduzitzailea;tonuak;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Ados" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Inportatutako fitxategia ez da aurkitu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Itxaron" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Utzi" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Fitxategi(ar)en zain..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Berrizendatu erreprodukzio-zerrenda" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Idatzi erreprodukzio-zerrendaren izena" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Aldatu" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Dagoeneko existitzen da erreprodukzio-zerrenda" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Idatzi izen bat." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Erreprodukzio-zerrenda berria" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Sortu" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Erreprodukzio-zerrenda behin betiko ezabatu?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Hau ezin da desegin" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Ezabatu" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Hautapena ezeztatu" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Guztia Hautatu" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Gehitu erreprodukzio-zerrendara" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Gehitu ilarara" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Ezabatu" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Garbitu ilara" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Bilatu musika" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Fitxategiaren bide-izena honela hasi behar da" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Bide-izena fitxategi bat izan behar da" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Huts egin du fitxategia lekuz aldatzeak" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "gaur erreproduzitutako pistak" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Gaur erreproduzituriko pistarik ez" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Gehitu ilarari" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Kargatzen..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Ez da elementurik aurkitu" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Ukitu musika nahasteko" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Ez da erreprodukzio-zerrendarik aurkitu" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Atera zukua Musikari, ukitu %1 ikonoa aldarte eta une desberdinetarako " "erreprodukzio-zerrendak sortzen hasteko." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Guztia erreproduzitu" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Jarri dena ilaran" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Nahastu" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Ongi etorri Musikara" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Gozatu musika gogokoenaz Ubunturen musika-aplikazioarekin. Ekin hasierako " "ibilaldiari edo sakatu Saltatu musika entzuten hasteko." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Inportatu musika" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Konektatu zure gailua edozein ordenagailutara eta arrastatu fitxategiak " "Musika karpetara edo sartu musikadun euskarri aldagarri bat." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Deskargatu musika berria" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Inportatu online erositako musika zuzenean." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Hasi" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Saltatu" #: app/music-app.qml:183 msgid "Next" msgstr "Hurrengoa" #: app/music-app.qml:184 msgid "Next Track" msgstr "Hurrengo pista" #: app/music-app.qml:190 msgid "Pause" msgstr "Pausatu" #: app/music-app.qml:190 msgid "Play" msgstr "Erreproduzitu" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pausatu erreprodukzioa" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Jarraitu edo hasi erreprodukzioa" #: app/music-app.qml:197 msgid "Back" msgstr "Atzera" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Itzuli azken orrira" #: app/music-app.qml:206 msgid "Previous" msgstr "Aurrekoa" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Aurreko pista" #: app/music-app.qml:212 msgid "Stop" msgstr "Gelditu" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Gelditu erreprodukzioa" #: app/music-app.qml:325 msgid "Debug: " msgstr "Arazketa: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Azkenak" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistak" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumak" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Generoak" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Pistak" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Zerrendak" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Orain erreproduzitzen" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Hautatu erreprodukzio-zerrenda" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "Pista %1" msgstr[1] "%1 pista" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album ezezaguna" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Aurrekoa" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista ezezaguna" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albuma" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "Album %1" msgstr[1] "%1 album" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Pista exportatu" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Generoa" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Ez da musikarik aurkitu" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Ikuspegi osoa" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Jarri ilaran" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Erreprodukzio-zerrenda" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/fa.po000066400000000000000000000325661451274533600164640ustar00rootroot00000000000000# Persian translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2022-03-10 09:21+0000\n" "Last-Translator: Behzad \n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "آهنگ" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "یک نرم‌افزار موسیقی برای اوبونتو" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "موسیقی;آهنگ‌ها;پخش;قظعه‌ها;پخش‌کننده;صداها;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "قبول" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "پرونده‌ی وارد شده یافت نشد" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "صبر کنید" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "لغو" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "در حال انتظار برای پرونده(ها)…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "تغییرنام فهرست‌پخش" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "نام فهرست‌پخش را وارد کنید" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "تغییر" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "فهرست‌پخش از پیش وجود دارد" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "لطفاُ یک نام بنویسید." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "فهرست پخش جدید" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "ساختن" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "حذف دایمی فهرست‌پخش؟" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "این کار قابل برگرداندن نیست." #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "برداشتن" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "لغو انتخاب" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "انتخاب همه" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "افزودن به فهرست پخش" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "افزودن به صف" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "حذف" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "پاک‌سازی صف" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "جست‌وجوی آهنگ" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "مسیر پرونده باید با این شروع شود:" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "مسیر پرونده باید یک پرونده باشد" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "شکست در جابه‌جایی پرونده" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "قطعه امروز پخش شد" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "امروز هیچ قطعه‌ای پخش نشد" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "افزودن به صف" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "در حال بارگذاری…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "هیچ موردی پیدا نشد" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "برای بر زدن آهنگ‌ها ضربه بزنید" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "هیچ فهرست پخشی یافت نشد" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "با زدن روی شمایل %1 برای شروع ساخت فهرست‌پخش‌هایی برای هر حال و هوا، از آهنگ‌ها " "بیش‌تر بهره ببرید." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "پخش همه" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "به صف کردن همه" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "بر زدن" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "به آهنگ‌ها خوش آمدید" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "با اپ آهنگ‌های اوبونتو از آهنگ‌های دلخواهتان لذّت ببرید. تور کوتاهی درباره‌ی " "چگونه شروع کردن بگذرانید یا برای شروع گوش کردن «پرش» را فشار دهید." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "آهنگ‌هایتان را وارد کنید" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "دستگاهتان را به هر رایانه‌ای وصل کرده و به سادگی پرونده‌ها را به پوشه‌ی آهنگ‌ها " "بکشید یا رسانه‌ی قابل حمل شامل آهنگی وارد کنید." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "بارگیری آهنگ‌های جدید" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "ورود مستقیم آهنگ‌های خریده شده هنگام مرور برخط." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "شروع" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "پرش" #: app/music-app.qml:183 msgid "Next" msgstr "پسین" #: app/music-app.qml:184 msgid "Next Track" msgstr "قطعه‌ی بعدی" #: app/music-app.qml:190 msgid "Pause" msgstr "مکث" #: app/music-app.qml:190 msgid "Play" msgstr "پخش" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "توقف پخش" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "ادامه یا شروع پخش" #: app/music-app.qml:197 msgid "Back" msgstr "بازگشت" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "رفتن به صفحه‌ی قبلی" #: app/music-app.qml:206 msgid "Previous" msgstr "پیشین" #: app/music-app.qml:207 msgid "Previous Track" msgstr "قطعه‌ی پیشین" #: app/music-app.qml:212 msgid "Stop" msgstr "توقف" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "توقف پخش" #: app/music-app.qml:325 msgid "Debug: " msgstr "رفع اشکال: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "اخیر" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "هنرمندان" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "آلبوم‌ها" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "سبک‌ها" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "قطعه‌ها" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "فهرست‌های پخش" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "درحال پخش" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "انتخاب فهرست پخش" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 قطعه" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "آلبوم نامعلوم" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "پیشین" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "هنرمند ناشناس" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "آلبوم" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 آلبوم" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "هنرمند" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "صدور قطعه" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "سبک" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "هیچ آهنگی پیدا نشد" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "نمای کامل" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "صف" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "فهرست‌پخش" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/fi.po000066400000000000000000000306761451274533600164740ustar00rootroot00000000000000# Finnish translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-11-23 18:30+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musiikki" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Musiikkisovellus Ubuntulle" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "music;songs;play;tracks;player;tunes;musiikki;kappaleet;soitin;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Selvä" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Tuotua tiedostoa ei löydy" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Odota" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Peru" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Odotetaan tiedostoja..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Nimeä soittolista uudelleen" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Anna soittolistalle nimi" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Vaihda" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Soittolista on jo olemassa" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Anna nimi." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Uusi soittolista" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Luo" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Poistetaanko soittolista pysyvästi?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Tätä ei voi kumota" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Poista" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Peru valinta" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Valitse kaikki" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Lisää soittolistalle" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Lisää jonoon" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Poista" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Tyhjennä jono" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Etsi musiikkia" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Tiedostopolun tulee alkaa" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Tiedostopolun tulee olla tiedosto" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Tiedoston siirtäminen ei onnistunut" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "kappaletta toistettu tänään" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Ei toistettuja kappaleita tänään" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Lisää jonoon" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Ladataan..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Kohteita ei löytynyt" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Kosketa sekoittaaksesi musiikkia" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Soittolistoja ei löytynyt" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Lisätietoja musiikkisovelluksesta painamalla %1-kuvaketta – voit luoda " "soittolistoja kaikkiin tunnelmiin ja tilanteisiin." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Toista kaikki" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Kaikki jonoon" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Sekoita" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Musiikki - tervetuloa" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Nauti musiikista Ubuntun musiikkisovelluksessa. Seuraa ohjeita kuinka " "aloittaa, tai valitse ohita aloittaaksesi kuuntelun saman tien." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Tuo musiikkia" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Liitä laitteesi mihin tahansa tietokoneeseen ja raahaa tiedostoja Musiikki-" "kansioon. Vaihtoehtoisesti liitä laitteeseen musiikkia sisältävä media." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Lataa uutta musiikkia" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Tuo suoraan verkosta ostetun musiikin kuunneltavaksi." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Aloita" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Ohita" #: app/music-app.qml:183 msgid "Next" msgstr "Seuraava" #: app/music-app.qml:184 msgid "Next Track" msgstr "Seuraava kappale" #: app/music-app.qml:190 msgid "Pause" msgstr "Pysäytä" #: app/music-app.qml:190 msgid "Play" msgstr "Toista" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Keskeytä toisto" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Jatka tai käynnistä toisto" #: app/music-app.qml:197 msgid "Back" msgstr "Takaisin" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Takaisin edelliselle sivulle" #: app/music-app.qml:206 msgid "Previous" msgstr "Edellinen" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Edellinen kappale" #: app/music-app.qml:212 msgid "Stop" msgstr "Pysäytä" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Pysäytä toisto" #: app/music-app.qml:325 msgid "Debug: " msgstr "Vianjäljitys: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Viimeisimmät" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Esittäjät" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumit" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Tyylilajit" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Kappaleet" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Soittolistat" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Nyt soi" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Valitse soittolista" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 kappale" msgstr[1] "%1 kappaletta" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Tuntematon albumi" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Edellinen" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Tuntematon esittäjä" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albumi" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albumi" msgstr[1] "%1 albumia" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Esittäjä" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Vie kappale" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Tyylilaji" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Musiikkia ei löytynyt" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Täysi näkymä" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Jono" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Soittolista" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/fo.po000066400000000000000000000304501451274533600164700ustar00rootroot00000000000000# Faroese translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2016-01-28 22:04+0000\n" "Last-Translator: Angutivik Casper Rúnur Tausen Hansen \n" "Language-Team: Faroese \n" "Language: fo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Tónleikur" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Eitt tónleikaforrit til Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "tónleikur;sangir;spæl;sangir;spælari;nótar" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Innflutti fílan varð ikki funnin" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Bíða" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Angra" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Bíðar eftir fíla/fílur" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Nýnevn tónleikalistan" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Nevn tónleikalistan" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Broyt" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Tónleikalistin er longu til" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Vinarliga skriva navn" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nýggjur tónleikalisti" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Stovna" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Strika tónleikalistan?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Hetta kann ikki angrast" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Strika" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Angra val" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Vel alt" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Skoyt uppí tónleikalistan" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Skoyt uppí bíðirøðina" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Strika" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Rudda bíðirøð" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Leita eftir tónleiki" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Fíluleiðin skal byrja við" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Fíluleiðin skal vera ein fíla" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Miseydnaðist at flyta fíluna" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Skoyt uppí bíðirøð" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Lesur inn..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Ongar lutir funnir" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Pikka fyri at blanda tónleikin" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Eingin tónleikalisti funnin" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Fá meir burturúr Music við at pikka %1, fyri at gera tónleikalistar fyri " "hvørja kenning og hending." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Spæl alt" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Skoyt alt uppí bíðirøð" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Blanda" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Vælkomin til Music" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Njóta yndis tónleik tín við tónleikaforrit Ubuntus. Fá eina rundferð um " "hvussu tú byrjar ella leyp um fyri at spæla tónleik nú." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Innflut tónleik tín" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Sambind tína snildfon ella teldil til eina teldu, og toga fílurnar til " "tónleikamappuna, ella innset leysamiðlar við tónleiki." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Tak nýggjan tónleik niður" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Innflyt tónleiki beinleiðis keypt ímeðan kaðað varð á alnetinum." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Byrja" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Leyp um" #: app/music-app.qml:183 msgid "Next" msgstr "Næsta" #: app/music-app.qml:184 msgid "Next Track" msgstr "Næsti sangur" #: app/music-app.qml:190 msgid "Pause" msgstr "Steðga" #: app/music-app.qml:190 msgid "Play" msgstr "Spæl" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Steðga avspæling" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Hald á fram ella byrja avspæling" #: app/music-app.qml:197 msgid "Back" msgstr "Aftur" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Far aftur til seinastu síðu" #: app/music-app.qml:206 msgid "Previous" msgstr "Fyrra" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Fyrri sangur" #: app/music-app.qml:212 msgid "Stop" msgstr "Steðga" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Steðga avspæling" #: app/music-app.qml:325 msgid "Debug: " msgstr "Kemb: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Seinastu" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Listafólk" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Plátur" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Sløg" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Tónleikalistar" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Spælir" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Vel tónleikalisti" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Ókend pláta" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Fyrra" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Ókent listarfólk" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Pláta" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 pláta" msgstr[1] "%1 plátur" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Listarfólk" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Slag" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Eingin tónleikur funnin" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Fult sýni" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Bíðirøð" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Tónleikalisti" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/fr.po000066400000000000000000000310041451274533600164670ustar00rootroot00000000000000# French translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-06-28 02:28+0000\n" "Last-Translator: \"J. Lavoie\" \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.18.1\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musique" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Un lecteur de musique pour Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "musique;chansons;lire;morceaux;lecteur;mélodies;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Fichier importé non trouvé" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Patienter" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Annuler" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "En attente de fichier(s)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Renommer la liste de lecture" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Saisir un nom de liste de lecture" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Modifier" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "La liste de lecture existe déjà" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Veuillez saisir un nom." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nouvelle liste de lecture" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Créer" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Supprimer définitivement la liste de lecture ?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Ceci ne peut pas être annulé" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Supprimer" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Annuler la sélection" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Tout sélectionner" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Ajouter à la liste de lecture" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Ajouter à la liste d'attente" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Supprimer" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Vider la liste d'attente" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Rechercher de la musique" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Le chemin du fichier doit commencer par %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Le chemin de fichier doit être un fichier" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Échec de la copie du fichier" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "morceaux lus aujourd'hui" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Aucun morceau lu aujourd'hui" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Ajouter à la liste d'attente" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Chargement…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Aucun élément trouvé" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Appuyez pour mélanger la musique" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Aucune liste de lecture trouvée" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Profitez pleinement de Musique en appuyant sur l'icône %1 pour commencer à " "créer des listes de lecture pour chaque humeur et chaque occasion." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Tout lire" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Liste d'attente" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Aléatoire" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bienvenue dans Musique" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Profitez de votre musique préférée avec l'application Musique de Lomiri. " "Suivez une courte visite guidée pour apprendre à démarrer ou appuyez sur " "ignorer pour démarrer votre écoute maintenant." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importer votre musique" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Connectez votre appareil à n'importe quel ordinateur et déplacez simplement " "des fichiers dans le dossier Musique ou insérez un support amovible " "contenant de la musique." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Télécharger de nouvelles musiques" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" "Importer directement de la musique achetée lors de la navigation en ligne." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Démarrer" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Passer" #: app/music-app.qml:183 msgid "Next" msgstr "Suivant" #: app/music-app.qml:184 msgid "Next Track" msgstr "Morceau suivant" #: app/music-app.qml:190 msgid "Pause" msgstr "Pause" #: app/music-app.qml:190 msgid "Play" msgstr "Lecture" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Mettre en pause" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continuer ou démarrer la lecture" #: app/music-app.qml:197 msgid "Back" msgstr "Retour" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Revenir à la dernière page" #: app/music-app.qml:206 msgid "Previous" msgstr "Précédent" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Morceau précédent" #: app/music-app.qml:212 msgid "Stop" msgstr "Arrêter" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Arrêter la lecture" #: app/music-app.qml:325 msgid "Debug: " msgstr "Débogage : " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Récent" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistes" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Morceaux" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Listes de lecture" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Lecture en cours" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Sélectionnez une liste" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 morceau" msgstr[1] "%1 morceaux" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album inconnu" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Divers" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artiste inconnu" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artiste" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exporter le morceau" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Aucune musique trouvée" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vue complète" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Liste d’attente" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Liste de lecture" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Paramètres" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Garder l'écran allumé lorsque de la musique est jouée" lomiri-music-app-v3.0.3/po/fr_CA.po000066400000000000000000000314211451274533600170350ustar00rootroot00000000000000# French (Canada) translation for music-app # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-02-27 05:21+0000\n" "Last-Translator: Ryan Argente \n" "Language-Team: French (Canada) \n" "Language: fr_CA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.8\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musique" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Une application de musique pour Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" "musique;chansons;chanson;lire;piste;pistes;morceau;morceaux;lecteur;toune;" "tounes;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Le fichier importé est introuvable" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Patienter" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Annuler" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "En attente de fichier(s)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Renommer la liste de lecture" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Saisir le nom de la liste de lecture" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Modifier" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "La liste de lecture existe déjà" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Veuillez saisir un nom." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nouvelle liste de lecture" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Créer" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Supprimer définitivement la liste de lecture?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Cela ne peut pas être annulé" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Supprimer" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Annuler la sélection" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Tout sélectionner" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Ajouter à la liste de lecture" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Ajouter à la file d'attente" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Supprimer" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Vider la file" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Rechercher de la musique" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Le chemin de fichier doit commencer par" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Le chemin de fichier doit être un fichier" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Échec de déplacement du fichier" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "pistes lues aujourd'hui" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Aucune piste lue aujourd'hui" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Ajouter à la file d'attente" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Chargement..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Aucun élément trouvé" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Toquer pour mélanger la musique" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Aucune liste de lecture trouvée" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Profitez davantage de Musique en toquant l'icône %1 pour commencer à créer " "des listes de lecture pour chaque humeur et occasion." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Tout lire" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Tout en file d'attente" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Mélanger" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bienvenue dans Musique" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Profitez de votre musique préférée avec l'appli Musique d'Ubuntu. Suivez une " "courte visite guidée ou pesez sur Ignorer pour commencer votre écoute " "maintenant." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importer votre musique" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Connectez votre appareil à n'importe quel ordinateur et faites glisser " "simplement des fichiers dans le dossier Musique ou insérez un support " "amovible contenant de la musique." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Télécharger des nouveaux morceaux" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" "Importer directement de la musique achetée lors de la navigation en ligne." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Démarrer" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Ignorer" #: app/music-app.qml:183 msgid "Next" msgstr "Suivant" #: app/music-app.qml:184 msgid "Next Track" msgstr "Piste suivante" #: app/music-app.qml:190 msgid "Pause" msgstr "Pause" #: app/music-app.qml:190 msgid "Play" msgstr "Lecture" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Mettre en pause" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continuer ou commencer la lecture" #: app/music-app.qml:197 msgid "Back" msgstr "Précédent" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Revenir à la dernière page" #: app/music-app.qml:206 msgid "Previous" msgstr "Précédent" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Piste précédente" #: app/music-app.qml:212 msgid "Stop" msgstr "Arrêter" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Arrêter la lecture" #: app/music-app.qml:325 msgid "Debug: " msgstr "Débogage : " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Récent" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistes" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Pistes" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Listes de lecture" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Lecture en cours" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Choisir une liste" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 piste" msgstr[1] "%1 pistes" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album inconnu" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Précédent" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artiste inconnu" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artiste" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exporter la piste" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Aucune musique trouvée" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vue complète" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "File d'attente" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Liste de lecture" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/fr_CH.po000066400000000000000000000246671451274533600170620ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: French (Switzerland) \n" "Language: fr_CH\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/frp.po000066400000000000000000000246601451274533600166610ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Franco-Provençal \n" "Language: frp\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/fur.po000066400000000000000000000246501451274533600166650ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Friulian \n" "Language: fur\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ga.po000066400000000000000000000250241451274533600164540ustar00rootroot00000000000000# Irish translation for music-app # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2017-12-22 22:00+0000\n" "Last-Translator: Iarla Ȯ'Riada \n" "Language-Team: Irish \n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" "(n>6 && n<11) ? 3 : 4;\n" "X-Generator: Weblate 2.15\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Tá Go Maith" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 #, fuzzy msgid "Wait" msgstr "Fan" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cealaigh" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/gd.po000066400000000000000000000321631451274533600164610ustar00rootroot00000000000000# Gaelic; Scottish translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # Michael Bauer , 2015. msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2016-04-15 23:20+0000\n" "Last-Translator: Akerbeltz \n" "Language-Team: Akerbeltz\n" "Language: gd\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " "(n > 2 && n < 20) ? 2 : 3;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Ceòl" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Aplacaid ciùil airson Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" "music;songs;play;tracks;player;tunes;ceòl;ciùil;òran;òrain;cluich;cluiche;" "traca;tracaichean;cluicheadair;fonn;fuinn;port;puirt;audio;fuaim;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Ceart ma-thà" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Cha deach faidhle air ion-phortachadh a lorg" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Fuirich" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Sguir dheth" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "A' feitheamh air faidhle no dhà..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Thoir ainm ùr air an liosta-chluich" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Cuir a-steach ainm dhan liosta" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Atharraich" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Tha an liosta-chluich seo ann mu thràth" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Cuir a-steach ainm." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Liosta-chluiche ùr" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Cruthaich" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "A bheil thu airson an liosta a sguabadh às gu buan?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Chan urrainn dhut seo a neo-dhèanamh" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Thoir air falbh" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Sguir dhen taghadh" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Tagh na h-uile" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Cuir ris an liosta-chluiche" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Cuir ris a' chiutha" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Sguab às" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Falamhaich an ciutha" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Lorg ceòl" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Feumaidh slighe an fhaidhle tòiseachadh le" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Feumaidh slighe an fhaidhle a bhith 'na fhaidhle" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Dh'fhàillig le gluasad an fhaidhle" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "tracaichean a chluich thu an-diugh" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Cha deach traca sam bith a chluich an-diugh" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Cuir ris a' chiutha" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "'Ga luchdadh..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Cha deach nì a lorg" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Thoir gnogag gus an ceòl a chur air thuaiream" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Cha deach liosta-chluich a lorg" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Cuir aplacaid a' chiùil gu làn-fheum 's tu a' briogadh air %1 gus " "liostaichean-lcuich a chruthachadh airson fonn no tachartas sam bith." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Cluich na h-uile" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Cuir na h-uile sa chiutha" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Air thuaiream" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Fàilte gun aplacaid chiùil" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Gabh tlachd sa cheòl agad le aplacaid ceòl Ubuntu. Gabh turas beag an-dràsta " "a sheallas dhut beagan fiosrachaidh air no brùth \"Leum thairis air\" gus " "èisteachd ri rudeigin an-dràsta." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Ion-phortaich an ceòl agad" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Ceangail an t-uidheam agad ri coimpiutair sam bith agus cha leig thu leas " "ach faidhlichean a shlaodadh dhan phasgan chiùil no ceangail meadhan so-" "giùlain air a bheil ceòl ris." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Luchdaich a-nuas ceòl ùr" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Ion-phortaich ceòl a cheannaich thu air loidhne." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Tòisich" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Thoir leum thairis air" #: app/music-app.qml:183 msgid "Next" msgstr "Air adhart" #: app/music-app.qml:184 msgid "Next Track" msgstr "An ath-thraca" #: app/music-app.qml:190 msgid "Pause" msgstr "Cuir 'na stad" #: app/music-app.qml:190 msgid "Play" msgstr "Cluich" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Cuir a chluich 'na stad" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Lean no tòisich air a chluich" #: app/music-app.qml:197 msgid "Back" msgstr "Air ais" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Air ais gun duilleag mu dheireadh" #: app/music-app.qml:206 msgid "Previous" msgstr "Air ais" #: app/music-app.qml:207 msgid "Previous Track" msgstr "An traca roimhe" #: app/music-app.qml:212 msgid "Stop" msgstr "Cuir stad air" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Sguir dhen chluich" #: app/music-app.qml:325 msgid "Debug: " msgstr "Dì-bhugachadh: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "O chionn goirid" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Luchd-ciùil" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albaman" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Gnèithean" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Tracaichean" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Liostaichean-cluiche" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "'Ga chluich an-dràsta" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Tagh liosta-chluiche" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 traca" msgstr[1] "%1 thraca" msgstr[2] "%1 tracaichean" msgstr[3] "%1 traca" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Albam nach aithne dhuinn" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Air ais" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Neach-ciùil nach aithne dhuinn" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albam" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albam" msgstr[1] "%1 albam" msgstr[2] "%1 albaman" msgstr[3] "%1 albam" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Neach-ciùil" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Às-phortaich an traca" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Gnè" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Cha deach ceòl a lorg" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Sealladh slàn" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Ciutha" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Liosta-chluiche" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/gl.po000066400000000000000000000307161451274533600164730ustar00rootroot00000000000000# Galician translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2021-05-19 15:43+0000\n" "Last-Translator: Davidrebolomaga \n" "Language-Team: Galician \n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Música" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Aplicativo de música para Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "música;cancións;reproducir;pistas;reprodutor;tons;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Aceptar" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Non foi posíbel atopar o ficheiro importado" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Agarde" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancelar" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Agardando polo ficheiro(s)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Renomear a lista" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Introduza o nome da lista" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Cambiar" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "A lista xa existe" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Escriba un nome." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Lista nova" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Crear" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Eliminar a lista permanentemente?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Isto non se pode desfacer" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Eliminar" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancelar selección" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Seleccionar todo" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Engadir á lista" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Engadir á cola" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Eliminar" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Borrar a cola" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Buscar música" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "A ruta do ficheiro debe comezar con" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "A ruta do ficheiro debe ser un ficheiro" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Non se puido mover o ficheiro" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "pistas reproducidas hoxe" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Non se reproduciu ningunha pista hoxe" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Engadir á cola" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Cargando..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Non se atopou ningún elemento" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Toque para escoitar ao chou" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Non se atoparon listas" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Consiga máis do aplicativo Música tocando na icona %1 e comece a facer " "listas de reprodución para cada estado de ánimo e ocasión." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Reprod. todo" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Todas á cola" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Ao chou" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Benvido á Música" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Goce da súa música favorita co aplicativo Música. Pode ver como utilizalo ou " "premer en saltar para comezar a escoitar a música." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importar música" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Conecte o dispositivo a calquera computador e arrastre os ficheiros ao " "cartafol Música ou insira unha unidade extraíbel con música." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Descargar música nova" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importar directamente a música mercada en liña." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Empezar" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Saltar" #: app/music-app.qml:183 msgid "Next" msgstr "Seg." #: app/music-app.qml:184 msgid "Next Track" msgstr "Pista seguinte" #: app/music-app.qml:190 msgid "Pause" msgstr "Pausar" #: app/music-app.qml:190 msgid "Play" msgstr "Reproducir" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pausar reprodución" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continuar ou iniciar reprodución" #: app/music-app.qml:197 msgid "Back" msgstr "Atrás" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Volver á última páxina" #: app/music-app.qml:206 msgid "Previous" msgstr "Anterior" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Pista anterior" #: app/music-app.qml:212 msgid "Stop" msgstr "Parar" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Parar reprodución" #: app/music-app.qml:325 msgid "Debug: " msgstr "Depurar: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recentes" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistas" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Álbums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Xéneros" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Pistas" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Listas de reprodución" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "En reprodución" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Seleccionar lista" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 pista" msgstr[1] "%1 pistas" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Álbum descoñecido" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Anterior" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista descoñecido" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Álbum" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 álbum" msgstr[1] "%1 álbums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exportar pista" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Xénero" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Non foi posíbel atopar música" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vista completa" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Cola" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Lista de reprodución" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/gu.po000066400000000000000000000243771451274533600165120ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: gu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/he.po000066400000000000000000000325051451274533600164630ustar00rootroot00000000000000# Hebrew translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2021-10-04 00:37+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "מוזיקה" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "יישום מוזיקה לאובונטו" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "מוזיקה;שירים;נגינה;לנגן;השמעה;נגן;רצועות;מנגינות;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "אישור" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "הקובץ שיובא לא נמצא" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "המתנה" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "ביטול" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "בהמתנה לקבצים…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "שינוי שם רשימה" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "נא להקליד שם רשימת נגינה" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "שינוי" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "רשימת הנגינה כבר קיימת" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "נא להקליד שם." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "רשימת נגינה חדשה" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "יצירה" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "למחוק את רשימת הנגינה לצמיתות?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "לא ניתן לשחזר פעולה זאת" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "הסר" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "ביטול הבחירה" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "לבחור הכול" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "הוספה לרשימת הנגינה" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "הוספה לתור" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "מחיקה" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "פינוי התור" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "חיפוש מוזיקה" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "נתיב הקובץ חייב להתחיל ב־" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "נתיב הקובץ חייב להיות קובץ" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "העברת הקובץ נכשלה" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "רצועות שהתנגנו היום" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "לא נוגנו רצועות היום" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "הוספה לתור" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "בטעינה…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "לא נמצאו פריטים" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "יש לגעת כדי לערבב את המוזיקה" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "לא נמצאו רשימות השמעה" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "ניתן לקבל מוזיקה נוספת על ידי נגיעה בסמל %1 כדי להתחיל ליצור רשימות נגינה " "לכל מצב רוח או מאורע." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "לנגן את כולם" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "להוסיף הכול לתור" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "ערבוב" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "ברוך בואך לנגן המוזיקה" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "ניתן ליהנות מהמוזיקה המועדפת עליך עם יישומון המוזיקה של אובונטו. אפשר לערוך " "סיור קצר על מאיפה כדאי להתחיל או ללחוץ על דילוג כדי להתחיל להאזין כעת." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "ייבוא המוזיקה שלך" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "ניתן לחבר את ההתקן שלך לכל מחשב שהוא ולגרור קבצים לתיקיית המוזיקה בפשטות או " "להכניס אמצעי מדיה נתיקים עם מוזיקה." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "הורדת מוזיקה חדשה" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "יבוא של מוזיקה שרכשת בעת גלישה באינטרנט ישירות." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "התחלה" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "דלג" #: app/music-app.qml:183 msgid "Next" msgstr "הבא" #: app/music-app.qml:184 msgid "Next Track" msgstr "הרצועה הבאה" #: app/music-app.qml:190 msgid "Pause" msgstr "השהייה" #: app/music-app.qml:190 msgid "Play" msgstr "נגינה" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "עצירת ההשמעה" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "להמשיך או להתחיל בנגינה" #: app/music-app.qml:197 msgid "Back" msgstr "חזרה" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "חזרה לעמוד האחרון" #: app/music-app.qml:206 msgid "Previous" msgstr "הקודם" #: app/music-app.qml:207 msgid "Previous Track" msgstr "הרצועה הקודמת" #: app/music-app.qml:212 msgid "Stop" msgstr "עצירה" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "עצירת הניגון" #: app/music-app.qml:325 msgid "Debug: " msgstr "ניפוי שגיאות: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "לאחרונה" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "אמנים" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "אלבומים" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "סגנונות" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "רצועות" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "רשימות נגינה" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "מושמע כעת" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "בחירת רשימת נגינה" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "רצועה אחת" msgstr[1] "%1 רצועות" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "אלבום לא ידוע" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "הקודם" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "אמן לא ידוע" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "אלבום" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "אלבום %1" msgstr[1] "%1 אלבומים" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "אמן" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "ייצוא רצועה" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "סגנון" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "לא נמצאה מוזיקה" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "תצוגה מלאה" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "תור" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "רשימת נגינה" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/hi.po000066400000000000000000000352521451274533600164710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-06-28 02:28+0000\n" "Last-Translator: \"Rudra Harsh V.Singh\" \n" "Language-Team: Hindi \n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.18.1\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "संगीत" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "लोमिरी के लिए एक संगीत अनुप्रयोग" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "संगीत; गाने; नाटक; ट्रैक; वादक; धुनें;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ठीक" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "आयातित फ़ाइल नहीं मिली" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "रुको" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "रद्द करें" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "फाइलों का इंतजार है..।" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "प्लेलिस्ट का नाम बदलें" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "प्लेलिस्ट का नाम दर्ज करें" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "परिवर्तन" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "प्लेलिस्ट पहले से मौजूद है" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "कृपया एक नाम लिखें।" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "नई प्लेलिस्ट" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "बनाएं" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "क्या आप प्लेलिस्ट को हमेशा के लिए स्थायी रूप से हटाना चाहते हैं?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "इसे असंपादित नहीं किया जा सकता है" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "निकालना" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "चयन रद्द करें" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "सबका चयन करें" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Add to playlist" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "क़तार में जोड़ें" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "हटाएं" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "कतार साफ़ करें" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "संगीत खोजें" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "फ़ाइलपथ को %1 से प्रारंभ होना चाहिए" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "फ़ाइलपथ एक फ़ाइल होनी चाहिए" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "फ़ाइल कॉपी करने में विफल" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "ट्रैक जो आज चलाये गया" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "आज कोई ट्रैक नहीं बजाया गया" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "क़तार में जोड़ें" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "लोड हो रहा है..।" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "कोई आइटम नहीं मिला" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "संगीत मिश्रण करने के लिए टैप करें" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "कोई प्लेलिस्ट नहीं मिली" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "हर मूड और अवसर के लिए प्लेलिस्ट बनाना शुरू करने के लिए %1 आइकन टैप करके संगी" "त का अधिक लाभ उठाएं।" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "सभी खेलना" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "सभी को कतार में लगाएं" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "मिश्रण" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "संगीत में आपका स्वागत है" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "लोमिरी के संगीत ऐप के साथ अपने पसंदीदा संगीत का आनंद लें। शुरुआत कैसे करें, " "इस पर एक संक्षिप्त भ्रमण करें या अभी सुनना शुरू करने के लिए स्किप दबाएँ।" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "अपना संगीत आयात करें" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "अपने डिवाइस को किसी भी कंप्यूटर से कनेक्ट करें और बस फ़ाइलों को संगीत फ़ोल्" "डर में खींचें या संगीत के साथ हटाने योग्य मीडिया डालें।" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "नया संगीत डाउनलोड करें" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "ऑनलाइन ब्राउज़ करते समय खरीदा गया संगीत सीधे आयात करें।" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "शुरू करें" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "छोड़ें" #: app/music-app.qml:183 msgid "Next" msgstr "अगला" #: app/music-app.qml:184 msgid "Next Track" msgstr "अगला गाना" #: app/music-app.qml:190 msgid "Pause" msgstr "विराम" #: app/music-app.qml:190 msgid "Play" msgstr "शुरू" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "प्लेबैक रोकें" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "प्लेबैक जारी रखें या प्रारंभ करें" #: app/music-app.qml:197 msgid "Back" msgstr "पीछे" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "अंतिम पृष्ठ पर वापस जाएँ" #: app/music-app.qml:206 msgid "Previous" msgstr "पिछला" #: app/music-app.qml:207 msgid "Previous Track" msgstr "पिछला ट्रैक" #: app/music-app.qml:212 msgid "Stop" msgstr "रुकें" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "प्लेबैक बंद करो" #: app/music-app.qml:325 msgid "Debug: " msgstr "डिबग: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "हाल ही का" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "कलाकार" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "एलबम" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "शैलियां" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "ट्रैक" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "प्लेलिस्ट्स" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "अब बज रहा है" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "प्लेलिस्ट चुनें" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, fuzzy, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 ट्रैक" msgstr[1] "%1 ट्रैक्स" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "अज्ञात एल्बम" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "विभिन्न" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "अज्ञात कलाकार" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "एल्बम" #: app/ui/ArtistView.qml:104 #, fuzzy, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 अलबम" msgstr[1] "%1 अल्बम्स" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "कलाकार" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "ट्रैक निर्यात करें" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "शैली" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "कोई संगीत नहीं मिला" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "पूर्ण दृश्य" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "कतार" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "प्लेलिस्ट" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "सेटिंग्स" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "संगीत बजते समय स्क्रीन चालू रखें" lomiri-music-app-v3.0.3/po/hr.po000066400000000000000000000307031451274533600164760ustar00rootroot00000000000000# Croatian translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2018-02-18 21:53+0000\n" "Last-Translator: gogogogi \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.15\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Glazba" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Glazbena aplikacija za Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "U redu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Uvezena datoteka nije pronađena" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Čekaj" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Odustani" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Čekanje datoteke/a..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Preimenuj popis izvođenja" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Unesite ime popisa izvođenja" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Promijeni" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Popis izvođenja već postoji" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Molim upišite naziv." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Novi popis izvođenja" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Izradi" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Trajno izbrisati listu izvođenja?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Ova akcija se ne može poništiti" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Ukloni" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Prekini odabir" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Odaberi sve" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Dodajte u popis izvođenja" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Dodaj u red čekanja" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Obriši" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Očisti čekanje" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Pretraži glazbu" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Putanja datoteke mora počinjati sa" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Putanja datoteke mora biti datoteka" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Premještanje datoteke nije uspjelo" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "Danas odslušane pjesme" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Nema danas odslušanih pjesama" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Dodaj na red čekanja" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Učitavanje..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nema pronađenih stavki" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Dodirnite za miješanje glazbe" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Liste izvođenja nisu pronađene" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Slušaj sve" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Dodaj sve" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Izmješaj" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Dobrodošli u Glazbu" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Uživajte svoju omiljenu glazbu sa Ubuntu Glazba aplikacijom. Prođite kratki " "vodić kako bi započeli ili pritisnite preskoči da započnete slušanje odmah." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Uvezite svoju glazbu" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Spojite uređaj na bilo koje računalo i jednostavno povucite datoteke u mapu " "'Glazba' ili ubacite prijenosni medij sa glazbom." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Preuzmite novu glazbu" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Izravno uvezite glazbu koju kupite surfajući." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Početak" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Preskoči" #: app/music-app.qml:183 msgid "Next" msgstr "Sljedeće" #: app/music-app.qml:184 msgid "Next Track" msgstr "Sljedeća pjesma" #: app/music-app.qml:190 msgid "Pause" msgstr "Pauza" #: app/music-app.qml:190 msgid "Play" msgstr "Pokreni" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pauziraj izvođenje" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Nastavak ili početak izvođenja" #: app/music-app.qml:197 msgid "Back" msgstr "Natrag" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Natrag do zadnje stranice" #: app/music-app.qml:206 msgid "Previous" msgstr "Prethodna" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Prethodna pjesma" #: app/music-app.qml:212 msgid "Stop" msgstr "Zaustavi" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Zaustavi izvođenje" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nedavno" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Izvođači" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumi" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Žanrovi" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Pjesme" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Popisi izvođenja" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Trenutno se reproducira" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Odaberite popis izvođenja" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 pjesma" msgstr[1] "%1 pjesme" msgstr[2] "%1 pjesama" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Nepoznati album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Prethodna" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Nepoznati izvođač" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albuma" msgstr[2] "%1 albuma" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Izvođač" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Izvezi Zapis" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Žanr" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Glazba nije pronađena" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Puni prikaz" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Red čekanja" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Popis izvođenja" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/hu.po000066400000000000000000000307141451274533600165030ustar00rootroot00000000000000# Hungarian translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-04-21 19:52+0000\n" "Last-Translator: Lundrin \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.18-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Zene" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Zenelejátszó alkalmazás Lomirihez" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "zene;dalok;lejátszás;számok;lejátszó;hangok;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Az importált fájl nem található" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Várakozás" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Mégse" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Várakozás a fájlokra…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Lejátszólista átnevezése" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Név megadása" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Módosítás" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "A lejátszólista már létezik" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Adjon meg egy nevet." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Új lejátszólista" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Létrehozás" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Lejátszólista végleges törlése?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Nem vonható vissza" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Eltávolítás" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Kijelölés megszüntetése" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Összes kijelölése" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Lejátszólistához" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Lejátszási sorhoz" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Törlés" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Sor törlése" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Zene keresése" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Az elérési útvonalnak ezzel kell kezdődnie: %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Az elérési útvonalon fájlnak kell lennie" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Fájl másolása sikertelen" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "ma lejátszott szám" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Nincs ma lejátszott szám" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Lejátszási sorhoz" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Betöltés…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nincs találat" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Koppintson a zenelejátszáshoz" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nem található lejátszólista" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Hozzon ki többet az alkalmazásból. A %1 ikonnal készíthet új lejátszólistát " "bármilyen alkalomhoz, vagy akár az aktuális hangulataihoz is." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Lejátszás" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Sorhoz adás" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Keverés" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Üdvözöljük a zenelejátszóban" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Élvezze kedvenc zenéit a Lomiri zenelejátszó alkalmazásával. Kövesse végig a " "rövid bemutatót, vagy kattintson a kihagyásra és kezdjen bele a " "zenehallgatásba." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Zenék importálása" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Csatlakoztassa az eszközt bármilyen számítógéphez, majd másolja át a zenéket " "a felcsatolt meghajtó Zenék mappájába." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Új zenék letöltése" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" "A böngészés közben vásárolt zenéit közvetlenül importálhatja az alkalmazásba." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Indítás" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Kihagyás" #: app/music-app.qml:183 msgid "Next" msgstr "Köv." #: app/music-app.qml:184 msgid "Next Track" msgstr "Következő szám" #: app/music-app.qml:190 msgid "Pause" msgstr "Szünet" #: app/music-app.qml:190 msgid "Play" msgstr "Lejátszás" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Lejátszás szüneteltetése" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Folytatás vagy a lejátszás indítása" #: app/music-app.qml:197 msgid "Back" msgstr "Vissza" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Vissza az előző oldalra" #: app/music-app.qml:206 msgid "Previous" msgstr "Előző" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Előző szám" #: app/music-app.qml:212 msgid "Stop" msgstr "Leállítás" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Lejátszás leállítása" #: app/music-app.qml:325 msgid "Debug: " msgstr "Hibakeresés: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Legutóbbi" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Előadók" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumok" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Műfajok" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Számok" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Lejátszólisták" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Most játszott" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Lista kiválasztása" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 szám" msgstr[1] "%1 szám" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Ismeretlen album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Számos" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Ismeretlen előadó" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 album" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Előadó" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Szám exportálása" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Műfaj" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nem található zene" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Teljes nézet" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Lejátszási sor" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Lejátszólista" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Beállítások" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Kijelző maradjon feloldva amíg zenelejátszás megy" lomiri-music-app-v3.0.3/po/hy.po000066400000000000000000000243771451274533600165170ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: hy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/id.po000066400000000000000000000305111451274533600164560ustar00rootroot00000000000000# Indonesian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2018-05-09 07:15+0000\n" "Last-Translator: Dito Kurnia P \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 2.15\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musik" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Aplikasi musik untuk Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "musik;lagu;putar;trek;player;tunes;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OKE" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Berkas yang diimpor tak ketemu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Tunggu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Batal" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Menunggu berkas..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Ganti nama daftar putar" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Masukkan nama daftar putar" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Ubah" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Daftar putar sudah ada" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Silakan ketik nama." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Daftar putar baru" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Buat" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Hapus daftar putar secara permanen?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Ini tidak dapat dibatalkan" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Hapus" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Batalkan pilihan" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Pilih semua" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Tmbh ke dft putar" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Tambah ke antrian" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Hapus" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Bersihkan antrian" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Cari musik" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Lokasi berkas harus diawali" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Lokasi berkas harus berupa berkas" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Gagal memindahkan berkas" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "trek diputar hari ini" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "TIdak ada trek diputar hari ini" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Tambah ke Antrian" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Memuat..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Tidak ada item yang ditemukan" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Tap untuk mengacak musik" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Tidak ada daftar putar yang ditemukan" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Dapatkan lebih banyak Musik dengan men-tap ikon %1 untuk memulai membuat " "daftar putar untuk setiap suasana hati dan kejadian." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Putar semua" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Antrekan semua" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Acak" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Selamat Datang di Musik" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Nikmati musik favorit Anda dengan aplikasi Musik Ubuntu. Ikuti tur pendek " "tentang bagaimana memulai atau melewatinya untuk langsung mendengarkan musik." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Impor musik Anda" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Hubungkan perangkat Anda ke setiap komputer dan dengan gampang menyeret file " "ke folder Musik atau memasukkan perangkat yang dapat dilepas dengan musik." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Unduh musik baru" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Langsung mengimpor musik yang dibeli ketika mencari daring." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Mulai" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Lewati" #: app/music-app.qml:183 msgid "Next" msgstr "Selanjutnya" #: app/music-app.qml:184 msgid "Next Track" msgstr "Trek Selanjutnya" #: app/music-app.qml:190 msgid "Pause" msgstr "Jeda" #: app/music-app.qml:190 msgid "Play" msgstr "Putar" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Menjeda Pemutaran" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Melanjutkan atau menahan pemutaran" #: app/music-app.qml:197 msgid "Back" msgstr "Kembali" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Kembali ke halaman terakhir" #: app/music-app.qml:206 msgid "Previous" msgstr "Sebelumnya" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Trek Sebelumnya" #: app/music-app.qml:212 msgid "Stop" msgstr "Berhenti" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Menghentikan Pemutaran" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Baru-baru Ini" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artis" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Album" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genre" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Trek" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Daftar Putar" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Diputar" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Pilih daftar putar" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "Trek %1" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album Tak Dikenal" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Sebelumnya" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artis Tak Dikenal" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artis" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Ekspor Trek" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Tak ada musik" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Tampilan penuh" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Antrian" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Daftar Putar" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/io.po000066400000000000000000000246411451274533600165000ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Ido \n" "Language: io\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/is.po000066400000000000000000000254251451274533600165050ustar00rootroot00000000000000# Icelandic translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-10-08 05:04+0000\n" "Last-Translator: Stefán Örvar Sigmundsson \n" "Language-Team: Icelandic \n" "Language: is\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Tónlist" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Hætta við" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Breyta" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nýr spilunarlisti" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Búa til" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Fjarlægja" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Bæta við spilunarlista" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Eyða" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Hleður…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Spila allt" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "Næsta" #: app/music-app.qml:184 msgid "Next Track" msgstr "Næsta lag" #: app/music-app.qml:190 msgid "Pause" msgstr "Í bið" #: app/music-app.qml:190 msgid "Play" msgstr "Afspilun" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Gera hlé á afspilun" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "Til baka" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "Fyrra" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Fyrra lag" #: app/music-app.qml:212 msgid "Stop" msgstr "Stöðva" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "Aflúsa: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nýlegt" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Flytjendur" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Tegundir" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Spilunarlisti" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Veldu spilunarlista" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Óþekkt albúm" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Fyrra" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Óþekktur flytjandi" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albúm" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 diskur" msgstr[1] "%1 diskar" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Flytjandi" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/it.po000066400000000000000000000302221451274533600164750ustar00rootroot00000000000000# Italian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-04-02 03:46+0000\n" "Last-Translator: Sylke Vicious \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.17-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musica" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Un'applicazione per la musica di Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "musica;canzoni;play;tracce;player;brani;suonerie;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "File importato non trovato" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Attendi" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Annulla" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "In attesa dei file..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Rinomina playlist" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Inserire nome playlist" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Modifica" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Playlist già esistente" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Inserire un nome." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nuova playlist" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Crea" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Eliminare la playlist?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Non può essere annullato" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Rimuovi" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Annulla selezione" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Seleziona tutto" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Aggiungi alla playlist" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Aggiungi alla coda" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Elimina" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Pulisci coda" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Cerca musica" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Il percorso del file deve iniziare con %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Il percorso deve indicare un file" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Copia del file non riuscita" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "brani riprodotti oggi" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Nessun brano riprodotto oggi" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Metti in coda" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Caricamento..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nessun elemento trovato" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Toccare per mischiare la musica" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nessuna playlist trovata" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Premi l'icona %1 per creare playlist in base al tuo umore o per qualsiasi " "altra occasione." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Riproduci tutto" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Metti tutto in coda" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Mischia" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bevenuti in Musica" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Goditi la tua musica preferita con l'app Musica di Lomiri. Segui una piccola " "introduzione all'uso dell'app o premi Salta per ascoltare subito la tua " "musica." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importa musica" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Collega il tuo dispositivo a un computer e trascina i file nella cartella " "Musica o inserisci un dispositivo rimovibile con della musica." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Scarica nuova musica" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importa musica acquistata navigando online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Avvia" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Salta" #: app/music-app.qml:183 msgid "Next" msgstr "Avanti" #: app/music-app.qml:184 msgid "Next Track" msgstr "Brano successivo" #: app/music-app.qml:190 msgid "Pause" msgstr "Pausa" #: app/music-app.qml:190 msgid "Play" msgstr "Riproduci" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Sospendi riproduzione" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continua o avvia riproduzione" #: app/music-app.qml:197 msgid "Back" msgstr "Indietro" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Torna all'ultima pagina" #: app/music-app.qml:206 msgid "Previous" msgstr "Precedente" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Brano precedente" #: app/music-app.qml:212 msgid "Stop" msgstr "Ferma" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Interrompi riproduzione" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recenti" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artisti" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Album" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Generi" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Brani" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Playlist" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "In riproduzione" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Seleziona playlist" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 brano" msgstr[1] "%1 brani" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album sconosciuto" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Varie" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista sconosciuto" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 album" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Esporta brano" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genere" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Musica non trovata" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vista completa" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Coda" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Playlist" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Impostazioni" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Tieni lo schermo acceso mentre la musica viene riprodotta" lomiri-music-app-v3.0.3/po/ja.po000066400000000000000000000315101451274533600164540ustar00rootroot00000000000000# Japanese translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-03-06 07:37+0000\n" "Last-Translator: Asahi 95 \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.16.2-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "音楽" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Ubuntuのミュージックアプリ" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" "music;songs;play;tracks;player;tunes;ミュージック;音楽;楽曲;再生;トラック;プ" "レーヤー;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "インポートされたファイルはありません" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "待機" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "キャンセル" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "プレイリスト名を変更" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "プレイリス ト名を入力" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "変更" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "プレイリストは既に存在しています" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "名前を入力してください。" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "新しいプレイリスト" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "作成" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "プレイリストを完全に削除しますか?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "元に戻すことはできません" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "削除" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "選択を解除" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "すべて選択" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "プレイリストに追加" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "再生リストに追加" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "削除" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "キューを削除" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must be a file" msgid "Filepath must start with %1" msgstr "ファイルパスはファイルを指定してください" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "ファイルパスはファイルを指定してください" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "ファイルの移動に失敗" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "再生リストに追加する" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "読み込み中..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "見つかりませんでした" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "シャッフル再生" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "プレイリストが見つかりませんでした" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "気分や場所に合わせたプレイリストを作成するなら %1 アイコンをタップしてくださ" "い。" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "すべて再生" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "すべてキューへ" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Musicについて" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "UbuntuのMusicアプリでは、お気に入りの音楽を楽しめます。最初にちょっとした説明" "を行いますが、すぐに音楽を楽しみたい場合は「スキップ」を選択してください。" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "音楽を取り込む" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "デバイスをコンピューターに接続し、Musicフォルダーにファイルを移動するか、音楽" "の入ったリムーバブルメディアを接続してください。" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "新しい音楽をダウンロードする" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "視聴中のオンラインの曲を直接取り込みます。" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "開始" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "スキップ" #: app/music-app.qml:183 msgid "Next" msgstr "次へ" #: app/music-app.qml:184 msgid "Next Track" msgstr "次のトラック" #: app/music-app.qml:190 msgid "Pause" msgstr "一時停止" #: app/music-app.qml:190 msgid "Play" msgstr "再生" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "再生を一時停止" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "再生する" #: app/music-app.qml:197 msgid "Back" msgstr "戻る" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "最後のページに戻る" #: app/music-app.qml:206 msgid "Previous" msgstr "前へ" #: app/music-app.qml:207 msgid "Previous Track" msgstr "前のトラック" #: app/music-app.qml:212 msgid "Stop" msgstr "停止" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "再生を停止" #: app/music-app.qml:325 msgid "Debug: " msgstr "デバッグ: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "最近再生したファイル" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "アーティスト" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "アルバム" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "ジャンル" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "プレイリスト" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "プレイリストを選択" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "不明なアルバム" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "前へ" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "不明なアーティスト" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "アルバム" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 アルバム" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "アーティスト" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "ジャンル" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "曲が見つかりません" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "詳細" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "キュー" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "プレイリスト" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "設定" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/jbo.po000066400000000000000000000246411451274533600166430ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Lojban \n" "Language: jbo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ka.po000066400000000000000000000253351451274533600164650ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-04-13 05:14+0000\n" "Last-Translator: Temuri Doghonadze \n" "Language-Team: Georgian \n" "Language: ka\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.17-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "დიახ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "გაუქმება" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "ცვლილება" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "წაშლა" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "ყველას მონიშვნა" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "წაშლა" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "იტვირთება..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "გაშვება" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "გამოტოვება" #: app/music-app.qml:183 msgid "Next" msgstr "შემდეგი" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "უკან" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "შეჩერება" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Ბოლო" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "ალბომები" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "ალბომი" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "მორგება" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/kab.po000066400000000000000000000246451451274533600166320ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kabyle \n" "Language: kab\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/km.po000066400000000000000000000356351451274533600165050ustar00rootroot00000000000000# Khmer translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2022-03-17 08:09+0000\n" "Last-Translator: ប៉ុកណូ រ៉ូយ៉ាល់ \n" "Language-Team: Central Khmer \n" "Language: km\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "តន្ត្រី" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "កម្មវិធី​ចាក់​តន្ត្រី​សម្រាប់ Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "តន្ត្រី; បទ​ចម្រៀង; ចាក់; បទ; កម្មវិធី​ចាក់; សូរ​សំឡេង;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "យល់ព្រម" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "រក​មិន​ឃើញ​ឯកសារ​នាំចូល" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "រង់ចាំ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "បោះបង់" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "កំពុងរង់ចាំឯកសារ…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "ប្ដូរឈ្មោះបញ្ជីចាក់" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "បញ្ចូលឈ្មោះបញ្ជីចាក់" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "ផ្លាស់ប្ដូរ" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "បញ្ជី​ចាក់​មាន​រួចហើយ" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "សូម​វាយបញ្ចូល​ឈ្មោះ។" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "បញ្ជី​ចាក់​ថ្មី" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "បង្កើត" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "លុប​បញ្ជី​ចាក់​ជា​អចិន្ត្រៃយ៍មែនទេ?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "នេះមិនអាចឥតសម្រេចវិញទេ" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "ដកចេញ" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "បោះបង់ជម្រើស" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "ជ្រើសទាំងអស់" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "បន្ថែម​ទៅ​បញ្ជីចាក់" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "បន្ថែម​ទៅ​ជួរ" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "លុប" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "ជម្រះជួរ" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "ស្វែងរកតន្ត្រី" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "ផ្លូវឯកសារគួរតែចាប់ផ្តើមជាមួយ" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "ផ្លូវ​ឯកសារ​ត្រុវតែ​ជា​ឯកសារ" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "ការ​ផ្លាស់ទី​ឯកសារ​បាន​បរាជ័យ" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "បទដែលបានចាក់នៅថ្ងៃនេះ" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "គ្មានបទដែលបានចាក់នៅថ្ងៃនេះ" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "បន្ថែម​ទៅ​ជួរ" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "កំពុងផ្ទុក…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "រកធាតុមិនឃើញ" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "ប៉ះដើម្បីសាប់តន្ត្រី" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "រកបញ្ជីចាក់មិនឃើញ" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "ទទួលបានកាន់តែច្រើនពីតន្ត្រីដោយចុចលើអាយខន %1 ដើម្បីចាប់ផ្តើមបង្កើតបញ្ជីចាក់សម្រាប់គ្រប់បរិយាកាស " "និងពេលវេលា។" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "ចាក់​ទាំងអស់" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "ជួរទាំងអស់" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "សាប់" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "ស្វាគមន៍មកកាន់តន្ត្រី" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "រីករាយជាមួយតន្ត្រីដែលអ្នកចូលចិត្តជាមួយកម្មវិធីតន្ត្រីរបស់ Ubuntu ។ សូមចំណាយពេលបន្តិចអំពីរបៀបចាប់ផ្តើម " "ឬចុចរំលង ដើម្បីចាប់ផ្តើមស្តាប់ឥឡូវនេះ។" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "នាំចូលតន្ត្រីរបស់អ្នក" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "តភ្ជាប់ឧបករណ៍របស់អ្នកទៅគ្រប់កុំព្យូទ័រ ហើយអូសឯកសារទៅថតតន្ត្រី ឬ ស៊កមេឌៀចល័តជាមួយតន្ត្រី។" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "ទាញយកតន្ត្រីថ្មី" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "នាំចូលតន្ត្រីដោយផ្ទាល់ដែលបានទិញពេលកំពុងរុករកអនឡាញ។" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "ចាប់ផ្ដើម" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "រំលង" #: app/music-app.qml:183 msgid "Next" msgstr "បន្ទាប់" #: app/music-app.qml:184 msgid "Next Track" msgstr "បទ​បន្ទាប់" #: app/music-app.qml:190 msgid "Pause" msgstr "ផ្អាក" #: app/music-app.qml:190 msgid "Play" msgstr "ចាក់" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "ផ្អាក​ការ​ចាក់​ឡើងវិញ" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "បន្ត ឬ​ចាប់ផ្ដើម​បញ្ជីចាក់" #: app/music-app.qml:197 msgid "Back" msgstr "បកក្រោយ" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "ត្រឡប់​ទៅ​ទំព័រ​ចុងក្រោយ" #: app/music-app.qml:206 msgid "Previous" msgstr "មុន" #: app/music-app.qml:207 msgid "Previous Track" msgstr "បទ​មុន" #: app/music-app.qml:212 msgid "Stop" msgstr "ឈប់" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "បញ្ឈប់​បញ្ជីចាក់ឡើងវិញ" #: app/music-app.qml:325 msgid "Debug: " msgstr "កែ​កំហុស៖ " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "ថ្មីៗ" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "សិល្បករ" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "អាល់ប៊ុម" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "ចង្វាក់" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "បទ" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "បញ្ជី​ចាក់" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "ឥឡូវកំពុងចាក់" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "ជ្រើស​បញ្ជី​ចាក់" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "បទ %1" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "មិន​ស្គាល់​អាល់ប៊ុម" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "មុន" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "មិន​ស្គាល់​សិល្បករ​" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "អាល់ប៊ុម" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "អាល់ប៊ុម %1" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "សិល្បករ" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "នាំចេញបទ" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "ចង្វាក់" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "រក​មិន​ឃើញ​ឯកសារ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "ទិដ្ឋភាពពេញ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "ជួរ" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "បញ្ជី​ចាក់" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/kmr.po000066400000000000000000000246621451274533600166650ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kurdish (Northern) \n" "Language: kmr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/kn.po000066400000000000000000000262321451274533600164770ustar00rootroot00000000000000# Kannada translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2017-09-22 08:47+0000\n" "Last-Translator: ghostranger \n" "Language-Team: Kannada \n" "Language: kn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.15\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "ಸಂಗೀತ" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ಸರಿ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "ನಿರೀಕ್ಷಿಸಿ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "ರದ್ಧುಮಾಡು" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "ಪ್ಲೇಪಟ್ಟಿಯನ್ನು ಮರುಹೆಸರಿಸಿ" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "ಬದಲಿಸಿ" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "ದಯವಿಟ್ಟು ಹೆಸರನ್ನು ಟೈಪ್ ಮಾಡಿ." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "ಹೊಸ ಪ್ಲೇಪಟ್ಟಿ" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "ರಚಿಸು" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "ತೆಗೆದು ಹಾಕು" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "ಎಲ್ಲವನ್ನು ಆರಿಸು" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "ಅಳಿಸು" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "ಪ್ರಾರಂಭಿಸಿ" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "ಬಿಟ್ಟಿಬಿಟ್ಟು ಮುಂದುವರಿಸು" #: app/music-app.qml:183 msgid "Next" msgstr "ಮುಂದಿನ" #: app/music-app.qml:184 msgid "Next Track" msgstr "ಮುಂದಿನ ಹಾಡು" #: app/music-app.qml:190 msgid "Pause" msgstr "ವಿರಾಮ" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "ಹಿಂದಕ್ಕೆ" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "ಹಿಂದಿನ" #: app/music-app.qml:207 msgid "Previous Track" msgstr "ಹಿಂದಿನ ಹಾಡು" #: app/music-app.qml:212 msgid "Stop" msgstr "ನಿಲ್ಲಿಸು" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "ಗಾಯಕರು" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "ಸಂಪುಟಗಳು" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "ಹಿಂದಿನ" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ko.po000066400000000000000000000270661451274533600165060ustar00rootroot00000000000000# Korean translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-07-30 23:33+0000\n" "Last-Translator: Young Kim \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "음악" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "우분투를 위한 음악 애플리케이션" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "음악;노래;재생;트랙;플레이어;음;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "확인" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "가져온 파일을 찾을 수 없습니다" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "대기" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "취소" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "재생 목록 이름 바꾸기" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "재생 목록 이름 입력" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "바꾸기" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "연주 목록이 이미 존재합니다" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "이름을 입력해주십시오." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "새 재생 목록" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "추가" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "제거" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "선택 해제" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "모두 선택" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "재생 목록에 추가" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "재생 대기열에 추가" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "삭제" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "음악 검색" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must be a file" msgid "Filepath must start with %1" msgstr "파일 경로는 파일을 지칭해야 합니다" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "파일 경로는 파일을 지칭해야 합니다" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "파일 이동을 실패하였습니다" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "오늘 재생한 곡" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "대기열에 추가" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "불러오는 중..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "모두 재생하기" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "건너뛰기" #: app/music-app.qml:183 msgid "Next" msgstr "다음" #: app/music-app.qml:184 msgid "Next Track" msgstr "다음 트랙" #: app/music-app.qml:190 msgid "Pause" msgstr "일시 중지" #: app/music-app.qml:190 msgid "Play" msgstr "재생" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "일시 정지" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "재생을 계속하거나 시작합니다." #: app/music-app.qml:197 msgid "Back" msgstr "뒤로" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "마지막 페이지로 돌아가기" #: app/music-app.qml:206 msgid "Previous" msgstr "이전" #: app/music-app.qml:207 msgid "Previous Track" msgstr "이전 트랙" #: app/music-app.qml:212 msgid "Stop" msgstr "중지" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "재생 중지" #: app/music-app.qml:325 msgid "Debug: " msgstr "디버그: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "최근" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "음악가" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "앨범" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "장르" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "재생목록" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "재생목록 선택" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "알 수 없는 앨범" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "이전" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "알 수 없는 음악가" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "앨범" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 앨범" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "음악가" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "장르" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "음악을 찾을 수 없습니다" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "연주 목록" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/lb.po000066400000000000000000000246531451274533600164710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Luxembourgish \n" "Language: lb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ln.po000066400000000000000000000246441451274533600165050ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Lingala \n" "Language: ln\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/lo.po000066400000000000000000000251241451274533600165000ustar00rootroot00000000000000# Lao translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Lao \n" "Language: lo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ຕົກລົງ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "ລໍຖ້າ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "ລໍຖ້າເເຟ້ມ...." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "ປ່ຽນ" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "ສ້າງຂື້ນ" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "ລຶບ" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/lomiri-music-app.pot000066400000000000000000000244451451274533600214460ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/lt.po000066400000000000000000000271231451274533600165060ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-01-19 19:39+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > " "19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? " "1 : 2);\n" "X-Generator: Weblate 3.8\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Muzika" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" "muzika;dainos;giesmės;daina;giesmė;grotuvas;leistuvė;melodija;melodijos;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Gerai" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Importuotas failas nerastas" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Atsisakyti" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Laukiama failo(-ų)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Pervadinti grojaraštį" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Įveskite grojaraščio pavadinimą" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Keisti" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Grojaraštis jau yra" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Įrašykite pavadinimą." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Naujas grojaraštis" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Sukurti" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Ištrinti grojaraštį visiems laikams?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Šalinti" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Žymėti viską" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Pridėti į grojaraštį" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Pridėti į eilę" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Ištrinti" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Išvalyti eilę" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Ieškoti muzikos" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Nepavyko perkelti failo" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Pridėti į eilę" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Įkeliama..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nerasta jokių elementų" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Bakstelėkite, norėdami maišyti muziką" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nerasta jokių grojaraščių" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Maišyti" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Sveiki atvykę į Muziką" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 #, fuzzy msgid "Start" msgstr "Pradėti" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Praleisti" #: app/music-app.qml:183 msgid "Next" msgstr "Kitas" #: app/music-app.qml:184 msgid "Next Track" msgstr "Kitas takelis" #: app/music-app.qml:190 msgid "Pause" msgstr "Pristabdyti" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pristabdyti atkūrimą" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Tęsti ar pradėti atkūrimą" #: app/music-app.qml:197 msgid "Back" msgstr "Atgal" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Grįžti į paskutinį puslapį" #: app/music-app.qml:206 msgid "Previous" msgstr "Ankstesnis" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Ankstesnis takelis" #: app/music-app.qml:212 msgid "Stop" msgstr "Stabdyti" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Stabdyti atkūrimą" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Paskiausi" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Atlikėjai" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumai" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Žanrai" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Takeliai" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Grojaraščiai" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Dabar atkuriama" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 takelis" msgstr[1] "%1 takeliai" msgstr[2] "%1 takelių" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Nežinomas albumas" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Ankstesnis" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Nežinomas atlikėjas" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albumas" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albumas" msgstr[1] "%1 albumai" msgstr[2] "%1 albumų" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Atlikėjas" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Eksportuoti takelį" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Žanras" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nerasta jokios muzikos" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Grojaraštis" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/lv.po000066400000000000000000000306471451274533600165150ustar00rootroot00000000000000# Latvian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-11-21 19:04+0000\n" "Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian \n" "Language: lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Mūzika" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Mūzikas lietotne Ubuntu videi" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "mūzika;dziesmas;atskaņot;celiņi;atskaņotājs;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Labi" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Nav atrasta importētā datne" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Gaidīt" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Atcelt" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Gaida datni(-es)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Pārdēvēt repertuāru" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Ievadiet repertuāra nosaukumu" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Mainīt" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Repertuārs jau eksistē" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Lūdzu, ievadiet nosaukumu." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Jauns repertuārs" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Izveidot" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Pavisam izdzēst repertuāru?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "To nevar atsaukt" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Izdzēst" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Atcelt izvēli" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Izvēlēties visu" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Pievienot repertuāram" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Pievienot sarakstam" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Dzēst" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Attīrīt rindu" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Meklēt mūziku" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Datņu ceļam jāsākas ar" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Datņu ceļam ir jābūt datnei" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Neizdevās pārvietot datni" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Pievienot rindai" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Ielādē..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nekas nav atrasts" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Uzsitiet, lai samaisītu mūziku" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nav atrastu repertuāru" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Iegūstiet no Mūzikas vairāk, uzsitot uz ikonas %1, lai sāktu veidot " "repertuārus katram noskaņojumam un gadījumam." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Atskaņot visu" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Ierindot visu" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Sajaukt" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Laipni lūdzam Mūzikas lietotnē" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Izbaudiet savu iecienīto mūziku ar Ubuntu Mūzikas lietotni. Apskatiet, kā " "sākt to lietot, vai spiediet “Izlaist” un sāciet uzreiz klausīties." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importēt savu mūziku" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Savienojiet savu ierīci ar jebkuru datoru un velciet datnes uz mūzikas mapi " "“Music”, vai ievietojiet noņemamu datu nesēju ar mūziku." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Lejupielādēt jaunu mūziku" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Tieši importējiet mūziku, ko nopirkāt pārlūkojot tiešsaistē." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Sākt" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Izlaist" #: app/music-app.qml:183 msgid "Next" msgstr "Nākamais" #: app/music-app.qml:184 msgid "Next Track" msgstr "Nākamais celiņš" #: app/music-app.qml:190 msgid "Pause" msgstr "Pauzēt" #: app/music-app.qml:190 msgid "Play" msgstr "Atskaņot" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pauzēt atskaņot" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Turpināt vai sākt atskaņošanu" #: app/music-app.qml:197 msgid "Back" msgstr "Atpakaļ" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Iet atpakaļ uz pēdējo lapu" #: app/music-app.qml:206 msgid "Previous" msgstr "Iepriekšējais" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Iepriekšējais celiņš" #: app/music-app.qml:212 msgid "Stop" msgstr "Apturēt" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Apturēt atskaņošanu" #: app/music-app.qml:325 msgid "Debug: " msgstr "Atkļūdošana: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nesenie" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Izpildītāji" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumi" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Žanri" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Repertuāri" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Šobrīd atskaņo" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Izvēlēties repertuāru" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Nezināms albums" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Iepriekšējais" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Nezināms izpildītājs" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albums" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albums" msgstr[1] "%1 albumi" msgstr[2] "%1 albumu" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Mākslinieks" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Žanrs" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nav atrasta mūzika" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Pilns skats" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Rinda" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Repertuārs" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/mg.po000066400000000000000000000246451451274533600165000ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Malagasy \n" "Language: mg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/mi.po000066400000000000000000000247541451274533600165030ustar00rootroot00000000000000# Maori translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Maori \n" "Language: mi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/mk.po000066400000000000000000000246521451274533600165020ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Macedonian \n" "Language: mk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ml.po000066400000000000000000000255501451274533600165010ustar00rootroot00000000000000# Malayalam translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Malayalam \n" "Language: ml\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "മാറ്റുക" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "പ്ലേലിസ്റ്റിലേക്ക് ചേര്‍ക്കുക" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "കലാകാരന്‍മാര്‍" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "ഗാനശേഖരങ്ങള്‍" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "പ്ലേലിസ്റ്റുകള്‍" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "പ്ലേലിസ്റ്റ് തെരെഞ്ഞടുക്കുക" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 ആല്‍ബം" msgstr[1] "%1 ആല്‍ബങ്ങള്‍" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/mr.po000066400000000000000000000250301451274533600165000ustar00rootroot00000000000000# Marathi translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Marathi \n" "Language: mr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "कलाकार" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "अल्बमस्" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ms.po000066400000000000000000000256421451274533600165120ustar00rootroot00000000000000# Malay translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-05-14 23:45+0000\n" "Last-Translator: Victor Thompson \n" "Language-Team: Malay \n" "Language: ms\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Muzik" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Aplikasi muzik untuk Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "muzik;lagu;main;trek;pemain;nada;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Batal" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Ubah" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Senarai main baharu" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Cipta" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Buang" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Tambah ke senarai main" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Tambah ke baris gilir" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Padam" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Memuatkan..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Main semua" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "Berikutnya" #: app/music-app.qml:184 msgid "Next Track" msgstr "Trek Berikutnya" #: app/music-app.qml:190 msgid "Pause" msgstr "Jeda" #: app/music-app.qml:190 msgid "Play" msgstr "Main" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Jeda Main Balik" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Terus atau mulakan main balik" #: app/music-app.qml:197 msgid "Back" msgstr "Undur" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Kembali ke halaman terakhir" #: app/music-app.qml:206 msgid "Previous" msgstr "Terdahulu" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Trek Terdahulu" #: app/music-app.qml:212 msgid "Stop" msgstr "Henti" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Henti Main Balik" #: app/music-app.qml:325 msgid "Debug: " msgstr "Nyahpepijat: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Baru-baru ini" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artis" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Album" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genre" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Senarai main" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Pilih senarai main" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album Tidak Diketahui" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Terdahulu" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artis Tidak Diketahui" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 album" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/my.po000066400000000000000000000267631451274533600165250ustar00rootroot00000000000000# Burmese translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Burmese \n" "Language: my\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "ဂီတ" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "ပြောင်းမည်" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "ဖွင့်မည့်စာရင်းအသစ်" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "ဖယ်ရှား" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "ဖွင့်မည့်စာရင်းထဲသို့ထည့်မည်" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "ဖွင့်နေသည်" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "အားလုံးဖွင့်မည်" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "နောက်သို့" #: app/music-app.qml:184 msgid "Next Track" msgstr "နောက်တစ်ပုဒ်" #: app/music-app.qml:190 msgid "Pause" msgstr "ခဏနား" #: app/music-app.qml:190 msgid "Play" msgstr "ဖွင့်" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "ဆက်မည် သို့ ပြန်ဖွင့်မည်" #: app/music-app.qml:197 msgid "Back" msgstr "နောက်သို့" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "နောက်ဆုံးစာမျက်နှာသို့ပြန်သွားမည်" #: app/music-app.qml:206 msgid "Previous" msgstr "ရှေ့သို့" #: app/music-app.qml:207 msgid "Previous Track" msgstr "ရှေ့တစ်ပုဒ်" #: app/music-app.qml:212 msgid "Stop" msgstr "ရပ်မည်" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "မကြာသေးခင်က" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "အနုပညာရှင်" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "အယ်လ်ဘမ်များ" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "ဖွင့်ရန်စာရင်းများ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "ဖွင့်မည့်စာရင်းရွေးပါ" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "အမည်မဲ့ အယ်ဘ်ဘမ်" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "ရှေ့သို့" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "အမည်မသိ အနုပညာရှင်" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "รูปภาพ" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 အယ်ဘမ်" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/nan.po000066400000000000000000000246611451274533600166470ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Chinese (Min Nan) \n" "Language: nan\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/nb.po000066400000000000000000000301541451274533600164640ustar00rootroot00000000000000# Norwegian Bokmal translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-19 22:50+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musikk" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Et musikkprogram for Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "musikk;sanger;spill av;spor;spiller;låter;" #: lomiri-music-app.desktop.in:9 #, fuzzy msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Fant ikke importert fil" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Vent" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Avbryt" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Venter på fil(er) …" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Gi spillelista nytt navn" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Skriv inn spillelistenavn" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Endre" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Spillelista finnes allerede" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Skriv inn et navn." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Ny spilleliste" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Opprett" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Vil du slette spillelista for godt?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Denne handlinga kan ikke angres" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Fjern" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Avbryt utvalg" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Velg alt" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Legg til i spilleliste" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Legg i kø" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Slett" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Tøm kø" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Søk etter musikk" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Filstien må starte med %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Filstien må peke på en fil" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Klarte ikke å flytte fil" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "låter spilt i dag" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Ingen låter spilt i dag" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Legg i kø" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Laster…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Fant ingen elementer" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Trykk for å stokke om musikk" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Fant ingen spillelister" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Trykk på %1-ikonet for å lage spillelister til bestemte humør og anledninger." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Spill alle" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Legg alle i kø" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Uordnet" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Velkommen til Musikk" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Nyt favorittmusikken din med Lomiris musikkprogram. Her er en kort " "gjennomgang av hvordan du bruker programmet. Du kan hoppe over dette hvis du " "vil." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importer musikk" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Koble enheten til en datamaskin og dra filer til musikkmappa, eller sett inn " "bærbare medier med musikk på." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Last ned ny musikk" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importer musikk som er kjøpt på nett direkte." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Start" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Hopp over" #: app/music-app.qml:183 msgid "Next" msgstr "Neste" #: app/music-app.qml:184 msgid "Next Track" msgstr "Neste låt" #: app/music-app.qml:190 msgid "Pause" msgstr "Sett på pause" #: app/music-app.qml:190 msgid "Play" msgstr "Spill av" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Stopp avspilling midlertidig" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Fortsett eller start avspilling" #: app/music-app.qml:197 msgid "Back" msgstr "Tilbake" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Gå tilbake til forrige side" #: app/music-app.qml:206 msgid "Previous" msgstr "Forrige" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Forrige låt" #: app/music-app.qml:212 msgid "Stop" msgstr "Stopp" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Stopp avspilling" #: app/music-app.qml:325 msgid "Debug: " msgstr "Feilsøkingsinformasjon: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nylig" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artister" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Album" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Sjangre" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Låter" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Spillelister" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Spilles nå" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Velg spilleliste" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 låt" msgstr[1] "%1 låter" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Ukjent album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Ymse" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Ukjent artist" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 album" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artist" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Eksporter låt" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Sjanger" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Fant ingen musikk" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Full visning" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Kø" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Spilleliste" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Innstillinger" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Behold skjermen påslått når musikk spilles" lomiri-music-app-v3.0.3/po/nl.po000066400000000000000000000304511451274533600164760ustar00rootroot00000000000000# Dutch translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-02-23 00:29+0000\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.16-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Muziek" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Een muziekapp voor Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "muziek;nummers;afspelen;liedjes;speler;deuntjes;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Oké" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Geïmporteerd bestand niet aangetroffen" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Wacht" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Annuleren" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Wachten op bestand(en)…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Afspeellijstnaam wijzigen" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Geef de afspeellijst een naam" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Wijzigen" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Afspeellijst bestaat al" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Voer een naam in." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nieuwe afspeellijst" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Aanmaken" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Wil je de afspeellijst definitief verwijderen?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Deze actie is onomkeerbaar" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Verwijderen" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Niets selecteren" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Alles selecteren" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Toev. aan afspeellijst" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Toevoegen aan wachtrij" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Verwijderen" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Wachtrij wissen" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Muziek doorzoeken" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "De bestandslocatie moet beginnen met %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Het doel moet een bestand zijn" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Kan bestand niet kopiëren" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "nummers beluisterd vandaag" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Je hebt vandaag geen nummers beluisterd" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Toevoegen aan wachtrij" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Bezig met laden…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Geen items gevonden" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Druk om willekeurige muziek te beluisteren" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Geen afspeellijsten gevonden" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Druk op het %1-pictogram om afspeellijsten te maken voor een bepaalde " "stemming of gelegenheid." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Alles afspelen" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Alles in wachtrij" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Willekeurig" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Welkom bij Muziek" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Geniet van je favoriete muziek met Lomiru's muziekapp. Leer de app kennen " "door de korte rondleiding te volgen of druk op ‘Overslaan’ om de app zelf te " "ontdekken." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importeer je muziek" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Verbind je apparaat met een computer en sleep bestanden naar de muziekmap, " "of sluit externe opslag met daarop muziek aan." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Muziek downloaden" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importeer direct je online aangeschafte muziek." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Aanzetten" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Overslaan" #: app/music-app.qml:183 msgid "Next" msgstr "Volgende" #: app/music-app.qml:184 msgid "Next Track" msgstr "Volgend nummer" #: app/music-app.qml:190 msgid "Pause" msgstr "Onderbreken" #: app/music-app.qml:190 msgid "Play" msgstr "Afspelen" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Afspelen pauzeren" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Afspelen starten of hervatten" #: app/music-app.qml:197 msgid "Back" msgstr "Terug" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Ga terug naar vorige pagina" #: app/music-app.qml:206 msgid "Previous" msgstr "Vorige" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Vorig nummer" #: app/music-app.qml:212 msgid "Stop" msgstr "Afbreken" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Afspelen stoppen" #: app/music-app.qml:325 msgid "Debug: " msgstr "Foutopsporing: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Onlangs gebeld" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artiesten" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genres" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Nummers" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Afspeellijsten" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Je luistert naar" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Kies een afspeellijst" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 nummer" msgstr[1] "%1 nummers" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Onbekend album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Diverse" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Onbekende artiest" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artiest" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Nummer exporteren" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Er is geen muziek aangetroffen" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Volledige weergave" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Wachtrij" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Afspeellijst" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Instellingen" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Scherm niet uitschakelen tijdens afspelen" lomiri-music-app-v3.0.3/po/ny.po000066400000000000000000000246441451274533600165220ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Nyanja \n" "Language: ny\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/om.po000066400000000000000000000246431451274533600165060ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Oromo \n" "Language: om\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/pa.po000066400000000000000000000343611451274533600164710ustar00rootroot00000000000000# Punjabi translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-05-14 23:46+0000\n" "Last-Translator: Gursharnjit_Singh \n" "Language-Team: Punjabi \n" "Language: pa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "ਸੰਗੀਤ" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "ਉਬੰਤੂ ਲਈ ਇੱਕ ਸੰਗੀਤ ਐਪਲੀਕੇਸ਼ਨ" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "ਸੰਗੀਤ;ਗੀਤ;ਪਲੇ੍;ਗੀਤ;ਪਲੇਅਰ;ਧੁਨਾਂ" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ਠੀਕ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "ਆਮਦ ਹੋਈ ਫ਼ਾਈਲ ਨਹੀਂ ਮਿਲੀ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "ਉਡੀਕ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "ਰੱਦ" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "ਫ਼ਾਈਲ(ਾਂ) ਦੀ ਉਡੀਕ..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "ਪਲੇਸੂਚੀ ਨੂੰ ਮੁੜ-ਨਾਂ ਦਿਓ" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "ਪਲੇਸੂਚੀ ਦਾ ਨਾਂ ਦਾਖਲ ਕਰੋ" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "ਬਦਲੋ" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "ਗੀਤ ਸੂਚੀ ਪਹਿਲਾਂ ਹੀ ਮੌਜੁਦ" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "ਇੱਕ ਨਾਂ ਟਾਈਪ ਕਰੋ।" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "ਨਵੀਂ ਗੀਤ ਸੂਚੀ" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "ਬਣਾਓ" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "ਪਲੇਸੂਚੀ ਨੂੰ ਪੱਕੇ ਤੌਰ ਤੇ ਹਟਾਓ?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "ਇਹ ਵਾਪਸ ਨਹੀਂ ਹੋ ਸਕਦਾ" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "ਹਟਾਓ" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "ਚੋਣ ਮਿਟਾਓ" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "ਸਭ ਚੁਣੋ" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "ਗੀਤ ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "ਕਤਾਰ ਵਿੱਚ ਜੋੜੋ" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "ਹਟਾਓ" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "ਕਤਾਰ ਮਿਟਾਓ" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "ਖੋਜੋ ਸੰਗੀਤ" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "ਫ਼ਾਈਲਰਸਤਾ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਨਾਲ" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "ਫ਼ਾਈਲ ਰਸਤਾ ਇੱਕ ਫ਼ਾਈਲ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "ਫ਼ਾਈਲ ਖਿਸਕਾਉਣ ਵਿੱਚ ਫ਼ੇਲ੍ਹ ਹੋਇਆ" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "ਕਤਾਰ ਵਿੱਚ ਜੋੜੋ" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "ਕੋਈ ਚੀਜ਼ ਨਹੀਂ ਮਿਲੀ" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "ਸੰਗੀਤ ਸ਼ਫ਼ੱਲ ਲਈ ਛੂਹੋ" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "ਕੋਈ ਪਲੇਸੂਚੀ ਨਹੀਂ ਮਿਲੀ" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "ਸੰਗੀਤ ਤੋਂ ਜਿਆਦਾ ਹਰੇਕ ਮਿਜ਼ਾਜ ਅਤੇ ਮੌਕੇ ਲਈ ਪਲੇਸੂਚੀਆਂ ਬਣਾਉਣਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ %1 ਆਈਕਾਨ ਨੂੰ ਛੂਹੋ।" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "ਸਾਰੇ ਚਲਾਓ" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "ਸਾਰਿਆਂ ਦੀ ਕਤਾਰ ਬਣਾਓ" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "ਸ਼ਫ਼ੱਲ" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "ਸੰਗੀਤ ਵਿੱਚ ਸੁਆਗਤ" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "ਉਬੰਤੂ ਦੇ ਸੰਗੀਤ ਐਪ ਦੇ ਨਾਲ ਆਪਣੇ ਪਸੰਦੀਦਾ ਸੰਗੀਤ ਦਾ ਆਨੰਦ ਲਵੋ। ਸ਼ੁਰੂ ਕਿਵੇ ਕਰੀਏ ਲਈ ਇੱਕ ਛੋਟਾ ਦੌਰਾ ਕਰੋ " "ਜਾਂ ਹੁਣੇ ਸੁਣਨਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਸਕਿੱਪ ਨੂੰ ਦਬਾਓ।" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "ਸੰਗੀਤ ਦੀ ਆਮਦ ਕਰੋ" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "ਆਪਣੇ ਜੰਤਰ ਨੂੰ ਕਿਸੇ ਵੀ ਕੰਪਿਊਟਰ ਨਾਲ ਜੋੜੋ ਅਤੇ ਫ਼ਾਈਲਾਂ ਨੂੰ ਅਸਾਨੀ ਨਾਲ ਸੰਗੀਤ ਫ਼ੋਲਡਰ ਵਿੱਚ ਖਿੱਚੋ ਜਾਂ " "ਸੰਗੀਤ ਨਾਲ ਹਟਾਉਣਯੋਗ ਮੀਡੀਆ ਪਾਵੋ।" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "ਨਵਾਂ ਸੰਗੀਤ ਡਾਊਨਲੋਡ ਕਰੋ" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "ਆਨਲਾਈਨ ਬਰਾਊਜ਼ਿੰਗ ਕਰਦੇ ਸਮੇਂ ਖਰੀਦੇ ਸੰਗੀਤ ਦੀ ਸਿੱਧੇ ਤੌਰ ਤੇ ਆਮਦ ਕਰੋ।" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "ਸ਼ੁਰੂ" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "ਛੱਡੋ" #: app/music-app.qml:183 msgid "Next" msgstr "ਅਗਲਾ" #: app/music-app.qml:184 msgid "Next Track" msgstr "ਅਗਲਾ ਗੀਤ" #: app/music-app.qml:190 msgid "Pause" msgstr "ਵਿਰਾਮ" #: app/music-app.qml:190 msgid "Play" msgstr "ਚਲਾਓ" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "ਲਗਾਤਾਰ ਚੱਲਣ ਤੇ ਵਿਰਾਮ ਲਗਾਓ" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "ਲਗਾਤਾਰ ਚੱਲਣਾ ਜਾਰੀ ਰੱਖੋ ਯਾ ਸ਼ੁਰੂ ਕਰੋ" #: app/music-app.qml:197 msgid "Back" msgstr "ਪਿੱਛੇ" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "ਆਖਰੀ ਸ਼ਫੇ ਤੇੇ ਵਾਪਸ ਜਾਓ" #: app/music-app.qml:206 msgid "Previous" msgstr "ਪਿੱਛਲਾ" #: app/music-app.qml:207 msgid "Previous Track" msgstr "ਪਿੱਛਲਾ ਗੀਤ" #: app/music-app.qml:212 msgid "Stop" msgstr "ਰੁਕੋ" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "ਲਗਾਤਾਰ ਚੱਲਣਾ ਰੋਕੋ" #: app/music-app.qml:325 msgid "Debug: " msgstr "ਖਾਮੀ ਪਛਾਣਨਾ ਤੇ ਠੀਕ ਕਰਨਾ: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "ਤਾਜ਼ਾ" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "ਕਲਾਕਾਰ" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "ਐਲਬਮ" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "ਸ਼ੈਲੀ" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "ਗੀਤ ਸੂਚੀ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "ਹੁਣ ਚੱਲ ਰਿਹਾ ਹੈ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "ਗੀਤ ਸੂਚੀ ਚੁਣੋ" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "ਅਣਜਾਣ ਐਲਬਮ" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "ਪਿੱਛਲਾ" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "ਅਣਜਾਣ ਕਲਾਕਾਰ" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "ਐਲਬਮ" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 ਐਲਬਮ" msgstr[1] "%1 ਐਲਬਮ" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "ਕਲਾਕਾਰ" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "ਸ਼ੈਲੀ" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "ਸੰਗੀਤ ਨਹੀਂ ਮਿਲਿਆ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "ਕਤਾਰ" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "ਗੀਤ ਸੂਚੀ" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/pam.po000066400000000000000000000246501451274533600166460ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Pampanga \n" "Language: pam\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/pl.po000066400000000000000000000307431451274533600165040ustar00rootroot00000000000000# Polish translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-25 21:50+0000\n" "Last-Translator: gnu-ewm \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.16-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Muzyka" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Odtwarzacz muzyki dla Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "muzyka;piosenki;odtwórz;nagrania;odtwarzacz;dźwięki;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Nie znaleziono importowanego pliku" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Czekaj" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Anuluj" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Czekam na pliki..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Zmień nazwę listy odtwarzania" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Podaj nazwę listy odtwarzania" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Zmień" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Taka lista odtwarzania już istnieje" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Proszę podać nazwę." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nowa lista odtwarzania" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Stwórz" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Czy skasować tę listę odtwarzania?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Tej operacji nie można cofnąć" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Usuń" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Anuluj zaznaczenie" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Zaznacz wszystko" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Dodaj do listy odtwarzania" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Dodaj do kolejki" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Usuń" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Wyczyść kolejkę" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Szukaj muzyki" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Ścieżka do pliku musi zaczynać się od %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Ścieżka do pliku jest niepoprawna" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Nie udało się skopiować pliku" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "dzisiaj odtwarzane" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Niczego jeszcze dzisiaj nie odtwarzano" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Dodaj do kolejki" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Wczytywanie..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Niczego nie odnaleziono" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Kliknij, by przetasować muzykę" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nie znaleziono list odtwarzania" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "Kliknięcie ikony %1 tworzy listę odtwarzania na każdy humor i okazję." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Odtwórz wszystko" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Wszystko do kolejki" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Odtwarzaj losowo" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Witamy w programie Muzyka" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Ciesz się słuchaniem muzyki z aplikacją Lomiri Muzyka. Zapraszamy na krótką " "prezentację obsługi i możliwości programu. Jeśli nie chcesz jej teraz " "poświęcać czasu, kliknij „Pomiń” i zacznij słuchać natychmiast." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importuj muzykę" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Podłącz swoje urządzenie do dowolnego komputera i przenieś pliki do katalogu " "z muzyką lub podłącz wymienny nośnik z muzyką." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Pobierz nową muzykę" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Zaimportuj bezpośrednio muzykę kupioną online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Włącz" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Pomiń" #: app/music-app.qml:183 msgid "Next" msgstr "Dalej" #: app/music-app.qml:184 msgid "Next Track" msgstr "Następny utwór" #: app/music-app.qml:190 msgid "Pause" msgstr "Wstrzymaj" #: app/music-app.qml:190 msgid "Play" msgstr "Odtwarzanie" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Wstrzymaj odtwarzanie" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Kontynuuj lub rozpocznij odtwarzanie" #: app/music-app.qml:197 msgid "Back" msgstr "Wstecz" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Powrót do ostatniej strony" #: app/music-app.qml:206 msgid "Previous" msgstr "Poprzedni" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Poprzedni utwór" #: app/music-app.qml:212 msgid "Stop" msgstr "Stop" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Zatrzymaj odtwarzanie" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debuguj: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Ostatnie" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Wykonawcy" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumy" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Gatunki" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Utwory" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Listy odtwarzania" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Teraz odtwarzany" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Wybór listy odtwarzania" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 utwór" msgstr[1] "%1 utwory" msgstr[2] "%1 utworów" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Nieznany album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Różne" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Nieznany wykonawca" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albumy" msgstr[2] "%1 albumów" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Wykonawca" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Eksportuj utwór" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Gatunek" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nie znaleziono muzyki" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Pełny widok" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Kolejka" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Lista odtwarzania" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Ustawienia" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Utrzymywanie włączonego ekranu podczas odtwarzania muzyki" lomiri-music-app-v3.0.3/po/ps.po000066400000000000000000000247571451274533600165230ustar00rootroot00000000000000# Pashto translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Pashto \n" "Language: ps\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/pt.po000066400000000000000000000305051451274533600165100ustar00rootroot00000000000000# Portuguese translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-31 13:44+0000\n" "Last-Translator: Ivo Xavier \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.16-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Música" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Uma aplicação de música para Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "música;músicas;reproduzir;faixas;leitor;melodias;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Ficheiro importado não encontrado" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Aguarde" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancelar" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "À espera de ficheiro(s)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Mudar o nome da playlist" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Insira o nome da playlist" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Modificar" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Playlist já existe" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Por favor, introduza um nome." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nova playlist" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Criar" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Eliminar permanentemente a playlist?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Esta ação não pode ser anulada" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Remover" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancelar seleção" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Selecionar tudo" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Adicionar à playlist" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Adicionar à fila de reprodução" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Eliminar" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Limpar fila de reprodução" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Procurar música" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "O caminho deve começar com %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "O caminho deve ser um ficheiro" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Falha ao copiar ficheiro" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "músicas tocadas hoje" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Sem músicas tocadas hoje" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Adicionar à fila de reprodução" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "A carregar..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Sem itens encontrados" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Misturar a música" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Sem playlists" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Para cada estado de espírito e ocasião, crie uma playlist ao seu gosto. Para " "começar toque no ícone %1." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Tocar tudo" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Colocar tudo em fila" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Aleatório" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bem-vindo à Música" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Desfrute das suas músicas favoritas com a aplicação Música do Lomiri. Faça " "uma visita guiada sobre como dar os primeiros passos ou escolha saltar para " "começar já a ouvir." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importar a sua música" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Ligue o seu dispositivo a um computador e arraste as suas músicas para a " "pasta Música ou insira um suporte amovível." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Transferir nova música" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importe diretamente a música comprada enquanto navega online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Iniciar" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Saltar" #: app/music-app.qml:183 msgid "Next" msgstr "Próximo" #: app/music-app.qml:184 msgid "Next Track" msgstr "Próxima faixa" #: app/music-app.qml:190 msgid "Pause" msgstr "Pausar" #: app/music-app.qml:190 msgid "Play" msgstr "Tocar" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pausar reprodução" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continuar ou iniciar reprodução" #: app/music-app.qml:197 msgid "Back" msgstr "Voltar" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Retroceder para a última página" #: app/music-app.qml:206 msgid "Previous" msgstr "Anterior" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Faixa anterior" #: app/music-app.qml:212 msgid "Stop" msgstr "Parar" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Parar reprodução" #: app/music-app.qml:325 msgid "Debug: " msgstr "Depuração: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recentes" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistas" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Álbuns" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Géneros" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Músicas" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Lista de reprodução" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "A tocar" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Selecionar playlist" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 música" msgstr[1] "%1 músicas" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Álbum desconhecido" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Vários" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista desconhecido" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Álbum" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albúm" msgstr[1] "%1 albúns" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exportar música" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Género" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Sem músicas encontradas" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vista completa" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Fila de reprodução" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Playlist" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Definições" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Manter o ecrã ligado enquanto a música é tocada" lomiri-music-app-v3.0.3/po/pt_BR.po000066400000000000000000000311531451274533600170730ustar00rootroot00000000000000# Brazilian Portuguese translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2019-04-25 19:14+0000\n" "Last-Translator: Vinícius F \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.2.2\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Música" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Aplicativo de musica para o Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "música;músicas;tocar;faixas;player;tons;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "O arquivo importado não foi encontrado" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Aguardando" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Cancelar" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Aguardando pelo(s) arquivo(s)…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Renomear lista de reprodução" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Digite o nome da lista de reprodução" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Alterar" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Lista de reprodução já existe" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Por favor, informe um nome." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nova lista de reprodução" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Criar" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Excluir lista de reprodução permanentemente?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Isso não pode ser desfeito" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Remover" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Cancelar seleção" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Selecionar tudo" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Adicionar à lista de reprodução" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Adicionar à fila" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Excluir" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Limpar fila" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Pesquisar música" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "O caminho do arquivo deve começar com" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "O caminho deve ser de um arquivo" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Falhou ao mover arquivo" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "faixas tocadas hoje" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Não há faixas tocadas hoje" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Adicionar à fila de reprodução" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Carregando..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nenhum item encontrado" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Toque para embaralhar música" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nenhuma lista de reprodução encontrada" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Obtenha mais do aplicativo Música pressionando o ícone %1 para criar " "playlists para todos os gostos e ocasiões." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Tocar tudo" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Toda a fila" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Aleatória" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bem-vindo ao Music" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Aproveite suas músicas favoritas com o aplicativo Música do Ubuntu. Faça um " "breve tour em como começar ou pressione pular para começar a ouvir agora." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importar suas músicas" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Conecte seu dispositivo em qualquer computador e simplesmente arraste os " "arquivos para a pasta Music ou insira uma mídia removível com músicas." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Baixar novas músicas" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importar músicas compradas enquanto navega online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Iniciar" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Pular" #: app/music-app.qml:183 msgid "Next" msgstr "Próxima" #: app/music-app.qml:184 msgid "Next Track" msgstr "Próxima faixa" #: app/music-app.qml:190 msgid "Pause" msgstr "Pausar" #: app/music-app.qml:190 msgid "Play" msgstr "Tocar" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pausar Reprodução" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continuar ou iniciar reprodução" #: app/music-app.qml:197 msgid "Back" msgstr "Voltar" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Voltar para a última página" #: app/music-app.qml:206 msgid "Previous" msgstr "Anterior" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Faixa anterior" #: app/music-app.qml:212 msgid "Stop" msgstr "Parar" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Parar reprodução" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recente" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistas" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Álbuns" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Gêneros" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Faixas" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Listas de reprodução" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Reproduzindo agora" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Selecione uma lista de reprodução" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 Faixa" msgstr[1] "%1 Faixas" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Álbum desconhecido" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Anterior" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista desconhecido" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Álbum" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 álbum" msgstr[1] "%1 álbuns" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exportar faixa" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Gênero" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nenhuma música encontrada" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vista completa" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Fila" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Lista de reprodução" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ro.po000066400000000000000000000314261451274533600165100ustar00rootroot00000000000000# Romanian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-11-04 10:38+0000\n" "Last-Translator: Mihai \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Muzică" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "O aplicație de muzică pentru Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "muzică;melodie;redare;piste;player;cântece;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Ok" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Nu a fost găsit fișierul importat" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Așteptați" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Anulează" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Se așteaptă fișierul (fișierele)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Redenumește lista" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Introduceți numele listei" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Modifică" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Lista de redare există deja" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Introduceți un nume." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Listă de redare nouă" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Creează" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Ștergeți lista definitiv?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Acest lucru nu poate fi anulat" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Elimină" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Anulează selecția" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Selectează tot" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Adaugă la lista de redare" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Adaugă la selecție" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Șterge" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Golește coada" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Căutare muzică" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Calea către fișier trebuie să înceapă cu" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Traseul trebuie să arate către un fișier" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Eșec la mutarea fișierului" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "melodii ascultate azi" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Nu ai ascultat nici o melodie azi" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Adaugă în coada de redare" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Se încarcă..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Niciun element găsit" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Apasă pentru a amesteca muzica" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nu s-au găsit liste de redare" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Obțineți mai mult de la Music apăsând pictograma %1 pentru a începe să " "faceți liste de redare pentru orice stare de spirit și ocazie." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Redă tot" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Pune in coadă tot" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Amestecat" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bine ați venit la Music" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Bucurați-vă de muzica dumneavoastră favorită cu aplicația Ubuntu Music. " "Faceți un tur scurt despre cum să începeți sau apăsați butonul omiteți " "pentru a începe să ascultați acum." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importați muzica dumneavoastră" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Conectați dispozitivul dumneavoastră la orice calculator și trageți simplu " "fișierele în dosarul Music sau introduceți un mediu detașabil cu muzică." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Descărcați muzică nouă" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importați direct muzica cumpărată în timp ce navigați online." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Pornește" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Omite" #: app/music-app.qml:183 msgid "Next" msgstr "Următorul" #: app/music-app.qml:184 msgid "Next Track" msgstr "Melodia următoare" #: app/music-app.qml:190 msgid "Pause" msgstr "Pauză" #: app/music-app.qml:190 msgid "Play" msgstr "Redare" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pauză redare" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Continuă sau pornește redarea" #: app/music-app.qml:197 msgid "Back" msgstr "Înapoi" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Mergi înapoi la ultima pagină" #: app/music-app.qml:206 msgid "Previous" msgstr "Precedenta" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Piesa precedentă" #: app/music-app.qml:212 msgid "Stop" msgstr "Oprește" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Oprește redarea" #: app/music-app.qml:325 msgid "Debug: " msgstr "Depanare: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Recente" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artiști" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albume" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genuri" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Fișiere audio" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Liste de redare" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "În redare" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Selectați lista de redare" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 melodie" msgstr[1] "%1 melodii" msgstr[2] "%1 de melodii" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album necunoscut" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Precedenta" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artist necunoscut" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albume" msgstr[2] "%1 de albume" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artist" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exportă fișierul audio" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Gen" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nu a fost găsită muzică" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Vizualizare completă" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Coadă" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Listă de redare" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ru.po000066400000000000000000000342071451274533600165160ustar00rootroot00000000000000# Russian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-02-23 00:29+0000\n" "Last-Translator: Sergii Horichenko \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.16-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Музыка" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Музыкальное приложение Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "музыка;песни;воспроизведение;композиции;плеер;мелодии;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Импортированный файл не найден" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Подождите" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Отмена" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Ожидание файла(ов)..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Переименовать список воспроизведения" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Введите название списка воспроизведения" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Изменить" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Плей-лист уже существует" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Введите название." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Новый плейлист" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Создать" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Удалить список воспроизведения?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Данное действие не может быть отменено" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Удалить" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Отменить выбор" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Выбрать всё" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Добавить в плейлист" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Добавить в очередь" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Удалить" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Очистить очередь" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Поиск музыки" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Путь к файлу должен начинаться с %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Путь должен указывать на файл" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Не удалось скопировать файл" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "треки, которые были проиграны сегодня" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Нет треков, которые были проиграны сегодня" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Добавить в очередь" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Загрузка..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Элементы не найдены" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Коснитесь, чтобы перемешать музыку" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Списки воспроизведения не найдены" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Используйте Music по полной: коснитесь значка %1 и начните создавать списки " "произведения для любого настроения и случая." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Слушать все" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Добавить всё в очередь" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Перемешать" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Добро пожаловать в Музыку" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Наслаждайтесь любимой музыкой с музыкальным приложением Lomiri. Ознакомьтесь " "с основными возможностями приложения или нажмите Пропустить, чтобы сразу " "перейти к прослушиванию." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Импортируйте свою музыку" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Подключите своё устройство к любому компьютеру и просто перетащите файлы в " "папку Music или вставьте съёмный носитель с музыкой." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Загрузить новую музыку" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Загружайте только что купленные композиции прямо из сети." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Начать" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Пропустить" #: app/music-app.qml:183 msgid "Next" msgstr "Далее" #: app/music-app.qml:184 msgid "Next Track" msgstr "Следующий трек" #: app/music-app.qml:190 msgid "Pause" msgstr "Пауза" #: app/music-app.qml:190 msgid "Play" msgstr "Воспроизвести" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Приостановить воспроизведение" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Продолжить или начать воспроизведение" #: app/music-app.qml:197 msgid "Back" msgstr "Назад" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Вернуться на последнюю страницу" #: app/music-app.qml:206 msgid "Previous" msgstr "Предыдущий" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Предыдущий трек" #: app/music-app.qml:212 msgid "Stop" msgstr "Прервать" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Остановить воспроизведение" #: app/music-app.qml:325 msgid "Debug: " msgstr "Отладка: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Недавние" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Исполнители" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Альбомы" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Жанры" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Трек" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Плейлисты" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Воспроизводится" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Выберите плейлист" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 трек" msgstr[1] "%1 трека" msgstr[2] "%1 треков" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Неизвестный альбом" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Разное" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Неизвестный исполнитель" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Альбом" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 альбом" msgstr[1] "%1 альбома" msgstr[2] "%1 альбомов" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Исполнитель" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Экспорт трека" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Жанр" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Музыкальные произведения отсутствуют" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Показать полностью" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Очередь" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Плей-лист" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Настройки" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Во время воспроизведения музыки держать экран включенным" lomiri-music-app-v3.0.3/po/sa.po000066400000000000000000000251701451274533600164720ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-07-07 11:52+0000\n" "Last-Translator: \"Rudra Harsh V.Singh\" \n" "Language-Team: Sanskrit \n" "Language: sa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n" "X-Generator: Weblate 5.0-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "संगीतं" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 #, fuzzy msgid "music;songs;play;tracks;player;tunes;" msgstr "संगीत;गीता;वादन;tracks;वादक;धुन;" #: lomiri-music-app.desktop.in:9 #, fuzzy msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "अस्तु" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "प्रतीक्षतु" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "निरसयतु" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sc.po000066400000000000000000000313251451274533600164730ustar00rootroot00000000000000# Sardinian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2021-11-21 15:09+0000\n" "Last-Translator: Adria \n" "Language-Team: Sardinian \n" "Language: sc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Mùsica" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Una aplicatzione de mùsica pro Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "mùsica;cantzones;reprodue;riprodutore;album;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "AB" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "No s'est agatadu su file importadu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Iseta" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Annulla" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Isetende is archìvios..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Muda su nòmine de sa lista de riprodutzione" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Inserta·nche su nòmine de sa lista de riprodutzione" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Muda" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Custa lista de riprodutzione esistet giai" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Inserta·nche unu nòmine." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Playlist noa" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Crea" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Boles cantzellare custa lista de riprodutzione de manera definitiva?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Custa atzione non la podes annullare" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Boga" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Annulla sa seletzione" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Seletziona totus" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Agiunghe a sa lista de riprodutzione" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Agiunghe a s'elencu" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Cantzella" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Lìmpia s'elencu" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Chirca mùsica" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Su percursu depet cumintzare cun" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Su percursu depet èssere un'archìviu" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Impossìbile mòvere s'archìviu" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "cantzones reprodùidas oe" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Nissuna cantzone reprodùida oe" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Imbia a s'elencu" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Carrighende..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nissunu cuntenutu agatadu" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Toca pro reprodùere in modalidade casuale" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nissuna lista de riprodutzione agatada" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Preme s'icona %1 pro creare lista de riprodutzione segundu s'umore tuo o pro " "cale si siat àtera ocasione." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Reprodue totu" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Imbia totu a s'elencu" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Casuale" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Bene bènnidu a Mùsica" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Gosa de sa mùsica preferida tua cun s'aplicatzione Mùsica de Ubuntu. Sighi " "s'introdutzione a s'impreu de s'aplicatzione o preme Brinca pro iscurtare " "immoe sa mùsica tua." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importa mùsica" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Connete su dispositivu tuo a un'elaboradore de iscrivania e traga is " "archìvios in sa cartella Mùsica o inserta·nche unu dispositivu rimovìbile " "cun mùsica." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Iscàrriga àtera mùsica" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importa in automàticu sa mùsica chi compras in lìnia." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Cumintza" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Brinca" #: app/music-app.qml:183 msgid "Next" msgstr "Sighi" #: app/music-app.qml:184 msgid "Next Track" msgstr "Cantzone imbeniente" #: app/music-app.qml:190 msgid "Pause" msgstr "Pàusa" #: app/music-app.qml:190 msgid "Play" msgstr "Reprodue" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pone sa riprodutzione in pàusa" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Sighi o cumintza sa riprodutzione" #: app/music-app.qml:197 msgid "Back" msgstr "In segus" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Bae a s'ùrtima pàgina" #: app/music-app.qml:206 msgid "Previous" msgstr "Pretzedente" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Cantzone pretzedente" #: app/music-app.qml:212 msgid "Stop" msgstr "Firma" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Firma sa riprodutzione" #: app/music-app.qml:325 msgid "Debug: " msgstr "Curretzione de faddinas: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Reghentes" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistas" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albums" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Istiles" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Cantzones" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Playlist" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "S'est reproduende" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Seletziona lista de riprodutzione" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 cantzone" msgstr[1] "%1 cantzones" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album disconnotu" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Pretzedente" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artista disconnotu" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 albums" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artista" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Esporta petzu" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Istile" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nissuna cantzone agatada" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Visualizatzione intrea" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Elencu" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Playlist" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sco.po000066400000000000000000000246451451274533600166610ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Scots \n" "Language: sco\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sd.po000066400000000000000000000246441451274533600165020ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Sindhi \n" "Language: sd\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sdh.po000066400000000000000000000246621451274533600166520ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Kurdish (Southern) \n" "Language: sdh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/shn.po000066400000000000000000000247551451274533600166670ustar00rootroot00000000000000# Shan translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Shan \n" "Language: shn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/si.po000066400000000000000000000250421451274533600165000ustar00rootroot00000000000000# Sinhalese translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Sinhala \n" "Language: si\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "අවලංගු" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "සියල්ල තෝරන්න" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "ආපසු" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "ඇල්බම" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sk.po000066400000000000000000000307601451274533600165050ustar00rootroot00000000000000# Slovak translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-02-17 06:21+0000\n" "Last-Translator: dano6 \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 3.8\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Hudba" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Hudobná aplikácia pre Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "hudba;skladby;hraj;stopy;prehrávač;melódia;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Importovaný súbor sa nenašiel" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Čakať" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Zrušiť" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Čaká sa na súbor/y..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Premenovať zoznam" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Zadaj meno playlistu" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Zmeniť" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Zoznam už existuje" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Prosím zadajte názov." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nový zoznam" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Vytvoriť" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Odstrániť zoznam natrvalo?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Toto sa nedá vrátiť" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Odstrániť" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Zrušiť výber" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Vybrať všetko" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Pridať do zoznamu" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Pridať do poradia" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Vymazať" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Vyčistiť poradie" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Hľadať hudbu" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Cesta musí začínať" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Cesta musí viesť k súboru" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Nepodarilo sa presunúť súbor" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "skladby hrané dnes" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Dnes žiadne hrané skladby" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Pridať do poradia" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Načítavam..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nenájdené žiadne položky" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Klepnutím hudbu premiešate" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Žiadny zoznam sa nenašiel" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Viac z hudby získate klepnutím na ikonu %1 a začnite si robiť zoznamy pre " "každú náladu a príležitosť." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Prehrať všetko" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Zaradiť všetko" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Premiešať" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Vitajte v Hudbe" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Vychutnajte si vaše obľúbené skladby v aplikácii Hudba od Ubuntu. Zobrazte " "si krátku prehliadku o tom, ako začať alebo stlačte Preskočiť a začnite hneď " "počúvať." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Import vašej hudby" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Pripojte vaše zariadenie k počítaču a skopírujte súbory do priečinka Hudba " "alebo vložte vymeniteľné médium s hudbou." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Prevzatie novej hudby" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Skladby zakúpené online, hneď naimportovať." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Štart" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Preskočiť" #: app/music-app.qml:183 msgid "Next" msgstr "Ďalej" #: app/music-app.qml:184 msgid "Next Track" msgstr "Ďalšia skladba" #: app/music-app.qml:190 msgid "Pause" msgstr "Prerušiť" #: app/music-app.qml:190 msgid "Play" msgstr "Prehrať" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pozastaviť prehrávanie" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Pokračuj alebo spusti prehrávanie" #: app/music-app.qml:197 msgid "Back" msgstr "Späť" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Návrat na poslednú stranu" #: app/music-app.qml:206 msgid "Previous" msgstr "Späť" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Predchádzajúca skladba" #: app/music-app.qml:212 msgid "Stop" msgstr "Zastaviť" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Zastaviť prehrávanie" #: app/music-app.qml:325 msgid "Debug: " msgstr "Ladenie: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nedávne" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Umelci" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumy" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Žánre" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Skladby" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Zoznamy skladieb" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Práve hrá" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Vybrať zoznam" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 skladieb" msgstr[1] "%1 skladba" msgstr[2] "%1 skladby" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Neznámy album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Späť" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Neznámy umelec" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albumov" msgstr[1] "%1 album" msgstr[2] "%1 albumy" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Umelec" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exportovať skladbu" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Žáner" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Žiadna hudba sa nenašla" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Úplné zobrazenie" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Poradie" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Zoznam" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sl.po000066400000000000000000000307331451274533600165060ustar00rootroot00000000000000# Slovenian translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-02-18 17:21+0000\n" "Last-Translator: Riccardo Riccio \n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3;\n" "X-Generator: Weblate 3.8\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Glasba" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Glasbeni program za Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "glasba;skladbe;predvajaj;sledi;predvajalnik;melodije;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "V redu" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Uvožene datoteke ni mogoče najti" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Počakajte" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Prekliči" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Čakanje na datoteko(e) ..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Preimenuj seznam predvajanja" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Vnesite ime seznama predvajanja" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Spremeni" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Seznam predvajanja že obstaja" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Vnesite ime." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Nov seznam predvajanja" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Ustvari" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Trajni izbris seznama predvajanja?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Tega ni mogoče razveljaviti" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Odstrani" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Prekliči izbiro" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Izberi vse" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Dodaj na seznam predvajanja" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Dodaj v vrsto" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Izbriši" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Zbriši čakalno vrsto" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Iskanje glasbe" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Datotečna pot se mora začeti z" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Pot datoteke mora biti datoteka" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Premik datoteke ni uspel" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Dodaj v vrsto predvajanja" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Nalaganje …" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Ni najdenih predmetov" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Tapnite za premešanje glasbe" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Ni najdenih seznamov predvajanja" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Dobite več od Glasbe s tapom na ikono %1 za ustvarjanje seznamov predvajanja " "za vsako razpoloženje in priložnost." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Predvajaj vse" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Uvrsti vse" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Premešaj" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Dobrodošli v Glasbo" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Uživajte v glasbi z Ubuntujevim glasbenim programom. Oglejte si, kako začeti " "ali pa preskočite za takojšnje poslušanje." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Uvoz glasbe" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Povežite vašo napravo z računalnikom ter preprosto povlecite datoteke v mapo " "Glasba ali vstavite medij z glasbo." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Prenos nove glasbe" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Neposredno uvozi glasbo, kupljeno med brskanjem po spletu." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Začni" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Preskoči" #: app/music-app.qml:183 msgid "Next" msgstr "Naslednja" #: app/music-app.qml:184 msgid "Next Track" msgstr "Naslednja skladba" #: app/music-app.qml:190 msgid "Pause" msgstr "Premor" #: app/music-app.qml:190 msgid "Play" msgstr "Predvajaj" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Premor predvajanja" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Nadaljuj ali začni predvajanje" #: app/music-app.qml:197 msgid "Back" msgstr "Nazaj" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Pojdi nazaj do zadnje strani" #: app/music-app.qml:206 msgid "Previous" msgstr "Predhodna" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Predhodna skladba" #: app/music-app.qml:212 msgid "Stop" msgstr "Zaustavi" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Zaustavi predvajanje" #: app/music-app.qml:325 msgid "Debug: " msgstr "Razhroščevanje: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nedavno" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Izvajalci" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumi" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Zvrsti" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Seznami predvajanja" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Trenutno se predvaja" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Izberite seznam predvajanja" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Neznan album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Predhodna" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Neznan izvajalec" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albumov" msgstr[1] "%1 album" msgstr[2] "%1 albuma" msgstr[3] "%1 albumi" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Izvajalec" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Zvrst" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Ni najdene glasbe" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Celotni pogled" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Čakalna vrsta" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Seznam predvajanja" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sq.po000066400000000000000000000311621451274533600165100ustar00rootroot00000000000000# Albanian translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-12-18 12:26+0000\n" "Last-Translator: Enkli Ylli \n" "Language-Team: Albanian \n" "Language: sq\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Muzikë" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Një aplikacion për Ubuntu" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "Musik;Titujë;Albume;Lista dëgjimit;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Mediat e importuara nuk gjinden" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Prisni" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Anullo" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Duke pritur për Medi(a/en)…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Riemërto playlistën" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Shëno emrin për playlistë" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Ndrysho" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Playlista egziston" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Ju lutemi shruani një emer." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Playlistë e re" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Krijo" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Fshijë playlisten përgjithëmonë?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Kjo nuk mundë të rikthehët prapë" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Hiqe" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Anulo zgjedhjen" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Përzgjidh Gjithçka" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Fut tek lista dëgjuese" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Fut në pritje" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Fshijë" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Zbrazë pritjet" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Kërko Muzikën" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Shtegu i fajllit duhët të filloj më" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Shtegu i fajllit duhet të jetë një fajll" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Zhvëndosja e fajllit dështojë" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "Titujtë e luajturë sotë" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Sotë nuk është luajturë asnjë Titullë" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Fut tek pritja" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Duke ngarkuar..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Nuk u gjind asnjë Element" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Prekë për të filluarë luajtjën e rastit" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Nuk gjindet asnjë listë dëgjimi" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Merrni më shumë nga ky aplikacion duke trokitur »%1« për të krijuar lista " "dëgjimi për çdo gjendje dhe rast." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Dëgjo të gjitha" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Fut të gjitha tek pritja" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Rastësishtë" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Mirësevini tek »Muzika«" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Gëzoni muzikën tuaj të preferuar me aplikacionin muzikor nga Ubuntu. Merrni " "një moment për të bërë një hyrje, ose shtypnu \"Kalo\" për të filluar të " "dëgjoni menjëherë." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importo Muziken tuaj" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Lidhni pajisjen tuaj me një kompjuter dhe thjesht tërhiqni dhe hiqni " "skedarët në dosjen e muzikës ose futni një disk të lëvizshëm me muzikë." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Shkarko Muzik të re" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Importo Muzikë direktë, të cilën keni blerë nga interneti." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Fillo" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Kaloje" #: app/music-app.qml:183 msgid "Next" msgstr "Vazhdo" #: app/music-app.qml:184 msgid "Next Track" msgstr "Kënga tjetër" #: app/music-app.qml:190 msgid "Pause" msgstr "Pauzë" #: app/music-app.qml:190 msgid "Play" msgstr "Dëgjo" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Ndërprejë dëgjimin" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Vazhdo ose fillo dëgjimini" #: app/music-app.qml:197 msgid "Back" msgstr "Mbrapa" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Shko tek faqja e fundit" #: app/music-app.qml:206 msgid "Previous" msgstr "I mëparshëm" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Titulli i mëparshëm" #: app/music-app.qml:212 msgid "Stop" msgstr "Ndal" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Ndalo dëgjimin" #: app/music-app.qml:325 msgid "Debug: " msgstr "Kërkim gabimi: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Kohët e fundit" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artistët" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albumët" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Zhanre" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Titujtë" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Lista e dëgjimit" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Tani po dëgjoni" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Zgjidhë listën e dëgjimit" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 Titull" msgstr[1] "%1 Titujë" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Album i panjohurë" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "I mëparshëm" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Artist i panjohurë" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 Album" msgstr[1] "%1 Albume" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artisti" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Eksporto titujë" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Zhanër" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Nuk u gjindë asnjë muzikë" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Pamje të plotë" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Në Pritje" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Lista e dëgjimit" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sr.po000066400000000000000000000333261451274533600165150ustar00rootroot00000000000000# Serbian translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2016-03-04 15:27+0000\n" "Last-Translator: Данило Шеган \n" "Language-Team: Serbian \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Музика" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Програм за музику у Убунтуу" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "музика;песме;пуштање;песме;извођење;мелодије;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "У реду" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Увезена датотека није нађена" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Сачекај" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Откажи" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Чекам датотеке..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Преименуј листу песама" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Унеси име листе песама" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Промени" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Списак песама већ постоји" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Унесите име." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Нови списак песама" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Направи" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Трајно обриши листу песама?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Ово не може бити опозвано" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Уклони" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Откажи избор" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Изабери све" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Додај у списак песама" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Додај у ред" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Обриши" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Очисти ред" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Претражи музику" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Путања мора почети са" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Путања мора бити до датотеке" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Неуспешно премештање датотеке" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "песама је пуштено данас" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Данас није пуштена ниједна песма" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Додај у заказано" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Учитавање..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Ни једна ставка није пронађена" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Додирните да промешате музику" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Нису пронађене листе песама" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Добијте више од музике кликом на %1 икону да направите листе песама за свако " "расположење и ситуацију." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Пусти све" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Додај све у ред" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Измешај" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Добродошли у Music" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Уживајте у омиљеној музици са Ubuntu Music апликацијом. Прођите кратку туру " "како да започнете или притисните прескочи да започнете са слушањем." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Увезите вашу музику" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Повежите ваш уређај на било који рачунар и просто превуците датотеке у Music " "фолдер или убаците изменљиви медиј са музиком." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Преузмите нову музику" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Увезите директно музику купњену док претражујете интернет." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Почни" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Прескочи" #: app/music-app.qml:183 msgid "Next" msgstr "Следећа" #: app/music-app.qml:184 msgid "Next Track" msgstr "Следећа песма" #: app/music-app.qml:190 msgid "Pause" msgstr "Паузирај" #: app/music-app.qml:190 msgid "Play" msgstr "Пусти" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Паузирај извођење" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Настави или почни извођење" #: app/music-app.qml:197 msgid "Back" msgstr "Назад" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Назад на последњу страну" #: app/music-app.qml:206 msgid "Previous" msgstr "Претходна" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Претходна песма" #: app/music-app.qml:212 msgid "Stop" msgstr "Заустави" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Заустави извођење" #: app/music-app.qml:325 msgid "Debug: " msgstr "Уклони бубе: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Скорашње" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Извођачи" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Албуми" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Жанрови" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Песме" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Списак песама" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Сада репродукује" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Одабери списак песама" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 песма" msgstr[1] "%1 песме" msgstr[2] "%1 песама" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Непознат албум" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Претходна" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Непознат извођач" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Албум" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 албум" msgstr[1] "%1 албума" msgstr[2] "%1 албума" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Извођач" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Извези песму" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Жанр" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Није нађена музика" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Пуни приказ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Ред" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Списак песама" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/st.po000066400000000000000000000246741451274533600165250ustar00rootroot00000000000000# Sotho, Southern translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-05-14 23:43+0000\n" "Last-Translator: Pitso Mofokeng \n" "Language-Team: Sotho, Southern \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Mmino" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "phomola" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "fetola" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "tlosa" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Dibini" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/sv.po000066400000000000000000000301131451274533600165100ustar00rootroot00000000000000# Swedish translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # clone , 2015. msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-09-07 04:54+0000\n" "Last-Translator: bittin1ddc447d824349b2 \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.0.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Musik" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "En musikapp för Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "musik;sånger;spela;spår;spelare;låtar" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "OK" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Importerad fil hittades inte" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Vänta" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Avbryt" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Väntar på fil(er)…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Byt namn på spellista" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Ange namn spellista" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Ändra" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Spellistan finns redan" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Fyll i ett namn." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Ny spellista" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Skapa" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Ta bort spellista permanent?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Detta kan inte ångras" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Ta bort" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Avbryt val" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Välj alla" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Lägg till i spellista" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Lägg till i kö" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Radera" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Rensa kö" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Sök musik" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Filsökväg måste starta med %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Sökvägen måste vara en fil" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Misslyckades att kopiera fil" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "låtar spelade idag" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Inga låtar spelade idag" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Lägg till i spelkön" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Läser in…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Inga objekt hittades" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Tryck för att slumpa musiken" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Hittade inga spellistor" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Få ut mer av Musik genom att trycka ikonen %1 för börja skapa spellistor för " "varje stämning och tillfälle." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Spela alla" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Köa alla" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Slumpvis" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Välkommen till Musik" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Njut av din favoritmusik med Lomiri's musikapp. Ta en guidad tur för att " "komma igång eller hoppa över för att börja lyssna direkt." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Importera din musik" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Anslut din enhet till en dator och dra filer till mappen Musik eller infoga " "borttagbar media med musik." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Hämta ny musik" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Direktimportera köpt musik under bläddring på nätet." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Starta" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Hoppa över" #: app/music-app.qml:183 msgid "Next" msgstr "Nästa" #: app/music-app.qml:184 msgid "Next Track" msgstr "Nästa spår" #: app/music-app.qml:190 msgid "Pause" msgstr "Pausa" #: app/music-app.qml:190 msgid "Play" msgstr "Spela" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Pausa uppspelning" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Fortsätt eller starta uppspelning" #: app/music-app.qml:197 msgid "Back" msgstr "Bakåt" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Gå tillbaka till senaste sidan" #: app/music-app.qml:206 msgid "Previous" msgstr "Föregående" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Föregående spår" #: app/music-app.qml:212 msgid "Stop" msgstr "Stoppa" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Stoppa uppspelning" #: app/music-app.qml:325 msgid "Debug: " msgstr "Avlusa: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Nyligen" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Artister" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Album" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Genrer" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Låtar" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Spellistor" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Spelar nu" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Välj spellista" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 låt" msgstr[1] "%1 låtar" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Okänt album" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Diverse" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Okänd artist" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Album" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 album" msgstr[1] "%1 album" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Artist" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Exportera låt" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Genre" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Ingen musik funnen" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Fullständig vy" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Kö" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Spellista" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Inställningar" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Behåll skärmen på medan musik spelas" lomiri-music-app-v3.0.3/po/ta.po000066400000000000000000000373671451274533600165060ustar00rootroot00000000000000# Tamil translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2021-01-05 23:26+0000\n" "Last-Translator: GK \n" "Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "இசை" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "உபென்டுவிற்கான இசை செயலி" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "இசை;பாடல்கள்;இயக்கம்;தடங்கள்;இயக்கி;தாளங்கள்;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "சரி" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "இறக்குமதி செய்த கோப்பினைக் காணவில்லை" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "காத்திரு" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "தவிர்க்க" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "கோப்பு(களு)க்காக காத்திருக்கிறேன்…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "பாடல் பட்டியலின் பெயரை மாற்றுக" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "பாடல் பட்டியலின் பெயர்" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "மாற்றுக" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "இப்பட்டியல் ஏற்கனவே உள்ளது" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "பெயரை உள்ளிடுக." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "புதிய இசைப்பட்டியல்" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "உருவாக்குக" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "பாடல்பட்டியலை நிரந்தரமாக நீக்கவா?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "இச்செயலைத் தவிர்க் இயலாது" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "நீக்குக" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "தேர்வினை நீக்குக" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "அனைத்தையும் தேர்ந்தெடு" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "பாடல்பட்டியலில் சேர்" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "வரிசையில் சேர்" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "நீக்குக" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "வரிசையை துடைக்க" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "இசையைத் தேடுக" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "கோப்பின் பாதை இவ்வாறு தொடங்கபடவெண்டும்" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "கோப்பின் பாதை கோப்பினை குறிக்க வேண்டும்" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "கோப்பினை நகர்த்துவது தோல்வியடைந்தது" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "இன்று பாடிய தடங்கள்" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "இன்று எந்த தடங்களும் பாடப்படவில்லை" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "வரிசையில் சேர்" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "ஏற்றுகிறது…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "எந்த உருப்படிகளையும் காணவில்லை" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "இசை வரிசையை கலக்க தட்டவும்" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "பாடல் பட்டியல்களைக் காணவில்லை" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "இந்த இசை செயலியின் பல சிறப்பம்சங்களைப் பெற %1 சின்னத்தை தட்டி, எல்லாவகை மனநிலைக்கும் " "தருணத்திற்குமான பாடல் பட்டியலை உருவாக்குக." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "முழுவதையும் இயக்கு" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "முழுவதையும் வரிசெய்" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "கலக்கு" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "இசை செயலிக்கு வரவேற்கிறோம்" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "உங்களுக்கு பிடித்த இசையை உபென்டுவின் இசை செயலியில் கேட்டு மகிழுங்கள். குறுகிய " "சுற்றுப்பயணத்தை செய்து தொடங்குக அல்லது தவிர்த்து இசையைக் கேட்க." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "உங்கள் இசையை ஏற்றுக" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "உங்கள் சாதனத்தை இணைத்து, இசைக் கோப்புறைக்கு இசையினை இழுக்க அல்லது இசையுடன் கூடிய " "நீக்கக்கூடிய ஊடகத்தை புகுத்துக." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "புதிய இசையை தரவிறக்குக" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "நிகழ்நிலையில் உலாவும்பொழுது வாங்கிய இசையை நேரடியாக ஏற்றுக." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "தொடங்குக" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "விட்டுத்தாவு" #: app/music-app.qml:183 msgid "Next" msgstr "அடுத்து" #: app/music-app.qml:184 msgid "Next Track" msgstr "அடுத்த பாடல்" #: app/music-app.qml:190 msgid "Pause" msgstr "இடைநிறுத்துக" #: app/music-app.qml:190 msgid "Play" msgstr "இயக்குக" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "இயக்கத்தை இடைநிறுத்துக" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "இயக்கத்தை தொடரவும் அல்லது தொடங்கவும்" #: app/music-app.qml:197 msgid "Back" msgstr "பின்செல்" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "கடைசி பக்கத்திற்குச் செல்" #: app/music-app.qml:206 msgid "Previous" msgstr "முந்தைய" #: app/music-app.qml:207 msgid "Previous Track" msgstr "முந்தையத் தடம்" #: app/music-app.qml:212 msgid "Stop" msgstr "நிறுத்துக" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "பின்னணியை நிறுத்துக" #: app/music-app.qml:325 msgid "Debug: " msgstr "பிழைத்திருத்துக: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "அண்மை" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "இசைக்கலைஞர்கள்" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "செருகேடுகள்" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "பாணிகள்" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "பாடல்கள்" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "பாடல் பட்டியல்கள்" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "இப்பொழுது இயக்கத்தில்" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "பாடல்பட்டியலை தேர்ந்தெடு" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 தடம்" msgstr[1] "%1 தடங்கள்" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "தெரியாத செருகேடு" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "முந்தைய" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "தெரியாத இசைக்கலைஞர்" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "செருகேடு" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 செருகேடு" msgstr[1] "%1 செருகேடுகள்" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "இசைக்கலைஞர்" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "பாடலை ஏற்றுமதிசெய்க" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "பாணி" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "எந்த இசையும் காணப்படவில்லை" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "முழுப்பார்வை" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "வரிசை" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "பாடல் பட்டியல்" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/te.po000066400000000000000000000253621451274533600165020ustar00rootroot00000000000000# Telugu translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Telugu \n" "Language: te\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "సంగీతం" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "మార్చు" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "కొత్త పాటలజాబితా" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "తొలగించు" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "ఇటీవలివి" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "గాయకులు" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "ఆల్బమ్లు" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "పాటలజాబితాలు" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 ఆల్బమ్" msgstr[1] "%1 ఆల్బమ్లు" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/tet.po000066400000000000000000000246451451274533600166710ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Tetum \n" "Language: tet\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/tg.po000066400000000000000000000246361451274533600165070ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Tajik \n" "Language: tg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/th.po000066400000000000000000000253671451274533600165120ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2021-10-10 20:05+0000\n" "Last-Translator: Wannaphong Phatthiyaphaibun \n" "Language-Team: Thai \n" "Language: th\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.11.3\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ตกลง" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "ไม่พบไฟล์นำเข้า" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "รอ" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "ยกเลิก" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "กำลังรอไฟล์..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "เปลี่ยนชื่อรายการ" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "บันทึกชื่อรายการเล่น" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "เปลี่ยน" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "สร้าง" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "ลบ" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "ยกเลิกการเลือก" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "เลือกทั้งหมด" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "ลบ" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "ถัดไป" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "ย้อนกลับ" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "การตั้งค่า" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/tk.po000066400000000000000000000246451451274533600165130ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-04 19:47+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Turkmen \n" "Language: tk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 #, fuzzy msgid "Cancel" msgstr "Cancel" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:47 #, fuzzy msgid "Select All" msgstr "Select All" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 #, fuzzy msgid "Delete" msgstr "Delete" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/tr.po000066400000000000000000000310201451274533600165030ustar00rootroot00000000000000# Turkish translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2017-11-26 18:03+0000\n" "Last-Translator: Arda Canbolat \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.15\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Müzik" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Ubuntu için müzik uygulaması" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "müzik;şarkılar;oynatma;parçalar;oynatıcı;radyo;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "Tamam" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "İçe aktarılan dosya bulunamadı" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Bekle" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "İptal" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Dosya(lar) bekleniyor..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Çalma listesini adlandır" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Çalma listesi adı gir" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Değiştir" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Çalma listesi zaten mevcut" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Lütfen bir isim girin" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Yeni çalma listesi" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Oluştur" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Çalma listesi kalıcı olarak silinsin mi?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Bu geri alınamaz" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Kaldır" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Seçimi iptal et" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Tümünü Seç" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Oynatma listesine ekle" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Çalma sırasına ekle" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Sil" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Kuyruğu temizle" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Müzik ara" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "Dosya yolu şu ile başlamalı" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Dosya yolu bir dosya olmalı" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "Dosyayı taşıma başarısız" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "bugün oynatılan parçalar" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Bugün parça oynatılmadı" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Kuyruğa Ekle" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Yükleniyor..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Hiçbir öge bulunamadı" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Müziği karıştırmak için dokunun" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Çalma listesi bulunamadı" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Çalma listelerini her ruh haline göre yapmak için %1 simgesine basarak " "Müzik'ten daha fazlasını alabilirsiniz." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Tümünü oynat" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Tümünü beklet" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Karıştır" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Müziğe Hoş Geldiniz" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Ubuntu'nın Müzik Uygulaması ile favori müziğinizin tadını çıkarın. Nasıl " "başlayacağınızı öğrenmek için bir tura katılın veya atlayıp hemen dinlemeye " "başlayın." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Müziğinizi içe aktarın" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "Cihazınızı herhangi bir bilgisayara bağlayın ve dosyaları Müzik klasörüne " "sürükleyin ya da müzik içeren çıkarılabilir bir aygıt takın." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Yeni müzik indir" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "Çevrimiçi gezinirken satın alınan müziği doğrudan içe aktarın." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Başlat" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Atla" #: app/music-app.qml:183 msgid "Next" msgstr "Sonraki" #: app/music-app.qml:184 msgid "Next Track" msgstr "Sonraki Parça" #: app/music-app.qml:190 msgid "Pause" msgstr "Duraklat" #: app/music-app.qml:190 msgid "Play" msgstr "Çal" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Çalmayı Duraklat" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Çalmayı durdur veya başlat" #: app/music-app.qml:197 msgid "Back" msgstr "Geri" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Son sayfaya dön" #: app/music-app.qml:206 msgid "Previous" msgstr "Önceki" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Önceki Parça" #: app/music-app.qml:212 msgid "Stop" msgstr "Durdur" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Çalmayı Durdur" #: app/music-app.qml:325 msgid "Debug: " msgstr "Hata Giderme: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "En son" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Sanatçılar" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Albümler" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Tarzlar" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Parçalar" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Çalma Listeleri" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Şu anda çalınan" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Çalma listesi seç" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 parça" msgstr[1] "%1 parça" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Bilinmeyen Albüm" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "Önceki" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Bilinmeyen Sanatçı" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Albüm" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 albüm" msgstr[1] "%1 albüm" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Sanatçı" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Parçayı dışa aktar" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Tarz" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Müzik bulunamadı" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Tam görünüm" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Kuyruk" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Çalma Listesi" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/ug.po000066400000000000000000000307671451274533600165120ustar00rootroot00000000000000# Uyghur translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # Gheyret Kenji , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2015-10-02 04:21+0000\n" "Last-Translator: Eltikin \n" "Language-Team: Uyghur Computer Science Association \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" "X-Generator: Launchpad (build 18352)\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "مۇزىكا" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "ئۇبۇنتۇنىڭ مۇزىكا پروگراممىسى" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "مۇزىكا;ناخشا;قويۇش;نەغمە;قويغۇ;tunes;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "تامام" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "ئىمپورت قىلىنغان ھۆججەت تېپىلمىدى" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "كۈت" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "بولدىلا" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "ھۆججەت(لەر) نى كۈتۈۋاتىدۇ…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "قويۇش تىزىمىنىڭ نامىنى ئۆزگەرت" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "قۇيۇش تىزىملىكىنى قۇش" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "ئۆزگەرت" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "قويۇش تىزىمى مەۋجۇت" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "ئاتىنى كىرگۈزۈڭ." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "يېڭى قويۇش تىزىمى" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "ياسا" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "قۇيۇش تىزىلىكىنى راستنىلار ئۈچۈرەمسىز؟" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "بىكار قىلىنمىدى" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "چىقىرىۋەت" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "تاللاشنى ئەمەلدىن قالدۇر" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "ھەممىنى تاللا" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "قويۇش تىزىمىغا قوش" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "قاتارغا قوش" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "ئۆچۈر" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "رەت تەرتىپىنى تازلا" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "مۇزىكا ئىزدەش" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "ھۆججەت ئاتى چوقۇم بۇنىڭ بىلەن باشلانسۇن" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "ھۆججەت يولى چوقۇم ھۆججەت بولسۇن" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "ھۆججەت يۆتكەش مەغلۇپ بولدى" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "قاتارغا قوش" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "يۈكلەۋاتىدۇ…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "تۈر تېپىلمىدى" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "بۇ يەرنى چېكىپ مۇزىكىنى قۇيۇڭ" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "قۇيۇلغانلار يوق" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "ھەممىنى قوي" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "ھەممىسى" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "تەرتىپسىز" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "مۇزىكا قويغۇچقا خۇش كەپسىز" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "مۇزىكا قۇشۇش" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "يېڭى مۇزىكا چۈشۈر" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "باشلا" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "ئۆتكۈزۈۋەت" #: app/music-app.qml:183 msgid "Next" msgstr "كېيىنكى" #: app/music-app.qml:184 msgid "Next Track" msgstr "كېيىنكى نەغمە" #: app/music-app.qml:190 msgid "Pause" msgstr "ۋاقىتلىق توختا" #: app/music-app.qml:190 msgid "Play" msgstr "قوي" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "قويۇشنى ۋاقىتلىق توختات" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "داۋاملاشتۇر ياكى قويۇشنى باشلا" #: app/music-app.qml:197 msgid "Back" msgstr "كەينى" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "ئاخىرقى بەتكە قايتىش" #: app/music-app.qml:206 msgid "Previous" msgstr "ئالدىنقى" #: app/music-app.qml:207 msgid "Previous Track" msgstr "ئالدىنقى Track" #: app/music-app.qml:212 msgid "Stop" msgstr "توختا" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "توختات" #: app/music-app.qml:325 msgid "Debug: " msgstr "سازلاش: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "يېقىنقى" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "سەنئەتكار" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "ئالبوملار" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "ئېقىم" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "قويۇش تىزىمى" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "قۇيۇۋاتدۇ" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "قويۇش تىزىمىنى تاللا" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "نامەلۇم ئالبوم" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "ئالدىنقى" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "ناتونۇش ئورۇنلىغۇچى" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "ئالبوم" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 ئالبوم" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "ئورۇنلىغۇچى" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "ئېقىم" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "مۇزىكا تېپىلمىدى" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "قاتار" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "قويۇش تىزىمى" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/uk.po000066400000000000000000000344301451274533600165050ustar00rootroot00000000000000# Ukrainian translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-02-23 00:29+0000\n" "Last-Translator: Sergii Horichenko \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.16-dev\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "Музика" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "Музична програма для Lomiri" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "музика;композиції;пісні;програвач;плеєр;звук;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "/usr/share/lomiri-music-app/app/graphics/music-app.svg" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ОК" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "Імпортований файл не знайдено" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "Зачекайте" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "Скасувати" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "Очікуємо на файли…" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "Перейменувати список композицій" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "Введіть назву списку композицій" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "Змінити" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "Список відтворення вже існує" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "Будь ласка, вкажіть назву." #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "Новий список відтворення" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "Створити" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "Остаточно вилучити список композицій?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "Наслідки дії не можна буде скасувати" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "Видалити" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "Скасувати позначення" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "Вибрати все" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "Додати до списку відтворення" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "Додати до черги відтворення" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "Видалити" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "Очистити чергу" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "Пошук музики" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "Шлях до файла повинен починатися з %1" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "Шлях має вказувати на файл" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "Не вдалося скопіювати файл" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "композицій відтворено сьогодні" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "Сьогодні нічого не відтворювалося" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "Додати до черги" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "Завантаження…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "Записів не знайдено" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "Натисніть, щоб перемішати список" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "Списків відтворення не знайдено" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" "Отримайте якнайбільше від Музики: натисніть піктограму %1 для створення " "списків композицій для будь-якого настрою і приводу." #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "Відтворити все" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "Обрати все" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "Перемішати" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "Вітаємо у Музиці" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "Отримуйте задоволення від улюбленої музики за допомогою музичної програми " "Lomiri. Ознайомтеся з початковими довідковими даними або натисніть " "Пропустити, щоб перейти до прослуховування." #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "Імпортуйте свою музику" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "З’єднайте свій пристрій із будь-яким комп’ютером і просто перетягніть файли " "до теки з музикою або вставте портативний носій із музичними записами." #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "Отримати нову музику" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" "Безпосередньо імпортувати музичні твори, придбані під час подорожей у " "інтернеті." #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "Почати" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "Пропустити" #: app/music-app.qml:183 msgid "Next" msgstr "Далі" #: app/music-app.qml:184 msgid "Next Track" msgstr "Наступна композиція" #: app/music-app.qml:190 msgid "Pause" msgstr "Пауза" #: app/music-app.qml:190 msgid "Play" msgstr "Пуск" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "Призупинити відтворення" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "Продовжити або розпочати відтворення" #: app/music-app.qml:197 msgid "Back" msgstr "Назад" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "Повернутися до останньої сторінки" #: app/music-app.qml:206 msgid "Previous" msgstr "Назад" #: app/music-app.qml:207 msgid "Previous Track" msgstr "Попередня композиція" #: app/music-app.qml:212 msgid "Stop" msgstr "Стоп" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "Зупинити відтворення" #: app/music-app.qml:325 msgid "Debug: " msgstr "Діагностика: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "Нещодавні" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "Виконавці" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "Альбоми" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "Жанри" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "Композиції" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "Списки відтворення" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "Зараз відтворюється" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "Виберіть список відтворення" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 композиція" msgstr[1] "%1 композиції" msgstr[2] "%1 композицій" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "Невідомий альбом" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "Різне" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "Невідомий виконавець" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "Альбом" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 альбом" msgstr[1] "%1 альбоми" msgstr[2] "%1 альбомів" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "Виконавець" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "Експортувати композицію" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "Жанр" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "Музики не знайдено" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "Повний перегляд" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "Додати до черги" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "Список відтворення" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "Налаштування" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "Тримайте екран увімкненим під час відтворення музики" lomiri-music-app-v3.0.3/po/ur.po000066400000000000000000000250571451274533600165210ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd. # This file is distributed under the same license as the lomiri-music-app package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: lomiri-music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2023-01-07 17:48+0000\n" "Last-Translator: Muhammad \n" "Language-Team: Urdu \n" "Language: ur\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.15.1-dev\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "گانے" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "ٹھیک ہے" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "منسوخ کریں" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "تبدیل کریں" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "انتخاب منسوخ کریں" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "تمام منتخب کریں" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "حذف کریں" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "لوڈ ہو رہا ہے..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "" #: app/music-app.qml:183 msgid "Next" msgstr "" #: app/music-app.qml:184 msgid "Next Track" msgstr "" #: app/music-app.qml:190 msgid "Pause" msgstr "" #: app/music-app.qml:190 msgid "Play" msgstr "" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "" #: app/music-app.qml:197 msgid "Back" msgstr "واپس" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "" #: app/music-app.qml:206 msgid "Previous" msgstr "" #: app/music-app.qml:207 msgid "Previous Track" msgstr "" #: app/music-app.qml:212 msgid "Stop" msgstr "" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "" #: app/music-app.qml:325 msgid "Debug: " msgstr "" #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 msgid "Various" msgstr "" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "" msgstr[1] "" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "ترتیبات" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/zh_CN.po000066400000000000000000000301651451274533600170700ustar00rootroot00000000000000# Chinese (Simplified) translation for music-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2022-04-19 11:09+0000\n" "Last-Translator: Animoe \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "音乐" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Ubuntu 上的音乐应用" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "音乐;歌曲;播放;曲目;播放器;曲调;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "确定" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "没有找到导入的文件" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "等待" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "取消" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "等待文件..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "重命名播放列表" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "输入播放列表名称" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "关联" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "播放列表已经存在" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "请输入一个名称。" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "新建播放列表" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "新建" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "永久删除播放列表?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "此操作无法撤消" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "移除" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "取消选择" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "全选" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "添加到播放列表" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "添加到队列" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "删除" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "清空队列" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "搜索音乐" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "文件必须包含着在以下路径" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "路径必须指向一个文件" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "移动文件失败" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "今日播放" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "今日未播放" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "添加到播放队列" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "加载中..." #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "未找到项目" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "随机播放" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "没有找到播放列表" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "通过点击%1图标开始制作播放列表以享受更加完美的音乐。" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "播放所有" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "全部加入队列" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "随机" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "欢迎来到音乐世界" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "使用 Ubuntu 的音乐应用享受您最喜爱的音乐。您可以花几分钟了解本应用或点击“跳" "过”开始欣赏音乐。" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "导入音乐" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "将设备连接到任何一台电脑,将文件拖动到音乐文件夹或插入移动音乐媒体。" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "下载新的音乐" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "直接导入在线购买的音乐。" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "启动" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "跳过" #: app/music-app.qml:183 msgid "Next" msgstr "下一个" #: app/music-app.qml:184 msgid "Next Track" msgstr "下一曲目" #: app/music-app.qml:190 msgid "Pause" msgstr "暂停" #: app/music-app.qml:190 msgid "Play" msgstr "播放" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "暂停播放" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "继续或开始播放" #: app/music-app.qml:197 msgid "Back" msgstr "返回" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "退到最后一页" #: app/music-app.qml:206 msgid "Previous" msgstr "上一首" #: app/music-app.qml:207 msgid "Previous Track" msgstr "上一曲目" #: app/music-app.qml:212 msgid "Stop" msgstr "停止" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "停止播放" #: app/music-app.qml:325 msgid "Debug: " msgstr "Debug: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "最近" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "表演者" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "相册" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "类型" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "音轨" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "播放列表" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "正在播放" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "选择播放列表" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 条音轨" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "未知专辑" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "上一首" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "未知表演者" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "相册" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 个专辑" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "歌手" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "导出音轨" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "流派" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "没有找到音乐" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "完整视图" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "队列" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "播放列表" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/zh_HK.po000066400000000000000000000255601451274533600170750ustar00rootroot00000000000000# Chinese (Hong Kong) translation for music-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2020-09-24 19:00+0000\n" "Last-Translator: P.-H. Lin \n" "Language-Team: Chinese (Traditional, Hong Kong) \n" "Language: zh_HK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "音樂" #: lomiri-music-app.desktop.in:4 msgid "A music application for Lomiri" msgstr "" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "確定" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "取消" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "" #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "更改" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "新增播放清單" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "建立" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "移除" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "取消選取" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "所有選取" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "加至播放清單" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "加至佇列" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "刪除" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, qt-format msgid "Filepath must start with %1" msgstr "" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 msgid "Failed to copy file" msgstr "" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "載入中…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "" #: app/components/Walkthrough/Slide1.qml:74 msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "略過" #: app/music-app.qml:183 msgid "Next" msgstr "下一個" #: app/music-app.qml:184 msgid "Next Track" msgstr "下一首" #: app/music-app.qml:190 msgid "Pause" msgstr "暫停" #: app/music-app.qml:190 msgid "Play" msgstr "播放" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "暫停播放" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "繼續或開始播放" #: app/music-app.qml:197 msgid "Back" msgstr "返回" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "返回上一版" #: app/music-app.qml:206 msgid "Previous" msgstr "上一首" #: app/music-app.qml:207 msgid "Previous Track" msgstr "上一首" #: app/music-app.qml:212 msgid "Stop" msgstr "停止" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "停止播放" #: app/music-app.qml:325 msgid "Debug: " msgstr "除錯: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "最近播放" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "歌手" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "相簿" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "風格" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "播放清單" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "選取播放清單" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "" msgstr[1] "" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "未知專輯" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "上一首" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "未知的演出者" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "相簿" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 個專輯" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/po/zh_TW.po000066400000000000000000000303151451274533600171170ustar00rootroot00000000000000# Chinese (Traditional) translation for music-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the music-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: music-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-01-18 11:47+0000\n" "PO-Revision-Date: 2021-02-15 19:27+0000\n" "Last-Translator: louies0623 \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.11.3\n" "X-Launchpad-Export-Date: 2017-04-14 05:53+0000\n" #: lomiri-music-app.desktop.in:3 app/music-app.qml:296 msgid "Music" msgstr "音樂" #: lomiri-music-app.desktop.in:4 #, fuzzy #| msgid "A music application for Ubuntu" msgid "A music application for Lomiri" msgstr "Ubuntu 的音樂應用程式" #: lomiri-music-app.desktop.in:5 msgid "music;songs;play;tracks;player;tunes;" msgstr "音樂;歌曲;播放;曲目;播放器;曲調;" #: lomiri-music-app.desktop.in:9 msgid "/usr/share/lomiri-music-app/app/graphics/music-app.svg" msgstr "" #: app/components/Dialog/ContentHubErrorDialog.qml:35 msgid "OK" msgstr "確定" #: app/components/Dialog/ContentHubNotFoundDialog.qml:29 msgid "Imported file not found" msgstr "找不到匯入的檔案" #: app/components/Dialog/ContentHubNotFoundDialog.qml:33 msgid "Wait" msgstr "請稍後" #: app/components/Dialog/ContentHubNotFoundDialog.qml:43 #: app/components/Dialog/EditPlaylistDialog.qml:76 #: app/components/Dialog/NewPlaylistDialog.qml:71 #: app/components/Dialog/RemovePlaylistDialog.qml:60 msgid "Cancel" msgstr "取消" #: app/components/Dialog/ContentHubWaitDialog.qml:34 msgid "Waiting for file(s)..." msgstr "正在等待檔案..." #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist #: app/components/Dialog/EditPlaylistDialog.qml:30 msgid "Rename playlist" msgstr "重新命名播放清單" #: app/components/Dialog/EditPlaylistDialog.qml:37 #: app/components/Dialog/NewPlaylistDialog.qml:34 msgid "Enter playlist name" msgstr "輸入播放清單名稱" #: app/components/Dialog/EditPlaylistDialog.qml:46 msgid "Change" msgstr "更改" #: app/components/Dialog/EditPlaylistDialog.qml:67 #: app/components/Dialog/NewPlaylistDialog.qml:60 msgid "Playlist already exists" msgstr "已有播放清單" #: app/components/Dialog/EditPlaylistDialog.qml:71 #: app/components/Dialog/NewPlaylistDialog.qml:65 msgid "Please type in a name." msgstr "請輸入名稱。" #: app/components/Dialog/NewPlaylistDialog.qml:30 msgid "New playlist" msgstr "新增播放清單" #: app/components/Dialog/NewPlaylistDialog.qml:44 msgid "Create" msgstr "建立" #. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist #: app/components/Dialog/RemovePlaylistDialog.qml:31 msgid "Permanently delete playlist?" msgstr "永遠刪除播放清單?" #: app/components/Dialog/RemovePlaylistDialog.qml:32 msgid "This cannot be undone" msgstr "這個動作無法還原" #: app/components/Dialog/RemovePlaylistDialog.qml:37 #: app/components/ListItemActions/Remove.qml:27 msgid "Remove" msgstr "移除" #: app/components/HeadState/MultiSelectHeadState.qml:36 msgid "Cancel selection" msgstr "取消選取" #: app/components/HeadState/MultiSelectHeadState.qml:47 msgid "Select All" msgstr "全部選取" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/MultiSelectHeadState.qml:58 #: app/components/HeadState/QueueHeadState.qml:51 #: app/components/ListItemActions/AddToPlaylist.qml:26 msgid "Add to playlist" msgstr "加入播放清單中" #: app/components/HeadState/MultiSelectHeadState.qml:76 msgid "Add to queue" msgstr "加入佇列中" #: app/components/HeadState/MultiSelectHeadState.qml:94 msgid "Delete" msgstr "刪除" #. TRANSLATORS: this action appears in the overflow drawer with limited space (around 18 characters) #: app/components/HeadState/QueueHeadState.qml:67 msgid "Clear queue" msgstr "清除佇列" #: app/components/HeadState/SearchHeadState.qml:38 msgid "Search music" msgstr "搜尋音樂" #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ #: app/components/Helpers/ContentHubHelper.qml:87 #, fuzzy, qt-format #| msgid "Filepath must start with" msgid "Filepath must start with %1" msgstr "檔必須包含在以下路徑" #. TRANSLATORS: This string represents that a blank filepath destination has been used #: app/components/Helpers/ContentHubHelper.qml:115 msgid "Filepath must be a file" msgstr "檔路徑必須是一個檔" #. TRANSLATORS: This string represents that there was failure moving the file to the target destination #: app/components/Helpers/ContentHubHelper.qml:121 #, fuzzy #| msgid "Failed to move file" msgid "Failed to copy file" msgstr "無法移動檔案" #. TRANSLATORS: this refers to a number of tracks greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string) #: app/components/Helpers/UserMetricsHelper.qml:31 msgid "tracks played today" msgstr "今天播放的曲目" #: app/components/Helpers/UserMetricsHelper.qml:32 msgid "No tracks played today" msgstr "今天沒有播放的曲目" #: app/components/ListItemActions/AddToQueue.qml:28 msgid "Add to Queue" msgstr "加入至佇列" #: app/components/LoadingSpinnerComponent.qml:47 msgid "Loading..." msgstr "載入中…" #: app/components/MusicPage.qml:83 msgid "No items found" msgstr "找不到項目" #: app/components/MusicToolbar.qml:91 msgid "Tap to shuffle music" msgstr "點擊可隨機播放音樂" #: app/components/PlaylistsEmptyState.qml:44 msgid "No playlists found" msgstr "找不到播放清單" #: app/components/PlaylistsEmptyState.qml:55 #, qt-format msgid "" "Get more out of Music by tapping the %1 icon to start making playlists for " "every mood and occasion." msgstr "點擊 %1 圖示開始為每一種心情和場合製作播放清單,從而獲得更多音樂。" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/PlayAllButton.qml:28 msgid "Play all" msgstr "播放全部" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/QueueAllButton.qml:45 msgid "Queue all" msgstr "全部佇列" #. TRANSLATORS: this appears in a button with limited space (around 14 characters) #: app/components/ViewButton/ShuffleButton.qml:45 msgid "Shuffle" msgstr "隨機播放" #: app/components/Walkthrough/Slide1.qml:60 msgid "Welcome to Music" msgstr "歡迎使用《音樂》" #: app/components/Walkthrough/Slide1.qml:74 #, fuzzy #| msgid "" #| "Enjoy your favorite music with Ubuntu's Music App. Take a short tour on " #| "how to get started or press skip to start listening now." msgid "" "Enjoy your favorite music with Lomiri's Music App. Take a short tour on how " "to get started or press skip to start listening now." msgstr "" "使用 Ubuntu 的音樂 App 享受您喜愛的音樂。先來看一下如何使用,或是按下略過立刻" "開始聆聽音樂。" #: app/components/Walkthrough/Slide2.qml:55 msgid "Import your music" msgstr "匯入您的音樂" #: app/components/Walkthrough/Slide2.qml:68 app/ui/LibraryEmptyState.qml:134 msgid "" "Connect your device to any computer and simply drag files to the Music " "folder or insert removable media with music." msgstr "" "將您的裝置接上任一臺電腦,接著將檔案拖曳到 Music 資料夾中,或是插入存放音樂的" "可卸除式媒體。" #: app/components/Walkthrough/Slide3.qml:55 msgid "Download new music" msgstr "下載新的音樂" #: app/components/Walkthrough/Slide3.qml:68 msgid "Directly import music bought while browsing online." msgstr "線上瀏覽時直接匯入已購買的音樂。" #: app/components/Walkthrough/Slide3.qml:82 msgid "Start" msgstr "開始" #: app/components/Walkthrough/Walkthrough.qml:119 msgid "Skip" msgstr "略過" #: app/music-app.qml:183 msgid "Next" msgstr "下一步" #: app/music-app.qml:184 msgid "Next Track" msgstr "下一首" #: app/music-app.qml:190 msgid "Pause" msgstr "暫停" #: app/music-app.qml:190 msgid "Play" msgstr "播放" #: app/music-app.qml:192 msgid "Pause Playback" msgstr "暫停播放" #: app/music-app.qml:192 msgid "Continue or start playback" msgstr "繼續或開始播放" #: app/music-app.qml:197 msgid "Back" msgstr "返回" #: app/music-app.qml:198 msgid "Go back to last page" msgstr "返回上一頁" #: app/music-app.qml:206 msgid "Previous" msgstr "最近" #: app/music-app.qml:207 msgid "Previous Track" msgstr "上一首" #: app/music-app.qml:212 msgid "Stop" msgstr "停止" #: app/music-app.qml:213 msgid "Stop Playback" msgstr "停止播放" #: app/music-app.qml:325 msgid "Debug: " msgstr "除錯: " #: app/music-app.qml:749 app/ui/AddToPlaylist.qml:117 app/ui/Recent.qml:79 #: app/ui/SongsView.qml:90 msgid "Recent" msgstr "最近" #: app/music-app.qml:799 app/ui/Artists.qml:36 msgid "Artists" msgstr "歌手" #: app/music-app.qml:821 app/ui/Albums.qml:32 msgid "Albums" msgstr "專輯" #: app/music-app.qml:843 app/ui/Genres.qml:32 msgid "Genres" msgstr "曲風" #: app/music-app.qml:865 app/ui/Songs.qml:36 msgid "Tracks" msgstr "音訊" #. TRANSLATORS: this is the name of the playlists page shown in the tab header. #. Remember to keep the translation short to fit the screen width #: app/music-app.qml:887 app/ui/AddToPlaylist.qml:107 app/ui/Playlists.qml:36 #: app/ui/SongsView.qml:102 msgid "Playlists" msgstr "播放清單" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/music-app.qml:953 app/ui/NowPlaying.qml:117 msgid "Now playing" msgstr "現正播放" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/AddToPlaylist.qml:43 msgid "Select playlist" msgstr "選取播放清單" #: app/ui/AddToPlaylist.qml:102 app/ui/Playlists.qml:87 #: app/ui/SongsView.qml:278 app/ui/SongsView.qml:279 #, qt-format msgid "%1 track" msgid_plural "%1 tracks" msgstr[0] "%1 首曲目" #: app/ui/Albums.qml:75 app/ui/ArtistView.qml:146 app/ui/ArtistView.qml:159 #: app/ui/Recent.qml:113 app/ui/SongsView.qml:226 msgid "Unknown Album" msgstr "未知的專輯" #: app/ui/Albums.qml:79 app/ui/SongsView.qml:249 #, fuzzy #| msgid "Previous" msgid "Various" msgstr "最近" #: app/ui/Albums.qml:85 app/ui/ArtistView.qml:85 app/ui/ArtistView.qml:158 #: app/ui/Artists.qml:79 app/ui/Recent.qml:114 app/ui/SongsView.qml:255 msgid "Unknown Artist" msgstr "未知的歌手" #: app/ui/Albums.qml:96 app/ui/ArtistView.qml:157 app/ui/Recent.qml:129 msgid "Album" msgstr "專輯" #: app/ui/ArtistView.qml:104 #, qt-format msgid "%1 album" msgid_plural "%1 albums" msgstr[0] "%1 張專輯" #: app/ui/Artists.qml:87 msgid "Artist" msgstr "藝人" #: app/ui/ContentHubExport.qml:34 msgid "Export Track" msgstr "匯出音訊" #: app/ui/Genres.qml:111 app/ui/Genres.qml:113 app/ui/SongsView.qml:178 #: app/ui/SongsView.qml:193 app/ui/SongsView.qml:212 app/ui/SongsView.qml:258 #: app/ui/SongsView.qml:277 app/ui/SongsView.qml:304 msgid "Genre" msgstr "曲風" #: app/ui/LibraryEmptyState.qml:122 msgid "No music found" msgstr "找不到音樂" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:119 msgid "Full view" msgstr "全部顯示" #. TRANSLATORS: this appears in the header with limited space (around 20 characters) #: app/ui/NowPlaying.qml:121 msgid "Queue" msgstr "佇列" #: app/ui/Playlists.qml:99 app/ui/Playlists.qml:100 app/ui/Recent.qml:114 #: app/ui/Recent.qml:129 app/ui/SongsView.qml:66 app/ui/SongsView.qml:81 #: app/ui/SongsView.qml:113 app/ui/SongsView.qml:123 app/ui/SongsView.qml:165 #: app/ui/SongsView.qml:180 app/ui/SongsView.qml:195 app/ui/SongsView.qml:211 #: app/ui/SongsView.qml:257 app/ui/SongsView.qml:287 app/ui/SongsView.qml:290 #: app/ui/SongsView.qml:306 msgid "Playlist" msgstr "播放清單" #: app/ui/SettingsPage.qml:26 msgid "Settings" msgstr "" #: app/ui/SettingsPage.qml:66 msgid "Keep screen on while music is played" msgstr "" lomiri-music-app-v3.0.3/tests/000077500000000000000000000000001451274533600162465ustar00rootroot00000000000000lomiri-music-app-v3.0.3/tests/CMakeLists.txt000066400000000000000000000000341451274533600210030ustar00rootroot00000000000000add_subdirectory(autopilot) lomiri-music-app-v3.0.3/tests/autopilot/000077500000000000000000000000001451274533600202665ustar00rootroot00000000000000lomiri-music-app-v3.0.3/tests/autopilot/CMakeLists.txt000066400000000000000000000005211451274533600230240ustar00rootroot00000000000000if(INSTALL_TESTS) execute_process(COMMAND python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" OUTPUT_VARIABLE PYTHON_PACKAGE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) install(DIRECTORY ${AUTOPILOT_DIR} DESTINATION ${PYTHON_PACKAGE_DIR} ) endif(INSTALL_TESTS) add_subdirectory(lomiri_music_app) lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/000077500000000000000000000000001451274533600236215ustar00rootroot00000000000000lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/CMakeLists.txt000066400000000000000000000003701451274533600263610ustar00rootroot00000000000000add_subdirectory(tests) # make the emulator files visible on qtcreator file(GLOB PYTHON_EMULATOR_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py) add_custom_target(music_ubports_PYTHONEMULATORFiles ALL SOURCES ${PYTHON_EMULATOR_FILES}) lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/__init__.py000066400000000000000000000363551451274533600257460ustar00rootroot00000000000000# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- # Copyright 2013, 2014, 2015, 2016 Canonical # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. """music-app tests and emulators - top level package.""" from lomiriuitoolkit import ( MainView, LomiriUIToolkitCustomProxyObjectBase, UCListItem ) from autopilot.introspection import dbus class MusicAppException(Exception): """Exception raised when there's an error in the Music App.""" def click_object(func): """Wrapper which clicks the returned object""" def func_wrapper(self, *args, **kwargs): return self.pointing_device.click_object(func(self, *args, **kwargs)) return func_wrapper def ensure_now_playing_full(func): """Wrapper which ensures the now playing is full before clicking""" def func_wrapper(self, *args, **kwargs): if self.isListView: self.click_full_view() return func(self, *args, **kwargs) return func_wrapper def ensure_now_playing_list(func): """Wrapper which ensures the now playing is list before clicking""" def func_wrapper(self, *args, **kwargs): if not self.isListView: self.click_queue_view() return func(self, *args, **kwargs) return func_wrapper class MusicApp(object): """Autopilot helper object for the Music application.""" def __init__(self, app_proxy): self.app = app_proxy # Use only objectName due to bug 1350532 as it is MainView12 self.main_view = self.app.wait_select_single( objectName="musicMainView") def get_add_to_playlist_page(self): return self.app.wait_select_single(AddToPlaylist, objectName="addToPlaylistPage") def get_albums_page(self): self.main_view.switch_to_tab_wrapper('albumsTabAction') return self.main_view.wait_select_single( Albums, objectName='albumsPage') def get_artist_view_page(self): return self.main_view.wait_select_single( ArtistView, objectName='artistViewPage') def get_artists_page(self): self.main_view.switch_to_tab_wrapper('artistsTabAction') return self.main_view.wait_select_single( Artists, objectName='artistsPage') def get_new_playlist_dialog(self): return self.main_view.wait_select_single( Dialog, objectName="dialogNewPlaylist") def get_delete_playlist_dialog(self): return self.main_view.wait_select_single( RemovePlaylistDialog, objectName="dialogRemovePlaylist") def get_now_playing_page(self): return self.app.wait_select_single(NowPlaying, objectName="nowPlayingPage") def get_playlists_page(self): self.main_view.switch_to_tab_wrapper('playlistsTabAction') return self.main_view.wait_select_single( Playlists, objectName='playlistsPage') def get_queue_count(self): return self.player.count def get_songs_view(self): return self.app.wait_select_single(SongsView, objectName="songsPage") def get_toolbar(self): return self.app.wait_select_single( MusicToolbar, objectName="musicToolbarObject", visible=True, ) def get_songs_page(self): self.main_view.switch_to_tab_wrapper('songsTabAction') return self.main_view.wait_select_single( Songs, objectName='songsPage') def get_walkthrough_page(self): return self.main_view.wait_select_single(Walkthrough, objectName="walkthroughPage") @property def loaded(self): return (not self.main_view.select_single("ActivityIndicator", objectName="LoadingSpinner").running and self.main_view.select_single("*", "allSongsModel").populated) @property def player(self): # Get new player each time as data changes (eg currentMeta) return self.app.select_single(Player, objectName='player') def populate_queue(self): tracksPage = self.get_songs_page() # switch to track tab # get and click to play first track track = tracksPage.get_track(0) self.app.pointing_device.click_object(track) tracksPage.visible.wait_for(False) # wait until page has hidden # TODO: when using bottom edge wait for .isReady on tracksPage # wait for now playing page to be visible self.get_now_playing_page().visible.wait_for(True) def get_library_empty_state_page(self): return self.app.wait_select_single(LibraryEmptyState, objectName="emptyLibrary") class LibraryEmptyState(LomiriUIToolkitCustomProxyObjectBase): """Autopilot helper for LibraryEmptyState""" def __init__(self, *args): super(LibraryEmptyState, self).__init__(*args) class Page(LomiriUIToolkitCustomProxyObjectBase): """Autopilot helper for Pages.""" def __init__(self, *args): super(Page, self).__init__(*args) # XXX we need a better way to keep reference to the main view. # --elopio - 2014-01-31 # Use only objectName due to bug 1350532 as it is MainView12 self.main_view = self.get_root_instance().select_single( objectName="musicMainView") class MusicPage(Page): def __init__(self, *args): super(MusicPage, self).__init__(*args) class Walkthrough(Page): """ Autopilot helper for the walkthrough page """ def __init__(self, *args): super(Walkthrough, self).__init__(*args) self.visible.wait_for(True) @click_object def skip(self): return self.wait_select_single("UCLabel", objectName="skipLabel") class Albums(MusicPage): """ Autopilot helper for the albums page """ def __init__(self, *args): super(Albums, self).__init__(*args) self.visible.wait_for(True) @click_object def click_album(self, i): return (self.wait_select_single("*", objectName="albumsPageGridItem" + str(i))) class Artists(MusicPage): """ Autopilot helper for the artists page """ def __init__(self, *args): super(Artists, self).__init__(*args) self.visible.wait_for(True) @click_object def click_artist(self, i): return (self.wait_select_single("Card", objectName="artistsPageGridItem" + str(i))) class Songs(MusicPage): """ Autopilot helper for the tracks page """ def __init__(self, *args): super(Songs, self).__init__(*args) self.visible.wait_for(True) def get_track(self, i): return (self.wait_select_single(MusicListItem, objectName="tracksPageListItem" + str(i))) class Playlists(MusicPage): """ Autopilot helper for the playlists page """ def __init__(self, *args): super(Playlists, self).__init__(*args) self.visible.wait_for(True) def get_count(self): return self.wait_select_single( "MusicGridView", objectName="playlistsGridView").count def click_new_playlist_action(self): self.wait_select_single( "ActionBar", objectName="playlistTrailingActionBar", visible=True, ).click_action_button("newPlaylistButton") @click_object def click_playlist(self, i): return self.get_playlist(i) def get_playlist(self, i): return (self.wait_select_single("Card", objectName="playlistCardItem" + str(i))) class AddToPlaylist(MusicPage): """ Autopilot helper for add to playlist page """ def __init__(self, *args): super(AddToPlaylist, self).__init__(*args) self.visible.wait_for(True) def click_new_playlist_action(self): self.wait_select_single( "ActionBar", objectName="playlistTrailingActionBar", visible=True, ).click_action_button("newPlaylistButton") @click_object def click_playlist(self, i): return self.get_playlist(i) def get_count(self): # careful not to conflict until Page11 is fixed return self.wait_select_single( "MusicGridView", objectName="addToPlaylistGridView").count def get_playlist(self, i): return (self.wait_select_single("Card", objectName="addToPlaylistCardItem" + str(i))) class Player(LomiriUIToolkitCustomProxyObjectBase): """Autopilot helper for Player""" @property def currentMeta(self): return self.select_single("*", objectName="currentMeta") class NowPlaying(MusicPage): """ Autopilot helper for now playing page """ def __init__(self, *args): super(NowPlaying, self).__init__(*args) self.visible.wait_for(True) @ensure_now_playing_full @click_object def click_forward_button(self): return self.wait_select_single("*", objectName="forwardShape") def click_full_view(self): self.get_sections().click_section_button(0) @ensure_now_playing_full @click_object def click_play_button(self): return self.wait_select_single("*", objectName="playShape") @ensure_now_playing_full @click_object def click_previous_button(self): return self.wait_select_single("*", objectName="previousShape") def click_queue_view(self): self.get_sections().click_section_button(1) @ensure_now_playing_full @click_object def click_repeat_button(self): return self.wait_select_single("*", objectName="repeatShape") @ensure_now_playing_full @click_object def click_shuffle_button(self): return self.wait_select_single("*", objectName="shuffleShape") @click_object def click_track(self, i): return self.get_track(i) def get_sections(self): return self.wait_select_single( "Sections", objectName="nowPlayingSections", visible=True, ) @ensure_now_playing_list def get_track(self, i): return (self.wait_select_single(MusicListItem, objectName="nowPlayingListItem" + str(i))) @property def player(self): # Get new player each time as data changes (eg currentMeta) root = self.get_root_instance() return root.select_single(Player, objectName="player") @ensure_now_playing_full def seek_to(self, percentage): progress_bar = self.wait_select_single( "*", objectName="progressSliderShape") x1, y1, width, height = progress_bar.globalRect y1 += height // 2 x2 = x1 + int(width * percentage / 100) self.pointing_device.drag(x1, y1, x2, y1) def set_repeat(self, state): if self.player.repeat != state: self.click_repeat_button() self.player.repeat.wait_for(state) def set_shuffle(self, state): if self.player.shuffle != state: self.click_shuffle_button() self.player.shuffle.wait_for(state) class ArtistView(MusicPage): """ Autopilot helper for the albums page """ def __init__(self, *args): super(ArtistView, self).__init__(*args) self.visible.wait_for(True) @click_object def click_artist(self, i): return self.wait_select_single("Card", objectName="albumsPageGridItem" + str(i)) def get_artist(self): return self.wait_select_single("UCLabel", objectName="artistLabel").text class SongsView(MusicPage): """ Autopilot helper for the songs page """ def __init__(self, *args): super(SongsView, self).__init__(*args) self.visible.wait_for(True) def click_delete_playlist_action(self): self.wait_select_single( "ActionBar", objectName="playlistTrailingActionBar", visible=True, ).click_action_button("deletePlaylist") @click_object def click_track(self, i): return self.get_track(i) def get_header_artist_label(self): return self.wait_select_single("UCLabel", objectName="songsPageHeaderAlbumArtist") def get_track(self, i): return (self.wait_select_single(MusicListItem, objectName="songsPageListItem" + str(i))) class MusicToolbar(LomiriUIToolkitCustomProxyObjectBase): """Autopilot helper for the toolbar""" def __init__(self, *args): super(MusicToolbar, self).__init__(*args) @click_object def click_play_button(self): return self.wait_select_single("*", objectName="playShape") @click_object def click_jump_to_now_playing(self): return self.wait_select_single("*", objectName="jumpNowPlaying") def switch_to_now_playing(self): self.click_jump_to_now_playing() root = self.get_root_instance() now_playing_page = root.wait_select_single(NowPlaying, objectName="nowPlayingPage") now_playing_page.visible.wait_for(True) class MusicListItem(UCListItem): def click_add_to_playlist_action(self): return self.trigger_trailing_action("addToPlaylistAction") def click_add_to_queue_action(self): return self.trigger_trailing_action("addToQueueAction") def click_remove_action(self): return self.trigger_leading_action("swipeDeleteAction", self.wait_until_destroyed) def get_label_text(self, name): return self.wait_select_single(objectName=name).text class Dialog(LomiriUIToolkitCustomProxyObjectBase): def __init__(self, *args): super(Dialog, self).__init__(*args) self.visible.wait_for(True) @click_object def click_new_playlist_dialog_create_button(self): return self.wait_select_single( "Button", objectName="newPlaylistDialogCreateButton") def type_new_playlist_dialog_name(self, text): self.wait_select_single( "TextField", objectName="playlistNameTextField").write(text) class RemovePlaylistDialog(LomiriUIToolkitCustomProxyObjectBase): @click_object def click_remove_playlist_dialog_remove_button(self): return self.wait_select_single( "Button", objectName="removePlaylistDialogRemoveButton") class MainView(MainView): """Autopilot custom proxy object for the MainView.""" retry_delay = 0.2 def __init__(self, *args): super(MainView, self).__init__(*args) self.visible.wait_for(True) # wait for activity indicator to stop spinning spinner = self.wait_select_single("ActivityIndicator", objectName="LoadingSpinner") spinner.running.wait_for(False) def go_back_wrapper(self): self.wait_select_single( "ActionBar", objectName="tabsLeadingActionBar", visible=True, ).click_action_button("backAction") def switch_to_tab_wrapper(self, objectName): # We use leadingActionBar instead of Tabs so create wrapper action_bar = self.wait_select_single( "ActionBar", objectName="tabsLeadingActionBar", visible=True, ) try: action_bar.click_action_button(objectName) except dbus.StateNotFoundError: # the popover was deleted when clicking the button pass lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/000077500000000000000000000000001451274533600252735ustar00rootroot00000000000000lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/blank-mediascanner-2.0/000077500000000000000000000000001451274533600313065ustar00rootroot00000000000000mediastore.db000066400000000000000000000560001451274533600336730ustar00rootroot00000000000000lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/blank-mediascanner-2.0SQLite format 3@ -     y00yFktablemediamediaCREATE TABLE media ( id INTEGER PRIMARY KEY, filename TEXT UNIQUE NOT NULL CHECK (filename LIKE '/%'), content_type TEXT, etag TEXT, title TEXT, date TEXT, artist TEXT, -- Only relevant to audio album TEXT, -- Only relevant to audio album_artist TEXT, -- Only relevant to audio genre TEXT, -- Only relevant to audio disc_number INTEGER, -- Only relevant to audio track_number INTEGER, -- Only relevant to audio duration INTEGER, width INTEGER, -- Only relevant to video/images height INTEGER, -- Only relevant to video/images latitude DOUBLE, longitude DOUBLE, has_thumbnail INTEGER CHECK (has_thumbnail IN (0, 1)), mtime INTEGER, type INTEGER CHECK (type IN (1, 2, 3)) -- MediaType enum )3R''etableschemaVersionschemaVersionCREATE TABLE schemaVersion (version INTEGER)  "R+qindexmedia_mtime_idxmedia CREATE INDEX media_mtime_idx ON media(type, mtime)b+indexmedia_genre_idxmedia CREATE INDEX media_genre_idx ON media(type, genre) WHERE type = 1e-indexmedia_artist_idxmedia CREATE INDEX media_artist_idx ON media(type, artist) WHERE type = 13windexmedia_song_info_idxmediaCREATE INDEX media_song_info_idx ON media(type, album_artist, album, disc_number, track_number, title) WHERE type = 1I)aindexmedia_type_idxmediaCREATE INDEX media_type_idx ON media(type))=indexsqlite_autoindex_media_1media       >65 I#indexsqlite_autoindex_media_attic_1media_attic  ##Utablemedia_atticmedia_attic CREATE TABLE media_attic ( id INTEGER PRIMARY KEY, filename TEXT UNIQUE NOT NULL, content_type TEXT, etag TEXT, title TEXT, date TEXT, artist TEXT, -- Only relevant to audio album TEXT, -- Only relevant to audio album_artist TEXT, -- Only relevant to audio genre TEXT, -- Only relevant to audio disc_number INTEGER, -- Only relevant to audio track_number INTEGER, -- Only relevant to audio duration INTEGER, width INTEGER, -- Only relevant to video/images height INTEGER, -- Only relevant to video/images latitude DOUBLE, longitude DOUBLE, has_thumbnail INTEGER, mtime INTEGER, type INTEGER -- 0=Audio, 1=Video )  wV Otablemedia_ftsmedia_ftsCREATE VIRTUAL TABLE media_fts USING fts4(content='media', title, artist, album, tokenize=porter)j))tablemedia_fts_statmedia_fts_statCREATE TABLE 'media_fts_stat'(id INTEGER PRIMARY KEY, value BLOB)u//tablemedia_fts_docsizemedia_fts_docsizeCREATE TABLE 'media_fts_docsize'(docid INTEGER PRIMARY KEY, size BLOB)?S-indexsqlite_autoindex_media_fts_segdir_1media_fts_segdirH --Ctablemedia_fts_segdirmedia_fts_segdirCREATE TABLE 'media_fts_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx)){ 11!tablemedia_fts_segmentsmedia_fts_segmentsCREATE TABLE 'media_fts_segments'(blockid INTEGER PRIMARY KEY, block BLOB)     |AC%%Etablebroken_filesbroken_filesCREATE TABLE broken_files ( filename TEXT PRIMARY KEY NOT NULL, etag TEXT NOT NULL )7K%indexsqlite_autoindex_broken_files_1broken_files:Ktriggermedia_aimediaCREATE TRIGGER media_ai AFTER INSERT ON media BEGIN INSERT INTO media_fts(docid, title, artist, album) VALUES (new.id, new.title, new.artist, new.album); ENDUtriggermedia_bdmediaCREATE TRIGGER media_bd BEFORE DELETE ON media BEGIN DELETE FROM media_fts WHERE docid=old.id; END:Ktriggermedia_aumediaCREATE TRIGGER media_au AFTER UPDATE ON media BEGIN INSERT INTO media_fts(docid, title, artist, album) VALUES (new.id, new.title, new.artist, new.album); ENDUtriggermedia_bumediaCREATE TRIGGER media_bu BEFORE UPDATE ON media BEGIN DELETE FROM media_fts WHERE docid=old.id; END  mediastore.sql000066400000000000000000000000451451274533600341030ustar00rootroot00000000000000lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/blank-mediascanner-2.0INSERT INTO schemaVersion VALUES(10) lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/mediascanner-2.0/000077500000000000000000000000001451274533600302215ustar00rootroot00000000000000lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/mediascanner-2.0/mediastore.db000066400000000000000000000640001451274533600326640ustar00rootroot00000000000000SQLite format 3@ B0B-    ?!/% '%'  /home/phablet/Music/3.mp3audio/mpeg1409807154:658363TestMP3TitleTestMP3ArtistTestMP3AlbumTestMP3ArtistT2n?/ ' '  /home/phablet/Music/2.oggaudio/ogg1409807154:658363SwansongJosh WoodwardJosh Woodward>T2~?/1 1  /home/phablet/Music/1.oggaudio/ogg1409807154:648352Gran Vals1902Francisco TárregaFrancisco TárregaT2 ?/home/phablet/Music/3.mp3?/home/phablet/Music/2.ogg? /home/phablet/Music/1.ogg XNNuzzz ##Utablemedia_atticmedia_attic CREATE TABLE media_attic ( id INTEGER PRIMARY KEY, filename TEXT UNIQUE NOT NULL, content_type TEXT, etag TEXT, title TEXT, date TEXT, artist TEXT, -- Only relevant to audio album TEXT, -- Only relevant to audio album_artist TEXT, -- Only relevant to audio genre TEXT, -- Only relevant to audio disc_number INTEGER, -- Only relevant to audio track_number INTEGER, -- Only relevant to audio duration INTEGER, width INTEGER, -- Only relevant to video/images height INTEGER, -- Only relevant to video/images latitude DOUBLE, longitude DOUBLE, has_thumbnail INTEGER, mtime INTEGER, type INTEGER -- 0=Audio, 1=Video )5 I#indexsqlite_autoindex_media_attic_1media_attic R''etableschemaVersionschemaVersionCREATE TABLE schemaVersion (version INTEGER) {3{R%%Etablebroken_filesbroken_filesCREATE TABLE broken_files ( filename TEXT PRIMARY KEY NOT NULL, etag TEXT NOT NULL )j))tablemedia_fts_statmedia_fts_statCREATE TABLE 'media_fts_stat'(id INTEGER PRIMARY KEY, value BLOB)u//tablemedia_fts_docsizemedia_fts_docsizeCREATE TABLE 'media_fts_docsize'(docid INTEGER PRIMARY KEY, size BLOB)?S-indexsqlite_autoindex_media_fts_segdir_1media_fts_segdirH --Ctablemedia_fts_segdirmedia_fts_segdirCREATE TABLE 'media_fts_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx)){ 11!tablemedia_fts_segmentsmedia_fts_segmentsCREATE TABLE 'media_fts_segments'(blockid INTEGER PRIMARY KEY, block BLOB) Utablemedia_ftsmedia_ftsCREATE VIRTUAL TABLE media_fts USING fts4(content='media', title, artist, album, tokenize=mozporter) QQ/=tablemediamediaCREATE TABLE media ( filename TEXT PRIMARY KEY NOT NULL CHECK (filename LIKE '/%'), content_type TEXT, etag TEXT, title TEXT, date TEXT, artist TEXT, -- Only relevant to audio album TEXT, -- Only relevant to audio album_artist TEXT, -- Only relevant to audio genre TEXT, -- Only relevant to audio disc_number INTEGER, -- Only relevant to audio track_number INTEGER, -- Only relevant to audio duration INTEGER, width INTEGER, -- Only relevant to video/images height INTEGER, -- Only relevant to video/images latitude DOUBLE, longitude DOUBLE, has_thumbnail INTEGER CHECK (has_thumbnail IN (0, 1)), mtime INTEGER, type INTEGER CHECK (type IN (1, 2, 3)) -- MediaType enum )v97K%indexsqlite_autoindex_broken_files_1broken_files     "X[triggermedia_bdmediaCREATE TRIGGER media_bd BEFORE DELETE ON media BEGIN DELETE FROM media_fts WHERE docid=old.rowid; END[triggermedia_bumediaCREATE TRIGGER media_bu BEFORE UPDATE ON media BEGIN DELETE FROM media_fts WHERE docid=old.rowid; ENDe-indexmedia_artist_idxmediaCREATE INDEX media_artist_idx ON media(type, artist) WHERE type = 0b+indexmedia_genre_idxmedia CREATE INDEX media_genre_idx ON media(type, genre) WHERE type = 03windexmedia_song_info_idxmedia CREATE INDEX media_song_info_idx ON media(type, album_artist, album, disc_number, track_number, title) WHERE type = 0I)aindexmedia_type_idxmediaCREATE INDEX media_type_idx ON media(type))=indexsqlite_autoindex_media_1media      @= Qtriggermedia_aimediaCREATE TRIGGER media_ai AFTER INSERT ON media BEGIN INSERT INTO media_fts(docid, title, artist, album) VALUES (new.rowid, new.title, new.artist, new.album); END=Qtriggermedia_aumediaCREATE TRIGGER media_au AFTER UPDATE ON media BEGIN INSERT INTO media_fts(docid, title, artist, album) VALUES (new.rowid, new.title, new.artist, new.album); END O [4a:*0 15 firewatch%>0 25copi firewatch&@ 0 26 halloweennumix% > 0 25 2560x1600 copi  * 0 15 2560x1440 H  0 59blue d7xa7kg numix satya164 tardi  * 0 15 2560x1600 % >0 25 2560x1440 copi -N0 330052052015devic0T0 362015from screenshot0T0 362015from screenshot0T0 362014from screenshot-N0 330103502015devic?r0 51 franciscograntarregaval7 d0 44 testmp3albumrtisttitle5`0 42joshswansongwoodward                #   lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/mediascanner-2.0/mediastore.sch000066400000000000000000000057471451274533600330710ustar00rootroot00000000000000CREATE TABLE schemaVersion (version INTEGER); CREATE TABLE media ( id INTEGER PRIMARY KEY, filename TEXT UNIQUE NOT NULL CHECK (filename LIKE '/%'), content_type TEXT, etag TEXT, title TEXT, date TEXT, artist TEXT, -- Only relevant to audio album TEXT, -- Only relevant to audio album_artist TEXT, -- Only relevant to audio genre TEXT, -- Only relevant to audio disc_number INTEGER, -- Only relevant to audio track_number INTEGER, -- Only relevant to audio duration INTEGER, width INTEGER, -- Only relevant to video/images height INTEGER, -- Only relevant to video/images latitude DOUBLE, longitude DOUBLE, has_thumbnail INTEGER CHECK (has_thumbnail IN (0, 1)), mtime INTEGER, type INTEGER CHECK (type IN (1, 2, 3)) -- MediaType enum ); CREATE INDEX media_type_idx ON media(type); CREATE INDEX media_song_info_idx ON media(type, album_artist, album, disc_number, track_number, title) WHERE type = 1; CREATE INDEX media_artist_idx ON media(type, artist) WHERE type = 1; CREATE INDEX media_genre_idx ON media(type, genre) WHERE type = 1; CREATE INDEX media_mtime_idx ON media(type, mtime); CREATE TABLE media_attic ( id INTEGER PRIMARY KEY, filename TEXT UNIQUE NOT NULL, content_type TEXT, etag TEXT, title TEXT, date TEXT, artist TEXT, -- Only relevant to audio album TEXT, -- Only relevant to audio album_artist TEXT, -- Only relevant to audio genre TEXT, -- Only relevant to audio disc_number INTEGER, -- Only relevant to audio track_number INTEGER, -- Only relevant to audio duration INTEGER, width INTEGER, -- Only relevant to video/images height INTEGER, -- Only relevant to video/images latitude DOUBLE, longitude DOUBLE, has_thumbnail INTEGER, mtime INTEGER, type INTEGER -- 0=Audio, 1=Video ); CREATE VIRTUAL TABLE media_fts USING fts4(content='media', title, artist, album, tokenize=porter); CREATE TABLE 'media_fts_segments'(blockid INTEGER PRIMARY KEY, block BLOB); CREATE TABLE 'media_fts_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx)); CREATE TABLE 'media_fts_docsize'(docid INTEGER PRIMARY KEY, size BLOB); CREATE TABLE 'media_fts_stat'(id INTEGER PRIMARY KEY, value BLOB); CREATE TRIGGER media_bu BEFORE UPDATE ON media BEGIN DELETE FROM media_fts WHERE docid=old.id; END; CREATE TRIGGER media_au AFTER UPDATE ON media BEGIN INSERT INTO media_fts(docid, title, artist, album) VALUES (new.id, new.title, new.artist, new.album); END; CREATE TRIGGER media_bd BEFORE DELETE ON media BEGIN DELETE FROM media_fts WHERE docid=old.id; END; CREATE TRIGGER media_ai AFTER INSERT ON media BEGIN INSERT INTO media_fts(docid, title, artist, album) VALUES (new.id, new.title, new.artist, new.album); END; CREATE TABLE broken_files ( filename TEXT PRIMARY KEY NOT NULL, etag TEXT NOT NULL ); lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/mediascanner-2.0/mediastore.sql000066400000000000000000000044121451274533600330770ustar00rootroot00000000000000BEGIN TRANSACTION; DELETE FROM `schemaVersion`; INSERT INTO `schemaVersion` VALUES(10); DROP TABLE media; CREATE TABLE media ( filename TEXT PRIMARY KEY NOT NULL CHECK (filename LIKE '/%'), content_type TEXT, etag TEXT, title TEXT, date TEXT, artist TEXT, -- Only relevant to audio album TEXT, -- Only relevant to audio album_artist TEXT, -- Only relevant to audio genre TEXT, -- Only relevant to audio disc_number INTEGER, -- Only relevant to audio track_number INTEGER, -- Only relevant to audio duration INTEGER, width INTEGER, -- Only relevant to video/images height INTEGER, -- Only relevant to video/images latitude DOUBLE, longitude DOUBLE, has_thumbnail INTEGER CHECK (has_thumbnail IN (0, 1)), mtime INTEGER, type INTEGER CHECK (type IN (1, 2, 3)) -- MediaType enum ); INSERT INTO `media` VALUES('/home/phablet/Music/1.ogg','audio/ogg','1409807154:648352','Gran Vals',1902,'Francisco Tárrega','','Francisco Tárrega','',0,0,202,0,0,'0.0','0.0',0,1409807154,1); INSERT INTO `media` VALUES('/home/phablet/Music/2.ogg','audio/ogg','1409807154:658363','Swansong','','Josh Woodward','','Josh Woodward','',0,0,62,0,0,'0.0','0.0',0,1409807154,1); INSERT INTO `media` VALUES('/home/phablet/Music/3.mp3','audio/mpeg','1409807154:658363','TestMP3Title','','TestMP3Artist','TestMP3Album','TestMP3Artist','',0,0,6,0,0,'0.0','0.0',0,1409807154,1); CREATE INDEX media_type_idx ON media(type); CREATE INDEX media_song_info_idx ON media(type, album_artist, album, disc_number, track_number, title) WHERE type = 0; CREATE INDEX media_genre_idx ON media(type, genre) WHERE type = 0; CREATE INDEX media_artist_idx ON media(type, artist) WHERE type = 0; CREATE TRIGGER media_bu BEFORE UPDATE ON media BEGIN DELETE FROM media_fts WHERE docid=old.rowid; END; CREATE TRIGGER media_bd BEFORE DELETE ON media BEGIN DELETE FROM media_fts WHERE docid=old.rowid; END; CREATE TRIGGER media_au AFTER UPDATE ON media BEGIN INSERT INTO media_fts(docid, title, artist, album) VALUES (new.rowid, new.title, new.artist, new.album); END; CREATE TRIGGER media_ai AFTER INSERT ON media BEGIN INSERT INTO media_fts(docid, title, artist, album) VALUES (new.rowid, new.title, new.artist, new.album); END; COMMIT; lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/mediascanner-2.0/songs/000077500000000000000000000000001451274533600313525ustar00rootroot00000000000000lomiri-music-app-v3.0.3/tests/autopilot/lomiri_music_app/content/mediascanner-2.0/songs/1.ogg000066400000000000000000143652111451274533600322250ustar00rootroot00000000000000OggSLI9SvvorbisDOggSLI <vorbis-Xiph.Org libVorbis I 20101101 (Schaufenugget)TITLE=Gran ValsARTIST=Francisco Tárrega DATE=1902ENCODER=VLC media playervorbis)BCV"LĀАU7{Ƚ{G{{Gz{{˽s 4d)rBQ*ǽ0=Z!B= Y@!RH!RH!RH)b)b)s1 :褓PB )PJ*RJ-ZssA B!B!BBCV B!dB!RH!b)АU I˱%Q%2-R5S3=UTETUWU]]wmvmՖmVmvmVmYm۶m۶m۶m۶m۶m 4d #9#)")8d(8H%ifyg詞 xxgyxgyiiiiiiiiiiiiiii@h*@@qqqGr$ Y@R$r,Gs4su`f>_+-3==M~8X3?xCک6tQ\U<~L=qBPgec#oWwge lI1B͸鎞֪3|"6 U VCޓ{fc0xͺ$!-q6UmJ' P.|_r3^9WnZUTTo\~{͛Ã/2_rw/;_/o+ezEp$EY}kwϤ>58X|9L1:s.9ɽ(ͳgOaZu8*' KޢL™!xoV#wz^ͷ8`˲}UgY,dYNogc#b~Bh\mZ/V/7ۿ8v{|%0 A!Ko(P =}FqЪZiW~\ՇU^ c8$Cw,iI{'hw0ק_.]0r}?Y̗Lgs5k&i߿rerzLA׃H.Mח s8\pZ_kqYsW.7SHqMẄ́)~|:Yއ^ѓZț7 `?BWaNyOþ:Y.#t,rF{ ]׹\lZ%d`Oz-ܟ*0Y@XX~^,c /6(zE|I6WaT"/X~ adу-a x$ gˬzAkKr y]Lœ+7]+#=O=lĩ F>X!bZ5P$c]?[>o#^, Feă 22~ $c[qIFc #ˬ@F_$wŲg [ ,,_ *%xAp-{۬5רBE癏>\?NO-qrXz0˳VS@z( pj>?ԒnP>e(=mx$Ltcq H89XI&n&G3^Ɨ[r(Lu0Ir>bS5ּ̚U5~>EIf/117qCڃxy_"po~ꆘ2.aFQuH\rYm)bj ?sJSHn ^–dK֗?G4oɲEbB #З->- xXX@$%Kxc/۶0wcV/=k–8OX. ž#U*B+Om/5I߃׏:]8[r`O㩧Ա=׏f\0y?uWa;<嬇Nkm++gۅ.OVg]|]rζ~]-} :ł+G|fاwzzZyGgK 9帵}Fco&82?˞u݇1MS{=\bqYwOL=ӍXsOےVUL~7qMz%ܴƾm$*qяK~}{I`$٨$ nmzd{ԒeVdlY ˠc A0Ȗ_ l`%.?0X+c(b̃~֗c%^۠%k1 =o6k"vz8XJ{|R9}6'펏w<]NGt @ Nq>1]y|&AO3!~Z6TQC/ղMU-&kIy/'MbQ~ip=\q.\xsN2Oeg8s~_j +]9fގKDY<̹pRu2gKyף_=t'[x26lLֱ\Vְ2f|^/# ^W 0m2~$,e+I?T.!2 [GFHFb/K +~l@%#I>@U6(^*5G9sըj* B~ b9F/Co|4>wspe]f>DrGZXZLmzq>}2FQ;9۬Y>{ ͼ1/Esyޫ|n#tf%dTNl|+!;^vL飸c#WuN~;G7;LWzz;gʳ9a~yzb*:OOsfe8m6yt>jt$az:ZG_.X`c{ dYDG`×@FHRH-m##`$d0BT(""+ ԇKllwxy + $,y@I@U%5fU#Qe+9/>tN~F~g~R4޽ͽaJ_oOEݵeGoc 3^0_EߥoqyT=.4_'{}>&O>{ uIyQg櫾gۅvUGO=&ky>knx3uɝ*Ρ9*|4kԻ^eS3#f4_yPRw~Yʉ0Kӕ?k_r-/'œ`UII_Y/y |I?bܘ'I ؔ0n  ;"d{I3 V9ee,,I6 T> T?5OggSjLIsUќ5|ge޶m)>!(FkϑǘsUU"r@^)χY~4Y::~DFinQQ懘'@:fs=UxtI99r\+xy#cU嚛 ܧ&wM͹`wߏ?.;_dK&N} ?mqYYj3[}],Y8/&篏ˬYM~=_tS*7sfxMnMUuȒή&5Zޜov8's~4m=^"$ƥ_ja~ҷ/9f9[~'Ig--Uw#×[=8TTRCZo=-?ܸڲNx6ʠX#SYkΗT`L7=93ѩ3=o2ԑY?g'iMS[_v4c |M{"ZB d6 d  -, +x} H%nKz6Po @mn"d7֜g6QSFV$Kry %nOšP?>AB|/˙븊s_,Lʟ~=_3C|"~g_]\3qyFw&6TWp~6UDuaϼ\wyv3jz>f_O uw=Ӽ^s]ٸzϼR1kG9=y,=2yaA>UH_.zy9J 'wLUA"$LT=9ݚLuQډfXх\ɴ_>6ldm@w-6eKFcn j}GvJ" F`[؀3n$$dI`^%@%̖puo)^\}YcѨЊZ `:}X0崜}?_Kڜ~s-<!@ѿ71<YʩOPEKzڟx;F#A^ cٲ  ݼ@& &, 0'>/d,jQrJ{A_~5l'A^4<@B]GR,039ip|<&e|yLbݹlH=ndY &rs7%S'sG6<ġuc9W1@q>W|/H|J"rsUxrs5< mo҇ `2 U?eJ~%<B*d =T%Ń`Q[\먈/Vah~zk_oBOSI8d-4y.{\HuuY r?;Xwf3/ %U/ lgI`YcQbN}NS3Ǩ9zbC7_m=_.j7sCu{e "=Ýmw qTxKo9_}hTWCt&3{v(w^YYj޼J+&u%L2.;a*ߡ鋪]d`}镅1Keղi ?'X,0u-lD,~ -G? !H [%O/kZ7N8@r;!4 9/Kү?1rs͕)jIg!_tK1fm_֪ž.{W(Es]o5]us(Rڶ1yxd I|0 e OрD ~,ȀYnދ""*mUb86 l %/c\cubkxnJX!>{cTsSjZhPsu>.ũĿtmO"MS4>vT恪צ:S~?I{οU^ԸGw`C4ݫf"/0xot23%\nn-8߷~f6NV18Ok `t 0{:?'8~\;sn*gm%?fs1l͹en.\Ŵ:4̚zU΋3oNĦ= .=j'y19sS||g<Owoɺ+{C6;L~kdC^Mv}9z?_9u9YQ첋=g𹽭5ak:$3lާ)N< 8C/gΗ:˳'s_ew9Y] 1_daxb-~F`_@@XB1`oe~ la l A1X`cۀ-n@~52#|%<0%\>g媪\UUUhuauҚ~x^?;}O7^CU͓ESӆ.ig9>^6>u_}|Gkʯczaϒ߷Z\g{fcfeA`dRwLջ_=\u_y<I4gOR|;+jUPUsݵ{h Ə@ǟIw߻P.ED&Y_+zۢs?O784:{?YTYUsE*&W .esf ]Dn^Z}œd Т1#8cG[p&~O W*7Oacﱭ^Ϫk瞮z;yy]c{KQ|<Χ9gړ98J娟WUpdF@?.\3 M.^*~awHF/pH`G-ҫ̂wْ%$96$0%| 0Q@hO[,[H*,.;@ 6Lf%ܞ(Öp?W.k3*e3}:ǫz~y=!tܹ>Rמh]Q@Òܡ4y'\.,j9ΆUFc_-F`נB|$ ;ۖ%l` Ėl \e0Kf@X .716+}Zx}K q% Cps* Tvkmaˣag=`wy|gsU·ĜsRXǛ:IO:=Wѯ]Qa8 4!;W;ʻfZ+9 9|%0D]a_UE\ʰe5"*KqN%8;q-;&dׯB*W Pf_fUԮR/bRUy:Mu?us'ީæZ 3n/cc#$"R5} [w|zq@-K2mc_eIʾdI²Xl/-X2eH Xec%fgΓS:kUeO 9݌;77rV?Qg\1SęL_`6d%Gy h^:hYTmNHu>uv&zzlFpdaK{Vڶ,7tM#_O=QgM$!la;{Cre?7ر-Y$]0~ Xd?u,AFBXL:c0|3 ?`!"@FYvU>m[²^+2r%ʰ%nWZ'CQ[1sUUEUQU@h{3>1ho x}}vu\Hq!ELpЇ&^̓Ik:˿k7 fF@N(~t FL#m~٩Qg_o,&'9{Q}Oϵ}5_w8tMG^3/'Oyw뚌f=ZkNt9dL]}==;1u?䇝g?_&fI\8y2}gj发m#}/Zl},,a `XF\}^l ?7t !$I6` վ5V.Kk{j7& <"YA.'d 04b6fShTl۶zV7lV/+[tCmbi Y/@BF~9gszdkzv^Ϗ/d/1-J2Or"]߽4beGݚs8Oy*YUmtDONW/g< :m2U=o)528Ѯ̗/_qWQ$ϾyKUkMs~I.ܙ44 wu0P3.פª/@f3j s7LS_ O$k ɯ0hĒ>c~m l;۲m՛.|0җe $c^`!yA~o%^נP [i~V Cc}媪Q@Db⿖7G^3G{)ҝ?W\ssp8b 8U?`,w&*{ؿ^???iҾu=>ekwjT0MڮG]5f׵(>cya_S]iMw:kfYpE-*"._/.G'\)9'~NZy/m<׏cee#15Y5uuv;e29sT~B`X-KY%ֲ~]/B+1 Ʋ1n ,s%KFxb <6cdpa/~d$X__^ʖdc! %nW)>d(2Y}!2bV[UըyQhU U}ч揋rN9Wi}[G\~o}3bK8%7;Nf?verfz_]\^ft9g|}U~3]j`^zU{%!nޜS_8_[A]%G"bΎ2M_Ͽ3۞S&!jK.}`eZxnI3wI=NNEW^JN!:皫`Yg.Yv3I*>{ +|/$d~ 6m_t#%zZWXOˈ"#I /KX ^~ml}$e}FsXl[,OggSLIؗy% 01d *J ~cjrDqp5t2tԝp1דq]JmPuy>Dg|V6Ϳ'p PYYY_yj\gC< ㏯r\o7 k]yu9_^'ݧr1C8?zkgy. ,~Zy^%H ܜ˷Ok/XlI|c鮫0BKM dku53$l[ L@^%I1310\21H, gؗ$1x04ͭ%y~$[XVaayv4% 䵰H%nW,_)~[sFB qT3>}^==uqdyzcIld\=tv6ׯ~{LJmY5eS%X碫uvގ_u^$K׼7+,7<|@5l T)QP(:gUUlU߾0Y8{ >7vGnwXm-±~f&zE|8m_wA;5'jߏZziի׵]gOXm?w\~bs;mV(j˩Y 1NoE}('n}}>|kS]a؇_I7o,5L} I[ּo焿'7#Z5uzkb5d-f%_n Ʋ}]%`|}a z]KȯA@Bjcl},cd9H*>lQI .lw. !!|z%<'q<@U[8~IRT}UjhOO _&LO 0+zo&sxpSaE,[Y?d`j]8gg3Ok؍/M8p,ћ:}=KoUP.o2Pk*ke+O)k躯Mybo6O45,u>Jլ+9k{޹=uC0dػ\P0ŦCw={Y{{G\ޗ1B aC bK~EȲKF/˶e$ۋda}mˍŽd,Xe@%$zm0ɶ۲}I-l?6 Pa%ܷg:e5V ݨ %^yWըvDh8Tަtq84?P pkvÌLWwJAT+>e:)zR渌K$r5|yfMȲ 0_0k~TE_:/y5g[fӻꦮ=ԃE=YY~«ɷs=窻]seײ.N m9O33y.-0ScXq?. nWV]]'R6Q{W[d2H *c[BB$_Z<,1h,0XjjO~^</`.%#U1ɺX}moV~o0%9ڐLPpkMɪ;yUreY y~ Vx^S=E`B ??^%8>E'Z%sRu̫ӲME9[9M7OԞ6Dͳ{!wW1ܹkW5Իevgwhn~3mY$#dY>׋bbȖ}?ɀ0R !} m\  6wkOAܲ ۲U,m bٖ>%Tp>V?Tr(D9Ǩ*WThdTm?\NVUEo?|}Vbd*oLU׺V_8 _iIHgR~y]Vۻ^kT0W\m=dUTƥzj3|9Ow27-uQו4ݙ33ϬZc2׳{_ye˵33׺ yO %畣x~+7fgyWs=IL+X~#OGIdL S/3Qbc52~,7-@v`ۀ2V 6 ` ^G=tܻW6痀XB K~G@}aV%2%87P Y?(^jK{hD/-Hnjŗe|7od}"o.ND FXy/8\/l'J(+XH-kܽޜ>cSόd6CVC+T( V>KER8rrv~}j9TT;I'n,$GHzKmy~dIKȀotU ~d%Dp$c*z7.,j)r$"]c6闋d!Gc %ܯ .9,1]J PxPy\9*Ёywˁ~k{ƜCVӯ[qqt^.L105T:o7\9~s1cxW}۟_>6f&IM9O>'{Y (&GrJՆ1dOtw}ᙞO=|}V_5۪K]+<O_N ڀֻ?>}<>ﯓ{}ѷ5*_Y=QklKz1k,x9LN\oUxe0 YZ%?, K,,2X|ⰐoY’Ik<Yw,o_ )xn ! h1bxr"*"OH6%lWZ⇈C %<#<@55sӌޙXe}|{q}zgV8{It%D6ӯ(6^3sj)V}ף`?MM_ol]q X,/w[ߖ@1+X’d?|$YGضk1i!0 Њ,A ܖ@ʷ, a; [~.r( p)^c˲o+]ݷ OggSLI.KHIKL`_I_]%{@B0m wP63\5GU*] !tX;ɷ|qm?h2=d(+I .>/u\um٫:: ۍ뾟F|x[ۿw_mk^5so.ܛu*y&D&zC#y~0\ ^pu׾&sHjZNty˗˥' z咽/V:֥Ne[Lsѐ:v΁/dV;NrI_oc,֍^0HMK6d F0All F;,$- ×%}$ IV 2@`clH%VT/K aI$Xv1 )3>#AFrg1Yo׋fVUUQQ5d/l&K(v"w1 gua7~鴳vrWk<;Gį `5=Aeir5g/o䯘oB6hڐ\)]绡|_?b~?󃋣%>~ݝ 9S^umWۖ^k>aqy;W[2)]Y"r|ܴK : ݑz\[3ne/sfq2m9R0Y}ܧX̄˶TUx ^iVcc!lea$Ȗp?B /d[[z&,%5GDY麓6FEHkYco+u ~ )ɣV7vGc?O_y9_/};?_ŧ4ۯ->ꭄۋ-cq$#tx+t6yCIZJz[uߜdGڄ0 1ڼ?9\^qŇW~q 'vRsŖos..^w`~OrY|5ى]QnЂ,ta\͂^8xuպ3+ Hzi3w9{6;1O/;o+_4]\9GukVV+j%~fW/wvh0@ rvWEQ,~(HyIzWa L(ΰ TIN 3O 99zfy˯<=qIBqvc03O1U|MaaYQ>LJ{./v* =Mv22Xr&,WXX1ł˲.GIߍbmoVcI[3K4wLy~:/uLPU'3}*NF@B.bR@Vܪ]AlνB^Vuk_?/_LdD)~@9xz89vȾ :oɻJc ;ҫ xw8i䌽l)?~]bo}k4-V.x|:vP/M ~=@~Z8j 8Rk8܀&~z,v<5p<xa_+}ioPq(R!?% FNvw/.4Uk?2qѨ۶LײE:ekwx LUqoe AI.J6񝻂$?, Ery* *@A>kӯ\˜gyxkm\_v|ƥq ٿ򵩜 ,@\Z/ e5ŇA(WZho^- `)o(]-*33ŭLA-nJ\ZY5pp#UϯsVl|Y.7g ?e}10m\ sj@Ae+ @߾ [ʀw,1X6Xe}X ?x/0ǟs"zyu7 XG.].Be WV}]{~;Y>|]нctM߸t~,>Ɓ@^ZO&:'@io\[/ ikʴ^:Yά!%k/]/E,[+ޞerqxq? ȯ/݄{]l6>0,N*$}q%~< 0M/3L!#s3xĎ7kNYw~j ޏ=ki~v|}Y W {0tYa!';p n TTT֌+ 7ȿ*zt"~UADx ?gM\ʟR]ޘڔYFg$WXnͤg!?g飿/~_ |@7h#{#}f /7lKܖ]a"ky~icrJ'%!ݝжB ; sQІ2N;rb ]PJ~3drX^ ]'7}(6P;uzad2xΣSS!#ԞG8'|gJ(; }?}3,չhiwu`rsC,7+3J.O|*`dR]r;u*Vw|OM4ӣM#wQx ~#;T[{2P;߸'@i`# wQ "'B16~X5<ً1ؤ^ޫڱn{ Ty878 (  `pgO}c Ts!9$\gW-x|:PqZmHe(dx N]0J!>&weQнzU#19Pxa+kukN%'8qXaθ R]݉6+?Qޱt[ZUTGK_i^>-Y %sRaKA`KT,Y;S~9߮ kEiW6Uy/o _$ |/}Q3@0H@ @Az(`A [h)9ٜ,:<aSloxiG`} Tt_]? :(a[!`J`W6y 9 0- y\MzztUC=/-x^!.y!@V_7<@tM" hYxjD[xJ06~))grKR d;7c m([e~or<ߨxQx-~҅䆊W&.~u%a~ν|Z(0WGzup5TQ}Y?JNLG<zĶy+0YcİfL]Ej^_0@/OggSLIlofd|uUfk]xu-;Ҟ)2 <( 0: /r8k|njnW}\;4ء#@n^LOOwL _&k)hrE`yo|о[1pٗIrq/W yd,I_^eq\vJozzWt  !iVeG5Po?ξM: eQ$C5ioQn} A!˯-r݅d;p%c7ax74q 6{ z"Wq$v 7RYIczTb=>5ֽ8Mr a/7p|4lK_B)1 qM왨?]cۗ@rt7?>QdcZJͽQ= n\'><)᳏w醚N(Еm:~V(9a=v=͑`~w|!I_1W(}wįf:ycх} `&Oy_Or'Vv9r/ ϵ\L=dd d>6 `XK@ ?$$Hi-avn@w &@ @T^uʶ- Sk u-2} +οƇ(}8o ީq E| Рxg]@ !`7#+ZT$*JO$^o~80C @0^Pi}0M (F}R$'ƂW%É( ZZ8#;cGLY7-#'ϑgp@NB'7GTi:W<v~&>/^?ڐ3u1g>:{F-ӣ[-TϛbAe/"dNvp[m0ȎrGCuo/R:;+?oSIIt(X|>uF3m^a/4?69n#_n.pnpF߱ks24BUUJMh\O!Z_-M]( HT:K!x<(KҵНm$D>xbW1Wϻ–9 'sn~]l~ b=vE`קBxnCB+L;Dz=8fWwa ;G*w',?3x6W_@¶7=α,Z!|X|` `>Vɶ́׾|7obN `R\>h-Q s13$jgu- xQ.`> g= ιGlc6҈ٌ |5*٬#o'uĸ3aS #*YIs6H`ZZܼBVDwY̰B^sC[ЕR: 3 ۫?$X;h`6˘Lwd{gk> 9{8?ESb^ toܳLuygIHďU@κ$콿OVHRX`שʝ{Z~ISr{{;0bRdd@aB*t32˄iwG*f y^xm>H֦Sb@' ű558L*OQh_9JșP3ıy|O ص߼@ ?݃ҭWdHC{3ZE C2SwA)`K[ICisS358j#*:`rǻ;l_G1OA歾w/2sg~m񚖓F>5~\@0[ Q9mKsO]oH6<KI?tխL-QBskxվB "@uu<X`V@-QAD_+>xu:kZi~/x59?S0p>Nvl{l;1Qר*h&xpxs'yJ}Um|s=w% E:CI3cys vX*g'_U )F_wMtxWUOWS%AhrܩkZ?Ϯnxӯ:]0fTR^_[^#!~=-٢``yFh`X̶*{m\$Po/,EX@䷯_ѷRUAmo^Sڻ qݍ X!A=/'1 u !:wNV8>Ufyz=%5=TYD3)= 4C,;~xotJ}MP_xz;ף&̯g7v#`k@ɢV sCvO7̼0mߜ&l8xsok@y7@e7?]o|{v9PA7_ͯ_mPQ@?o~#4Q.o+Lq*SJG^^@ HN'm>Y܁HVX# %7GD5V*"v?rpP[N#pF&,dޓM+NǒOurPLTe'O85\vYZ>3]n:f@uw t}[1[߆?q&3׷VQ$tk~ڠ$t5+ e:3O˩@-MN4k{Pp84 Sxp c}(HyyVK 0֮)'KmKA识Y-CgOggS;LI!YQ<9=:yĺ΄+8{]ٞLj4<:wnYby!ddv kO㗖)f\ǫOҒF-|DJa{jΛ5HԙB g[CS7~Qx]G൨i 1ctBa?݇V6I0g;w^^Oϫ?.^q1uf;}C>=g~ 6 SktV8&d܃h<~|?.O/U{Jx?lWw u@їw$/O%zQY` VaJb {Q Wg7(^Ӗks:zoKsV:Qb9UkJV O0Liu;V5ǻ\$ 7p[`>wr/:0 t]w4 9%]kHB%m{_}nm$/sO%os^Ȑik6@~ԇ\>af'E_<0$X/0iYH_Hv|5*rDU%ClUNfюz;ʗmgO2uzpdO}w!],zkѹȡ~X 4r|/ mXM{ZzsnOwǿ"']WY`adYQC0? XeAy^qp D˖}ɔ#P/'\7* (ْz@@ .+SKs`^p.k`n@OtK  "~p99htE& RDD k+ |($SPV< `R{]Xp-dz ~=gfj@~یY*@ֵٍx7"(zM 7t䆤GU"M|Nf3>_C#QWۢ^:S<\'>qGZW exbRn)Uџ=- #~*(>* -0!0F1a(\`!r@g"dA_.ʶ]#ΜmǮyzޛ`0f_+.}=h ztoj. T m'/G b& 2 @n|yP#$,}`>2 . &Ô dW/&g3mpX=0N]a'wKl]p2^|'Xxgtq20Sp8;綟2.~~03 PI@o\] ~ߖA~7 " { #7x" ؠexS ('\Vqc_(X2`/r\uɿۤ\|p7|׍=nxK@\K \xEUb&Ҹsܶ>h7p @4_oٖ -2< ~8rph%yGs8r.ỷear82)RŸ m:zl&H/xVO~r\5L H>O= \e8+uہC}0 v:dv@ 4'fz<9s=@w_M65@ѳ 6`H-y8@l0ꀜ|-wʝxs¼;Q=R׬|As1;K ˆo)nrx|0hyE OT@"tx:9iv&ti(t2x^&.Ӷq{7(:vzu<'vy, :.x?43>@w|@sx~ A(bHJg<7Y<z ~L`=#PG2v

?:> ?_|( .~w7(?xhV+MGk0@VUVho2mwjs~L¼o(zI!Yޚc s g7F.Ao~ /g1NP8 @ ܕ !]TDާ0u VY| @;@lhZ~ ` >|5W+o{&et]ZkfQ:u8 (]l?,B86ʯ<}PNnNҰL) $ Pwt2@\U0ӣ pү? p `G8A70φI#,AZ`gbHd db0:* u;O5ࡄ5 { L >T<ƗNM2@@2,yLm iNm3GLyta8 j^'s!b'X|7N>ӦLWN qyI @FBd$8y}! ^-~R@>ppMm'ً2Ċ'2Cj(9}(QyiLJě9p-.ثHh)BR>m8Swh:xv(Bxg sqƼܔLՓkB G 8._ N}z^^0ox~>c(Wɚ9v PӍg?jC^ϨF\S ԕ.Q3@ ˀy@`9*fb`&@0Lg8 gAA0įv]N{K&X7@NA~nxUcFfFs0+7ڕ U zn|3N>jqEA`fk/XN_ @5݅(kW?Ƽ x򲌧nKs.1A8Mr<ݵ b&npz N_/L ]=~@_x6=z2\7ͱro7%@/*v KKuA|&BS@||\iNR@V: QC~ ;8isOggSoLI $UBZZN9Nc]^k`I`#qe(;2r] Ѐo6Z|Elp%}DOĥ]R~:xa -Ka{&}(@tҭ@<3?s Ex^7mҟQS-)3]]? |rs/w5տ}us`.fqmZ&*<,)ejVlTeU@|. 7'x# J;q!HQA,  @f 6[08``>M#zVnU[}uV;}db{ yxb j@M? I=]n۴yGwRXEV%g Py@^]*j& y =0 ГA#1 p8zKΆ1gT( y>];5Yml!wtFZ2#. 4 Okpw[vUjm${@{003'o5ݾW xXR=@Q})Q]pe3NޕP{W_}v <$}=@z7Lyvuܓx<}wvE}|HaH)>'f׽O/A B7P3@ @6dѢ ?*hR PQD\\<^=^!۸ HgoM;V7m 383h ;0@Bq-+>o$ߴ~'J]{ŮZ張( @SYdW_nt)ђ*n~^ ,^.l@xGCYS`Io^>MU|Z 0תR sFg橙̻YI2R\B@@_) `<{0 `Jɏl` V@GޙM^z fHN 6l( w /08mf*Ahb&<_ ѹyj<ɬ|?iȋ@aM6E㖦!^Fј p18r{ J𸺁pl{|/hѢ -ۅv\q3)gi+Mi?SnSDoZNs 跬LCݷ:kv)]p^|wқ I`q|>b5 b; <=0O]0+hww#{6w{3@-+U-ZhG~N 4077Sg>XmQ'?^/>@@8~U8,`&{@ @_VKQ? 3IS64N-%rI1DWB  үS? >~: npX *_$dOgsu:׮8>S|Lxtܭ j=db.Y)o\̼.M/=w'?twR*O xXp`Ri{vK'E?ꄿ3G<3X(X?8) ޢ/Q_j8;yo47|.rkrRiAº/%!nz.TdP Ƿ`ȥy$(xWTU1(0{Gpڥ(j%'$?e\#b7_@|l75o $w*ߋvAH+ B湚^\j/Vmh*r vQ 5wXc2CFއ!>PuVR J L$:<^p>+~rYP $y$b S `SY,+r@mҿ3՛W()J۫2<{J,`P@*1uHxmPQDDAx-h~72džQNVMΠ fh= Iu@JxҸ~`aAp@,.ػQ;"4"lOU?%z\L1 &6 Q >!]J`iy𞝎{ѐ>JrKwncyj''I>[F"O/!׽\6$@?$kw8g}XpӌpmȜ{.Ss/N0$:z-a]lXa)f82d@8%Ayj mĻ]jJwq\쎆1r|8oxK85*B )Z@$br8X\)2޶{ A~:XaMOl;۟X(x׶G\ }L "o ww.j&76u[ @ts5?{P쉿z8߾,~TF@L@m zgF* *WH<e}|d!g @ |J @J >j="A'G+]|K='_2>tMqJmGxs | 5.9ҍ诡gbĀb$Q<¢wO8^n kwwpndD_/x2 ,b|K<0| x 1?ϟg?7:r8^?8 tqx7(Yo}' 36TҌYj;,2o"X w0ci/%J? Fd7LqȒb]%BQ|bg|4G(s@{,^{8f_]Br]SMl\oЭnyf Cf,,Ͽ?^ 83_s_S7_! 3o.e62_ p4c6P0O犩gCw VaPG޼O70K84T=M @2SfC (ڹ6=L|kB۔ >‹ w_ _@[e~na@ b&з-^H++@}<OggSLI GapWp_pk^ymzn3fgE ,N\ 7Ъ0 K@6Nk{&6.3~erpaلOBj\x9daׄNR2:ZN/c+zkd@r Óߍ?5r::)L CA5_NW y`3>{N@CGZCLKfb20ϭ(0Dݘ Bu `[_(b*ؠQ%yc2lu-[j]mUz[LF/pGq||Z.0ӫ ?|g!~j4zρ_⵼pZ//g< &ϋ˧(4roa'FcK*+E|qz7=$v _2_rCJ?*K%s0ʰ d/`Bz H "(6(8TyuRV:;NºWB<>w\_~J |4m47svK-xZBZM=H;vKCwNN<(A-o| ]g>Re2ʇ_=k8"l>MG_'Z.F,C5Okofz_Ǖ*X  l'LwpAX l3`!f"6X0!9;L( x !4'`t u @O@`(h_>yTٽ-9BL^G:{3Epb<&_}.~ q / T5+  H\[iK65 q^|<.`yk© 24KvvvA#6W~p6|/9o{[~Ll7^5`'\߈,X`fdkwS,P @"@<)k%Y+lF؝`^EI H@(@ ̿{ Y`#Nc~O^I3h0)m^}r/V=j8~X/PQGYŏD1m|6ўJzݵ)e`Wٛ\7]9!lLZdgfkNLcC=q\.ց̇ ~뻋#jo@o%Sl=WQStW˱yKߺr90ף]ϯu?\t-9~a7.+@(̏d 2D * :Z3ߝD@'Adw622Hk? Qj|%5,@#˲@X bl?(UTTT`{20"@$#^9mYNQ`'%u!4m ?j^7l!?GmO|@іh#TЃi1|ޯ>,|SGDd˙?:9]by*<{..:Ks9!@_?6mzQ˥lfs^<qr|3?Pgٝ|>EL+;*{Xo;,sr}c(+?[{%2}V?oPVPPKT @x(c?(`i)vXt@UVv2= _"Z^ʭ̬4Uʎmu Un Wob8x?+; }5 4~W]5`_NЕGG%P 'թ.7僟vsOY$v-cJGeOBUVߵ^=ړm@|| ٯ=Q*{B&GZB uuwӧP iQΡ俽FV 8m9A=JȮrˬXi'JK|ȚgκXZ(v!t+`Iu *o%sN b r0wav a3 _uɢ˛?f_@}wç5xe' /s޸CuYP׻?9!8P|^gիGP*~( `mYP$ 2tW7ˀ|0`n 8&>; OggSLI Avak_^<<;o4N%8ȮѼѶ_wݕCjG[#Sֱ^X}~Vx;/<7|N4O_S^E1Ek;qV'?5~|c|x+aeO>~O5Ѝ?hGjkH<祖K.NP¨LulL^eqwo y\PUP@cf>CCsh.%fNb*xt?om,{%&um?KDmpE #XiP@@!b10@?o% <zK(Be5{V77b5˱`/wSrܘm@m 5!ˑM?8_ ?giן;t|gZix䵿3}w#xL491?:3.}P8y+P9y<*Y>'5@5 t&kn{tzb@l[ @8>x- ~c @4v໗@`~,*!e Ua=ԯEV@aS`[!xmpjM댯fewO]s{k8~[M-ABi0pbwz넵v~,}^G|~OKv ]d0O ܻ~:|:s7aKn~d1!.!@N)<}@xύx% `2^ R+@eIA?A>xL0ros/+[5(,qH޽>ZMrhjm5\l.&VXfdM뤖m2s·[Nb\'JtғCMC|^V5D^)^4wt vx "s}I}#SWX!|T(@j7[{@`qFE8)uOmy3D#7!.Pb6;l5TI)=](u?}x,;j>2rs6Y_`Lp~^?&kV̹Q/sA/䀝@ G3SJIvnf!M{lUd5\d͠ί,+('SDg޳;WFjHN*MOϰ,z)m K=y ?m`m|iܭgW_ |lwYd |l_l0Heц.;HXCtM0|FUb}5gF`@' sçg!/6i+-kz\ΰ2nS.:.g؛c%1Y\: '7UYfwfNjnHvwwpLQ*\٭wRYkp:~F=uΆOSTSOx KRI8P<3y=t&,d| $+SQ9%3wI׮=Xr`&# Ɂ yTFȔ%-F6^E  PY8҅O}75̥AChE{Lq=wO_|qeo= ^V};d_o:d {vgɟL v%eoYv=X@ f" fW64LkSifw^~;Ilwvwf[zQ]Xyʇm]n.//=m),6Lf6^ bϾe&!+,/nwN]~@U9><.ZR{bqkmfQ [=~ l0;X5+"*Q0+lG +>L6nHB,1*N9 dz||>aoE)z4VA#r.{uUhӞG7ַCVߎ}X/ CB%:qե}CK$tV"ڕ=9熪x9}Ȃt;!f߳BuV_YPys^ ?Af 8f i>qNfQ_DP }ѿssKoo^>2IostNHe%)vgm>yP ]5Yeӏ6f@ MlU 6ڒ(Tp{;f|yue36oK;£aIJ$"-2!zڛ=a_+9^vaq:ݛ"+n@qڞ!_~߯r洐9(qW ө/Gx=G ?.OVTTmn !,n~]ZI&pn(.v yLYEd4MhAPX`o>3W$1 ak?[y6`Rì)6E̫`q|ׯ"Wޢ3<(u ɷw^J٫D:;S7u5V}LVieףf/H(>Y'uTBC;EդN^o5@ea9aRc寧B[5*(̮=;-r{$B,%ПT=Bv=|lw>ˏ٭@}ދ% q_tN e9;kWWwʔ഻3zkՕ̭0<"Q H~VC 'Tط@q-?Wa uvic漧nz_%R æQL>q]&ll!?]d ъ yjh/AB,ϼ2bKX~R.N'q/W &v||Hj~qOCsg׿4PT~ΩyMАcY[^ŗ?3]V)ܒ1 Z6}|w <`K+ۄLtOvvqj|/5E'8]6[+SL@WWG2Ϳݕ%&n[Pd]KznS8vJ'_ 88fժqjfˌzsPy0R(US2gge e 4?nNT22ߏE|}~w>śGdmYd<>NwvX4ͽ^O:J1KG+npwo@ x|=8QO\ @rD-!( PskٞP _B bUOʘ]f6 ƚ"wߔ PJz?n26=~;|E\<\} 0vt6追ont8M*ޑR&=K~ WpN$9/6"^_k='u@v[V%PDjL>Y S@x `XoW`d~o@EET^1( Tn@|}c d0*k:Vs4Y$Le,ZITz As}_ 3+ y Ǘ5psm x@=AP4[m9@ w0 yoqpgEs.(B"Q 18P' O,]2+7HNew&7 tXU}* -N6 U-X-Y~  1w7"e8pp!>*.nD=+^GsOEgm n?O MpH 2$jP>Tp<2{8_xaㄯ+(]s Ǯ"?+`:p<vY2lTWacA^efw:ӔqًW>On6-J/@^e @\'4}l%Iy&^』%O &{IIK0z ] !;>J -u0E\~d|* *;Kj"EsOjV9V (%xn'E1 +l s@2;`Zf-PgY  xK8z8h+'\OggS'LI <#bYfUUno^^ࣼ2 tVA_>M7.G C_>_ßyK8^|8Pլ$h|-?~ WO'@hJB3\u#-e"@c<zUG?G¼ҝ7̀~wqSHt]]ſs1@~! M+ux8Y ?@&>@s=8` q 'G$ o9 ȟYڈfIB| @Xi1d>- ϶ OWُ7y4;O\_YA[ 3Y"Ϙn^л> hnٳyq٘(&<Ç?}|=ҢooI&ӷq`S ڒs!hX';߷8X*u@wJ#+>zUvZzrA[c^<#D8|ι~뫾P @u$Cשok^F\,XU׳tU~ʇĘe(6$Xj͞>V&H/M DԿV) l7 W&xC%͂6pKHk6@3O pPa L .VӜa`ֿ9ά>"]%y.?s<'-3/)%r_КĴs<%^ UbT*@ ^mvVbL&A7ng۾6p7o#ڰO&>{WvcP c0h-8} >+tmVy[%3YA9A9i,3t{Ln[+ݽܦ iY  6Q9Gra4GQiԢ!|hnKyl60}g^T@wC]|S0. ODY|yO{#\7xG~wo;C :)@.dvs/{^_ +g?$>eʶxQgsBPnct}=;]B=Qvy1ky'mg3 a$O =MO8N`W,o=dǁry<徾3ඓ= 9._#R-?5216)矝 @9o˛SsCиWZ-E@ .X#pLPC XKZ>|w! G/QP ^ڝk h=} &8+/nPo % }sRMˣHpf03:Z{_@QBY:kvƏ@|:?l<~4@n;Es2AI;]A!/t°gojA p*r ML|68t낐 .򟺞k*]*7?-{?>~nt_<g;22f8΂Y15}D/X&|2$0e  <™#m`odxDQ |J>Yu.f=& > [.7#yB'x#`x۾o- -U Y6+-_mwz`r4ܕ@qӼ8Bi $2msLs<LYɱ<` Τti8y(~IN #ü(.\3"ZU]ѽ{sLGs~TxKIota{y%K/u/a8m 8`K$|e>ʝs'$qN6?=HqI_J%Gwd /j/rq#11a! vߴY{v_`x!?o~S>E:xrXk@J?xs7}mf¤K7Wo{CYط`79MzHl女_lvDƶݒxByuvT&#=H  ޼f5Sñlhxw@R0XTs> \tKS0k:Cl!˖^jK.# i.m@;kXn2ff~b czga`z=sZ3D!4F #5~ WƲ[GLh8ց䘶 T$it PŶz m4C旧字9܁P|М~ o!fT}V-n A̶|wIRM4ͷo}#mȹoI``[߹z=Y fk^{hbeauO U^QQ+H0HVW $@  둌 7]A8kD4@OggSTLIx$% tovk}B?BC@=KVRsۧI}:{Kfr ps ` jxPݣi;VdZyow:P >tb~|a$n_g[`iNێ3??2|rh{t}C>樹ixrһ\q*ܜͷ}(0}XC`,dzR7`5S6?:?\.  {_ *l |-2\Qfߑ XmB?l@Ķ(;TŏT(PWծ-Ճ{+,Baryt{`uYeFJMچ(!mHvx_@Йrƿ{۩Ö>kQ@c3E& 6}eX…8g s?]/RקP #?WU@ظ;4כFp\ COL:] 8DU/ۀ[- >,lQXP4{_}@@RkKDT94@\AW;t~ WDP<]m+RRJ=czZbD<]O%ow>w3,{c\I[4FE~(ʧ{܎dG!67… 9Z~m -/=^:O0"95[ q=x `|.YU+]ldc\0:_el\WO JWrV&Y9H5^_|:_j`o;NuPu]?]3ɹ hY YJ/1'f{ƗȠn8a@2pz'AA_0g5g>a"XF&l쮍+#µy*f,lp~W@`W(DY4. Iޙ[02nD<#MGtO m]J*+q H ͵j/?Ca_FW-7cҮ]Y ҃#cg~X;\2~Yly~9ApV;Wt 5`!pyMYI5cL*a)V`ƫjr}/ Imf6-; ^Pq2D/[- c^%yZJ 7"܍cB^[r _W(w0X0dB}%tswBa;FIg+o,ns;[ eay7ޜ~<@]L Xq~vL77pKvsv Ľ}L]m]hVg{^GzKY|] Nt.˗,mAଛR_ ޿U /0ރ6: aPtбqu `#U1ϯ2 ᫻"6|ɲ ӗ(уtc,KeK * `/CssU-2-;hj\}~$OoXjc^9g[GoWO"Cćσ~߇UU`@_e6R`a:mcX6&( H@H_KK h *z[/o`3)(TNֈmD& =ّ 9Sqƥ^~̿zΜl#墓N F5uW{r_k<Y]$;_XN +ϛ$-@ $Ԇ狤 IzEA6' SA^EyGG&@0&lkga`9@ǀL^qSB@R ^ DYY>_{ܡfC/9o圑]H;g4{ 獍-VQ_Z;SkLg^>UTeB^ge-ٟTɏmпbo_ V/Y?L^]eXY] thf/>Mٟ;.tR^K^Yc X -v/K"z]"._]da}Aŵڎaf|qVQX ?R!\Vx5@"x7s/m ̙tӥxB_r6V͜ڬpLL(*.|:џ9_>5d{i|B n4Uf8S,ytqwC6׃9҇;~wxZ'~zM!I@wDFBRNEz[ĿUskɌD#*虜L܏[ .oo+K(M}?@"$~r̘䜷6lmbF}]4 N=K.哝eO>UckE20 nĔ0Zq (9'euN aGhj\!mpGڷ \:dr^&'2~\|u=Fr%\#_ʘQ=[.fqƞ> >\>ۅ_4QYmN'A3+W1MU&-6s$uO#~h{N hnO<7pMOױ]oJl;{o0J`;6xG@u0qW~Q lP6~:H xXI?Ns[ƫN_ǔ~ͱG4r|vөj @>Xs1@2M> f%R;޶]R[{_7طUxZA9 <o4K)E_;,#*C-xXB; ?ݲLoc5u}QrᡶyI>~m }cy,ֺkٯ6.қepj6̼?\xN&^P\.{qu@#G xRG_L\O2453) m_=t_~`/NHHN] |TH[X_WHƏAolx3٭Tu>J޶b>0Q2\u~ž#h [ikM+e |"2[@*( _S3|׆R\z1\/|{m@ӆOM: g|7#p JV`i6)  ܼ= T$8,)f`|n#޶$ >Tgm4枳,@j (v4zzLJOkXp] kg]x}9,Ŵb#(ܪrKy#kԿy:`z3qj CD6ɫ T@ 4z?ݱgBgv7[UnO6->e$r&N%9P%8c{K$׋Ep(;84iȧ{%toxQ}@@[H؋$xZw6@41GEdSUW_OU Ne _PPx.WZ梥ިz>uJɔ?^"$. 'l{C1| F# F1w,4,=N(<~SC>,~M1X thT)|ov0MX~i9$پ1XAVM~yKTl6gss] A|{j89Ҁ8o4@%yE5Fl?yW GTy= @%icnwfy k@ѷoR!02 \yT9+` " w*z;yTi=-7c&NS*TߜRʯ/&:4KE8ÞZkDQ{g@2loss4Da~قm8iD/jS{y4H.~Ƈo|N f&Z=dь֛]ssO+]^L՛StBÿ_G5D8pFC6/AFF)ba/~oO_ݮL<_g@,eЛ#ij?E@CA`GҤ!G6 +?3j@'Ou<=4y]4mE(bmo/^|-ᰍ/G+W?ב*8Ac_nmx5|k}סM,|R}Fo%6Y. ~Ȫ,׆jlo{|f.ɳ}T^5y?h?atb _8!&>THHG |ghVxLBp6cȬY`Nq#y 1V=o>QLaUl?_~)FH>'CկmtTJ\ ?:\q<cۿaHF} 8BoZW>J$W*jFMQ1ɦ?+E+;=@az|[+ v~N&{& ?]pсdf!s>2LN|>_QD_;2$Zx8T^? 8(Xx]Y*J D|. lSm(->-r3B[ 1>r!=f`E5̲U7_%$$@fzrٽso~>Q~$oVWhdm+;bRF70y2>'|['kf26x_wK(ZuQ]8994TOaj݇)`WLW52=qswo6_rjnc~sa8 Op8^gfg&. >a=c=%@#.S@z5o)s,|Rp"F(XY-j.o7PҾjM\j XяBE"` )֜ɶg:xm7ռCQ0(ܦxZ 6N4ezBncL+Hw̯'}̌sDԵȯc{wD#lyc.vSؽz `z~°2>FEq]8 a4=_!V | b=gu>ϬƩʉ>. `oFX0 ƀ@V HcH<4; /zLl7G ~I]qX dلrZAF[~/pYn)vuαg;-apXO.ʹ+aeIFvx̏=ʋplw+<ps=_,xGC3c(4s9;xև Ȥ$GsqM\șȴ2,H(Ϙz$z=ōK<P\E)7{UOVGY`Y~\kE24قpd ߟc8+P#N՟`݀ UOggSLI|cg9:9HSR{wcUG^91? tzRාl?_~8}'oVv"80@.$\넫Ol)r8 x3܆~ǁj΍[M WIcgb><\F򫿖(*)<{6rf`FO'f_?/[U \)[+hr>f? p>xc ]^$i7!kn)B~~s|@ ZU 7P0,rm4+ Np)A+?֌7kqRڀ1H]~Xo sz~a-4g3֠W_=)y=ok-:2~x5r0ZYb8uy 8xp?I@rqDאÇxN!Nݲ)?3,}Ѐ50>ONA[Nw')G@ՉI XsAzmd~@`\@f,V XAEEE s}2W'߁}JG` 04GmT6]=cR0݉dS.]-٫M ]R1R k+(RO]S7O{ ˚m&)ł}=}fV?9St> S_^ŔI}B}X(e|*Yo\Zlmd&˪-?ʸSvhҬ!uΒ뾣xy<ʽۆbtn` ś-V42})IseU~:ɏ= _B+{G?8 ~PQ0]}ZR};'r8g%rkޛ6`X_./^e=qqi.(Sc ? @@ q^>6%m&8#LKH  7.PqgGD  ˺T<u!&@!Cy_dӻχPCv|g$/5PbNL$x \x-{o컶+Uz4~L, ͋}ٮk6"y"Ο'/vA'A Da5g"~fs܇=?bfA u(| =TμH7.TUw=pei*9{p}`yږ'.x6mVa4N*0%0 lVջDUT4Tt Ϝ͔y ^UyU(1&8{C83ڷBC7VWw Kh4SH@W88>bP[>s  |`))3<8]/Be󄦥YfI,E_o'i<^ǫ;{#Oy'䂿˙P];"'MY)5TdDfp c;;GLԟ{4@N7 4?[P5gH$wU ~7/ (_~w\oY@g=qh OU zVÉ^e o;q?}@LzހƿECxWoG`Iz0Gu EF@x8 _Pw.Yx,?*)~2h\_ }:P6Xű T3 &ej`S h?{:50kePYf4d3CB {%l`s. _kpmc) @(   >̋ ߽ `#tf+=KfĂ7Mu7kXpAx߿O݀)Ѝ~8~F hnU1Eix7&)@^][Zϋ s@f|nsmxhkP(y`m(reB',wuOyrsӴmOX㰃?Af~`Ȯ\-xZ @@ (x3Pd 2|;/#*6Qa00 !O˜c*^Q YQgy; :Ͼqw9T _Ӏ7{ !>l֯=G_ X>POo V"T@vǘy)5#^ko5L5>r,2%`/@)!ylYD{_5zT-;\pM|w5k}&#'Agp:vDyr@#pu? 4CRRF `hBfA{PZ*sMgx迲>`\~ {\|;_7n4Ug4$!ETMaoW  B3(tgͫK@}jP@ljoySw4:3<:7qB"vp{!u{>4ML) @2wdw%@.25`׏ pLuz|4 *{ <x5~``N`p xQl͇~ ;js _rd x?Cv+ߴ_ x|?bPgPR"LRVtϷxmxl6_i>mJeR ٥l2Oۂ:ENzvg}ĭ/J o! = vD (=A!rkYs0k pT׿zM?CXA݃г+M] d IHcr5(|5'a=#(_oBc=qpI>PTp)鳇flz} H:^y-~ /.ӿH] $GUdJ6۝WɃ힉ul g}PÚ䒫 j'JJfL7YP~ףi;n4ud4)]]ã?[DU꟠jT@(a6o\З1B ==)|L ٭9`?Z,hOggSLIH_BSKM[^\-XHPH >*f{BF- (˩X:2-nRsC]G_ݘ^GF">ط&@Aa- %TUsP,-z~#<>WDn} w-xcY`Ÿġ#x {{1züs ~&^l/>7g@FpDH.J5@yۣWke }*ء L!o/Ö/tȡΜ2 Ts/I;B^i|N/ί@/ѹ?b- ޺S |>|jo@Uy 42~d0Qalϕw  Z@[0`A1'e;x7 הvSv5L`adx?<1q o9o˵߿oܾcy z@=[[b+@su)MUqQ1&3Cpv+-f:3S@,99,HӘXśR D USq,$CNנEvfB0ۂxbd!p h`-, ;j+`?Jgf?.xL.:!R| xSs*rxfll8lPaT裼# /x7 ~W%7D*o_KxK~-˗_,?JNx8 +! p@O"'9yvWntN2A|u9&A&l &,b> dpT+ b@|M-I߾(WBjJPd?l`@6@ m ,@W M⣗[Qu< P xCqZSM6cu=~|7{9sw௣g+g.p7ٞRUE|gjˏtp;e;pK S>i FAmZ:29yF^woz @onW3WS'ޟ/:H(T,x6u]g-=o{ͳnΐ.I- -7 4U/^ ʻG-H[`AM\>XX.̙8;o?|B;>?PpcM>PS  : Ї8.>5Vv-`Th;K$p&8}v=YW?aoXh7)#ޤσD=^K;+ -f?膊\>6 TMN8wu?{s"һr> z>4mN>Pk&|}d+$'g_L8]G#1vK@/,_Gn|['9 p|]ΧY??ZI US$kmZPgt`| @2VDa-J! Lw S~ڍ([Zdk nhީ'nV <|yyt; aptE\oq ݝZDqb[ Ht6:J/P(wWg =}amw}|<9YZ`b1Kz|CȐ!isӞ c3=e~oyJqu "?QP<nz|5Lpd{3PY-iksȩO2ps=> 0~a\@yT`FldN.k1Uy *W^S@v;]@1> N9Y7&Ϋ&Âp4.Ӓ3 t/e (KjpiuWe-Q #YnMl߻JK×xk3?9͡y*> 5

|\z ,惼G50GhZP>< uu H!m\؃!#M0sz:VpiZdu˸ vӹ4_c\Vu4. ̞)/ ŋQXw> s^]s C.BH-'xa /z?o>PxK?|u^y4^!c#L{^wx]:%@\_Aw2<sTKSX<l=$]O3EO} 0˿- 1V9Tc@\Uy4c)SٍWvֹ*'c[W{"EcT>ɋɮ?Ə0/Xۻ;[ \Ueന$ *D2qv;VN9n/A!Hۆu}VU4؅EW 9XGo g L12?t<NFK P_`vy߄aYlNJOGfxj\{"wbx}i@ŏ@_mX֜'= d㋄Sk@nw2|kx |7@J A"X 47^H d`aOggSLI RgLs|zrqi|^5\hm3KHX78{ şmom͝` jU5V4Ǎ X ~ϤY*V~!x|ru# Ԟ'`Mr>, QA c @+AbWz(~XyW A1@۹q p\-\L`˪v G2E>~tKk7 /on?xKK{̭J"2JNx5䥑 IIu.O^ػ!x ,h^48BqyXoP+=Gk93>'0KEN$ѿly)<}<@:oV6 zxu& ˯_'V|ʅ~ `r974ZW& Q0oB+Cׯ/d8]g{qt^nnΤb,?Mj_o)}v1.LJxr>;s+l (85vUU*;ph"kH -y$->H|;[/+:\fX~s70}K(6B+K=h䡎B}jR[jWa @}I2Pdݭ]GTyxLn=Ujڻt=-pFǦqPHWo=OAf\^)0f{Ͽ5 `m~?e9,2" h(}̐}@^|ݯ&Tr% 2nm,6.`hDUU+؀ _R` V,E5@_@މѽ= N5k4麽]|u`_Ȼ?Y/~%"y1(? lW>JM,p腶٩a%2_ }UI^8P{p$^ 𿻠k;w{N`_/ݛzBrsmgt8?^KVp. .~>iU 8ș00G8hj::{ӛ\_;Z=[^X?L3spE@ ܱ۴Rp .sFm67;6B82 rP0_@Pm5[ LN߳%ܛu#z=oո@?͘Vzd"ʙGl )AR$I%]7+֯+]N_m[ߜ Oo'ޟy KVk` ) ,<$C b)'U`B {'K2l>y-ֽ#,OJ .w $,ٻW _l??h'/^.ߞ ͢# AQ ?1%]=EEQ'IR}>,jl,=I9t]z_n1>CJ!ڟ8 j xd{O~— t8B t;RP\~hgo/-{>?ٰy{m"a~8w&ri:%7y߈} W8oF| )!XF a H}|.Pʳ7~i-=Uy]eNd;9_E׿4|рWGa[F| ^"0[?T8ro_/xBt@_Y],ii6@vv@)k=Cx[s)hO8>|rݓۮv J旦 kߵh6sWLpؒo`{,jILS>~XOf!sK]ߜB@}ע "$KP@lX26(.Zq$@weyK3+$B Jyi +kfpܖ>-p,o _h_r[c.HQRK쓷-j>'=9sRUv/Nsbf9Iį@0Ӱ_h^ ݼl܏:ߜ0k 0dYˡtd:)' <. ͈?\R'QSODPb9% ZPQ\ {_72 :S]UܟKϒ!a Lf r5T-l@JfLHX?ӗDE\/m p3-h`5L4w @O$-hRX͢{o*]V% fwn,NZ%␃us1}cbhVˇ߾O>4,\7^7/9ק5ξ',Bg:CK܀7 yzwc}nr[R;EIJBNl^`)X^XTLL'&:nzui;~~6?_-4^`"Uo{h44\ Ew>t\`<ڝ6˸%m%Zk:_b405ho0l5|RSK<.'[ ɇV yk/t! } !|yC@8w-x;-`/Pa3޶s*§h{t2Lw'@T@!O 8!KLt^<¶@_ o'U1e$w)L* _ETI _ +528 vX4K> k{D7\55|}t)!y.eht J.1p7:1#h&5aGʠ$L*}+|_WÛȃ_/৿ 'v? xMܬ0Y65@"2eJ3I mA<ӞYV>] &Ch/@ o͓2ib>40h~?,pL^xjXn 7xpss[4z6|mDAyW\<<v<>Cw__|ݝ oCx;y~ a`=_3s% d@1`Bm@-w*W̕܍tsw!6H_N 6TOfO_ >S- ?y5 g* pOf eITD(pE_;Q@{|cd%Ӡ+M&TALpɍG@o= vg}=ܿVʓy=..txF~{ @m-<@pC-{] P\U2gW'{xcr SOP{x^Hf:Pn?l=8kUXt{U)iC0*g@8>2 nLs [KzF Z/ap.w5;KX?ءB^^8@L Y~|3Z wb{1nN* PXL$^lwU>HDAl6`q BH74|eEH6 ShJYQ uىs<|_m˟F vFe8 Ӫ/ƿ_x/' .4QPB9vݣko45+{9YNq=s Nv -dC%[oڈ<4ˑx{EBc8zS'.B N~vYvn$jt>u 9 _hbwa)ss̮3̫>0c֝-7BV"? IAVh~-Q4GgI>]{nXӆ(.^2+8^,"1= ȟ;W/`Wpp3+(kjA2E"@\HRMƹ06s ][@<yPW^y-xd.EMz_zm+'a]VnbNha>[l >ԙ=U2dkV8?XWc~ۀED>qHZ Y_/7s#5^|};"O^{p(*6bߘ{ts~׹?Y<Ϫal`ǂvĦ$m_Ӓ &Q,ak*1x\"՝ A vշTsxҽwL%~pjfx~>e+dT崗1Y'Q @1`W*8w< 6Ǽ!Ҕ K@ ܚ0ai9 7Ti]#;l4MD^f]$h嬘a{T벟]g%xo;7g9pOv\.bgJDD"&H~*t=^ۥm_{h)۫rp/]-K@JaL>}(nn zR!@ w{QNlx|4_,m1UCG"~~NoVߠvc_ݧv G0M^ $2,5iXFpӀ6chJ)-|dݟmhJmL %m$|0FiKˠJP7xLK݅YBYq3?^-~woau~osX?0 '|Si_Zϯ"jcg‘EtZ:v|<+I/e !I2gHCM sǍq:=>h[#!B +8Rۥx0Av|Sy-a0=x tܖP[\m񥔒:϶>.X}=j:muoNAj] ࣦT-o_.0@[_7kèb&~^@M@@Ьǵ!6W]85% Q/*hP  _(| *ov8-6I Ij/h ެ :Gx55p1GG -* "ٟ<{z|2]7Uw^X]ڶcmΐ\NOgexB(t.S3o"cUߪ C/[s1ob"bΦ(!s(ֶm2h+Yu^!|5I&?k,juf ((XuQgd pWB~Nyiy WK%؀[^]5 v\\_WfeHRQN9K}\_?TgZ'V_40!;h*̇ //B㯫Xy]{\Lї`.Tfq$~첤tViLjZ/W\L~؝* 9~s͌9%(sh`1! 8FJ++bԀ`7ҟ]!2[!kcdFA͞WGkmbԫ\!/ Zvz}%<O4q[?ca໦*("~~_ۛNYkUʚK3OV ]`4/釻R:?2$ن:j9rY`lR7On|w᧽w;!0lt,spr윮_[ч?8Sr]/hW5ni+ƞ[oRӞy>f[ ս.A~ ][1yGghlN2aWrS[v)2_?3w\`42/hh~э4n]\3،D!]6tt(Ë}Xf񞬈͕נb' >Hغf_bxGE+DPeqv`2TiPUL;0+6P3`7O~Uleg~9F?Yח%y1<Ϊc%k'q[K?G/E#%`8*?GXLs ?Ql>d0UNӦgˋ=,yrMбτώxcU4T,wd5vlYUAQQ474dݗe@ -|ey {蚕5hM0vUR&Rt>j k577?%xQpՀ:om](C.. J\UIJtL]['} :g~ 3TUk_K![_跶؉5 n[!}>xW/̑\ kn;=ߖL@w!ٓg*-s9[]sZPsj^@qp@T#& ko} ;-7t^N9a TϯcHK -rO9@K0r }7uɝ@B,Jxk!5|Co9o5|Q J],-;xjɍSq.9?,̈Lz93;y/| ;}Lb w~ϲ u Ӑ]rP@dN5MN<7& One 2@y-|6>o{x3ל}&O5l毦"͂ݻ3eFabpQ :pyY{[睔2`3;sҙk? ]TT 9u( [SS9Y zg+8$V? SZQQ͕Gx.ZN͎_GmyuP~;d@3g{xoeeb'@vdL6}) 3!//QBWk>a/d F`?r6.@S Pbiy9r,κzEfD͘aa:S?awm‘rdxpR sݎ 4ߢu+vs4䞻ޙP쿏<@?lOzМ@C@zAhWhhT,kjCc1WFh+佅 xFW5w|#u8-PH^ Bϼvr ee<?$uf(S^{&P5ct,_r|N_V(]',# ;ړ~c9̄[pxv[Jvg2Gv68.wמtO`?I_4a'hxO/A{ M@"&! hH@BoDlXw0>+wVfst*`7_(hCubsg;7_.?r7~*|0 42mRBK'tx}??Sn}PaؙɆ!@q 0g(>'/J}~){&/~|ه>t}fu@<d78>s9]2U:^'uCJ0! SO6Ke-DL'=7wNߔ QJ ue u#^5R~M`c"J l`?UV@P9Go/iwr*N+kpDlա-ȴJZ?u>SEƗ<_qBK| ]8MlGA&RF $".zfX޿`<Li.W>(ݾ[}r?z%1S(C 4ChC*Tu#ctvVo5VMy> +C#9a3`jZ g$/ l9nvv 3}Y kRL#> 4|Yad@o5?~8@ =% 诞C h 7(^JOZRgoUJwJ*h*IE4!I`j.Y x7xgp7%F HGu\;`0_ow,1C(76n8ggͲ6@0D6γUbb ež}+ y)zt+w3N`K]~& ]P/c{PC[>\Y] , ?KA Gy> OggSLIx8ls~cL\Mo_QXZn;5}y3 Mz·~f4<8WK_8 ߣoGF*_@0 ?lUyE^{H{/Y1 l@->FuE|'/HdF>s;]ߦOYfg P{_sx HK?L,iP81[:=1ZP/s gk$y`~|.ͦaF6 > |@Oٰdc$j\wr8JONb =T-gp%+] ƨ`0_x2 x@ɿ}t) g8Qlx"S1<щ@>+CQV?wZ(!@m\'ػ:=+ P͓>Iaogݞ/!x]R0ƾ9-uI dp29埧ʰ5ML1>r!86`>#~ (h~%i>py** V _ۚY~w0p&l},& Ad ~ [Ǐ:.W$Hݔcuv#vi ޣ]05g?Z^x`Toܾ]kx]Qq_ V'?wX`^o?n>oI'}|kJ|CQnEEt!#{S-+!G\୹8C6J BET @ЩCL/ [h&TSC>d-.^94g2PȄ Ǜl ٽ~/d3KiLl-%/-P(ܵ[N°*#33B[G;!h5*ϔC@89Z|?lLڱ9晚QS0_~bf:byJ4d2 ǗFgb_`5}1 *.'Gm>^= "% @N:s h1S@ D 0 QZ $^~ʍhv&μvwxeZ_X+ãG+x}`ﱀ~4 =EnIHzl܋ܣ{[K`|Rt*6w>#G~]~d~Ӻ\(+U}6&wq\\9?⃩ 8zVxx; edoYMzW~x?js8 5@PX ;LyT5X~4?ʄ&N~Z\^~< kLP!ZG|Kl nda0 "sZBo2/UQnmc =qU"?SkU&?ӝސ/ ]xP[tշbvYgYkzylXpqe, iM>-({25Rm}*VI%]M9@>#]/.y$yF<;Zb'|Y7S |wiv$@ͺm2 ֬@FV]@mh @k2PU@Tpq@xX〹 *.slJھ٩; , 8 {f7'C ,K@XD(]*+eO&,~q=BxLߤRF̓bӵcb/4,?u8.ǧxA=Tl}y?WH4_XDOUM^P` >+.HyFO?moxn7'O,_m)bPn;en$@~|,}/K,OEJE?|4~zC*|;g'@8 hyU5LQsB %׺_AC&{rx2Tt)GH;Sϗo|lrq Ns| `Q',p' f:átN{O/K#+ڣ F3i?`>pЂm5+u V1ݭxy"HrVu|rl|x28\cV~83-06Nѭgf\f3ѵÝHjW}P.n&"t2o|ED:ot0WIc8EC0W߫?~W{s3J,`Ur p'طoe5@-+R\Z.Lmo2TҮ !2 ~#ZMH a@Qc0Dy <`.@T`پ]3A8_Jd;1\)670Ѐy*;oA `h0\r7ewg^.&"Eb9{h hF<DmbOߗ7\JIsBR:Cڡ.a幸J 9Yk w:?b4{y(xh>vق a3RL|=qu~N|%aR0U.0Yh_@`+9`K=^#48Ů% ao>rq7u\z1`##D/'cm֣"uu gn: w?B@۩r dl|gqMj==ڃքfe\}<®`<]X__f.6`?\vP ۥ ʑiw@|8?Kid"|c&fn޲W즒pX%L4'zr*a/_--OmNE LMgP}64O>y@v?}efo=wwP-V `$4B lQfcy˳ E>x Y b*o"*E0~>]#K׃="$dډu~ \S Ookf mN_񌌗|;3,pAipLP83pNe ј ~8O>V6 g 8'Pg#X?A Jac&ɡTU+.S}(aLH> Дx/{{"( g?nob4@-<#]wxb>a9z=mJU<^cE`*hh yi@P܅^ l`|j ܂Gm ׾c~m2(+<yqs[@ kQ''] Ky""sV4 I(a6T' 9 .8{R*j7fNH w>0)W,A`=F&)#ApV-ʙ%0L@_򾎵Î"DqV@2nRVX-vW14|ҙ߻ZvKvjijO-oT3O߸3t| v" A;;֯edwr~-׿? \Jг@y\Bu[9g3ROP:Md3rJiA>4 ӂ֍şXk60;_]]}n%Q8py+`hPs6.>Jw JEE@+;H(+WKV#>`$dx2$q(g`OggSLI}}`rfp]x>-3 X%ŗn:^E$mcsx+^/6uS<X?lTk-<@!oz=>|ܳcT%a[(M3ŮH)hB E~]-@TXd"К Y^$DpG5zP{r*7ybj#z0|~~IuM?S?\D[?[fP]n2ogC,֬vkTC*/_ء7@  # E' @F  D޹MGAz%ڦoGM7JYݐ /^Gr1@ /2x/W]{Bۨ0@@ `-xURhzV7t[Tǃ/,[: ݸ^7O[>SA![X @ #d|>ɹ˥獳BݎP  9lR:ma}"hexw7:_MvZ}t~/ӄN3gj8K _8* @uU z ?OF a8$ >&(ۂ@ no#,Cܪ > \^ xL1-g[[/&G唦&Xz?f>io]dWa+pzpNui+QH0p~黻m|vy @>ݖð=Я %%de𔇠o[ Fk+} PÚjj~/G i *ieb*N3ڳSbW:Чfq4|xG.hd1)~Juh4@lgjܐo*e A @e+alb |` 4Lz6Lz4D9NQxM^]ѣ,,&N(w)dZ"M~=ޠf.WG^ZYp/j#BV>"Sk?psn !۽B->:<3_)9,B/9ZT~N.3ڤ\ʓ "ȺD~t^01o~{ pȊyXϟG߾xl6 .3\Bi=y,*F;t]m&j~,s`\!&27?"tpD@ע!eh epHo!YFFhԹ{S",#p\ Ti`T5g||)7#h%y{~}(Ag Nds(B#ٜw ;qؖTӐēBࣆE ڻh?Umr+@ֺӋ:f~G\|~pEQႆpc$Gpty+݀sQ/ e tqGF..FV/q8|!3O XV `}=kv(&x $0&3\%V:3,@% @DwѣYz4x:ޔnWa4~xƈD6g@&7x5짷0  h(QҠ\uBqM㴛=) {d3`q?@jQ2CN[x^!Q:9mU_:'!# NjE0,%ĦL3 ,g,G^@G|}]Nt `g 8<_@ `B |ْ,G2D(б @ \@(| &ܭ)Kzo=F[lHJ/g4KbouK0pNo./!΢AJH ~2 oB ދ2'd @> eˁzJ.ya@9"$|@ȗ#*E9];sG4V^YCcQnwCW-8gV]g{ XD27bKDg#[#tSU}Ĝv> P_cLb t&/ 4 ͵dI<¬ AŒNd~?z|g4|0-ĽL_[;iN<#ֽe^g w%}` }nH$vZ V[|#~gMRF@J[< &F 5kۭk9ƮL@6/b|W08u7 ?=l6 1ԽpWęK/!K08ie:njz]mY"jპ[c̐K/Ŀ`>֯_hkkftb/s>_֎)OǿV -w'ud/ SR8iʌˌj"{y҄NnM @o@S|K e1_Ҥ~XYp,w@7 1ldI෢4(Tc4.u( =| ւ fqz%n8n1=#*Xvѯ4= 7~}t41u<kЯL"PD1br ۙfT6kmw9g?]ܲwE.`u<ôZw $\C3_LRKRŗԜqh+o|է9co;Ab4k D~T%;]'HrsU55_;rH@+-n ,kQG0 虺ؼw`0 1/ ZH f-h]^I^H|1dV(~Wp?o3܏>XpXjp G|+E\)P +>zq.38!;Xg&P1o?[ F<@8#m(Ugk2c=԰/>;||*|du~MˢA+#Nߝ˥ReIL}Ϟ iPX}ogkk=mg @ٕSxig6?В屈n:q;ЬR  Kw$EB@7Dl#M{SثkOggS LI>@=<:@TTOR{(e3uCcs)ZHXMh8: 0F԰QQ Rӝ1qA*oaE!9cG dbtIvp 6oyT'=N꯿;~FM}"Nojff*03}\.Zh%AޫbSgo!uyj 4RiSeogDS^ 3I-`N;g!V/;&],꺘_G{.aGg (v=Jwg$ZD,|6 ~ DUZZ2»feS߳u޺.rOc$qRWi&ɣ3 V3=kdͩNr^)zI'OdB.&R$snW_Mjy1v]B3ǡ T~ l(lR65˯-ۡBgsa=&{rUϞ֘2OG\(4V~<.Z?qn>h8wn]tP& NpɝAD*wT}DH$qYȝ7/D? F==nXC3T}M0JHۿ_/k9_F|û{naPU^\/抙;_xyl1 Cy:YmV)(o4OC<3|.IU@PyQ dYrw~Knv3"{-gve焝 #" ˯['(/>vʹ'q!\1b)\=d>v*=dyh3 `QQN~kdk(-*tN%K~Bφ;ӇЄ'?0wKj+?ſ'/o<xǀ`q~Q.A }U~@2iREwJls@ꯨoB_3 1.3X!J> \3@}EkqUb3oHYsRCZyf} #Aò,W]{gw';m'j}6Umȥ_*0oA>_Lh d r,f_6$}HH^R:l/bVZvZ&vťm[?ʞxFfujO +o`O. @W7pg˯`Yc.pNpb%L549>B_|'<7/g% Y-MzY Wu:Tk[WL\8w,}D ho^|ü]9S(J8tpQT/.Vg֞N ݫ@z!c[}@E@@}'@|(. ?1Wo~ U TĂ~*LZ ʞ≸s u Խ/(~؞~Er78o6:@×lu8>ehW֝Bw1$ T|g?]^{0^P3]m=^,Ylr@Ps Efdr h `=/|c0gO /aĆ jP&KloٻV-8C3!DKL@~  ?gv`(|wow!*\;z`Yw92|__WoZ,:@I_udžGL]8AUgS.5>i67QЙ-w:| Ϲ!1v)6&4ߣ)6w+x$^04Нq*|0?# P>}pGc@c@_Kֶhk@/l?9LxӼ.@8`!UruLy akhzpD7\Wi@dϾ&A%{_j]{ӥoPZ $[9 6-b/]Cˋ>uD~sr;9P]S^jniMQ 7D5PB^1~BkA t 7 #kfڋ ^mh Z(H A@3ο>?o`? 5_>/6hׯ{\ \'G[X1@XK;e[ᔹb` bݗl<>Fi- ,O ''n) { ?vx .B]JRSyp/3(ofҀ5=I;a ~PdQ;0A|}^ 8AT _ [Q.`,dPc_ȏFxIE/@2P8OggSMLI ml`qwkraI:@GeZu>$rƆH[AiQzcxv@F~?Ë׼ "6w#7}vTh1,8Qtj&ءLVgݻܾ`\'n'C{@u_7(2e?#i[.o_ͣXv@DetЕ' -s_JtŔpy"p0U,0Y@Ӳ`(,C9I<"K`l H^^  /+*o)4`z*n6p&/gJˍ:Ls⾱?>pK/s0pV@pugJ"Qÿ6<{:.+C|@}<W9ym>\{r@  VGў6PR[HdBlnx{Ru0O .sK #uD\R@]8岁>en4@}ޓ-/ʁn%vp[߲ 0$`?]M-}i" 1 VWVryNIN3|DnIA_ />?^@3um)a7x6Gƫ]b Polqnn-@>{sC8KߛL٤Kh?cxBz:'M5i1Jdlz2kY^uJAB[)/(خoˣpxiۙdޡq6r @Z $k Qo`KLYW-,Gee?/ʳYA|] #:2iޚ̌ ch69?pC+ nxt?,@ќPi ,sU| \M P %Qqyyi wGw&)Z:Tz3U Ȁ?1c @80{6~@Ė@ $d8`1>18R)GۓT\[3xg3\;4U.o.0-j ^?.|{| L RZ>֮3WC-9+䒕i|ڵ <y[Ʒݻ(#+oπv3.v>$H I b͌'eTN@ gˁ ؁]rɸnw~x6Sv TU3 rz-<P]Oj ~d@_ [>6.1@PQB_ Q!`XM<6|!^*G`z ]. ζIv ̿6>W:?|e}|$Z*Kv^ut,j 罽0Cc(Б8,?Z#@C3&(8U?&K윧^@DNNCCqH@š~iD1MSշoNP<`y ϊCtw2, 8?|K$ٟ@?F_ |Gd[φI\ |#.ETQ^:%~;q"31;Z3781r\ڄv 6|Ԁ`s1TU 1E<Jxoخ9R:pgD2 }\9{a8Uף÷LcT+ՙLȔ\5ܨF'TN^|hc35O'p. z8@{6aŶRoV\.PUwLݾg&8ゾl{MI>N`;T*PA 6:4p| ߗ6 0+48Ԃps& /ިB㫣n9.̜@a "xWis}r=xҀ?7ڳ>/ %Mh]0ǺElZMtn?\;h<:ܦBTku3:O%ϗ@^]R^ {AF%V)4d} HE3$'X_%fYuրA҆X $9: i^c"7#6'RB M _miر*jĄմvyBNk*']>mЃfV?=f362YOhZ:{cW2NJ}w|;|+C}JX?]Pn`y} /reM%B+t$Tʧ]\-yduKyv#]?Q`V#@{޻av_P1MѸx2ðeZ4#<1IQYQs5/vӼ~aXo pm2ױs Ab}93|Y7/!$@A㖫OgX/*Qph<xwJ7J\N0tδW f> 2?š+9VS `;2^p}6t#P?_q?כ^^)jl,0b!Kikn +5O 0ͤ*_`PD2\L@ `0V$|਀#n ݰ m/XyTKçON ~ `"XR#W<2Ŏ/#Hױ7-6Bk@ЃK ^Fwe<_aKw#[3O@-\N!an| '7 }ky$ZD}Z J6p"0p7lc0@r 7Su>-,@a Jmg;mZGO@l;l0ʪf[yL`}{d a]\o ,Q~S@iMZOcSfp &c4;:۝'a:-!x>9!1ܢE]@;3ŪJ|OG}.mEL:"xH{B=͝@o?s( {:ۛpjwvУ?ÛzO|}H*(*vRn迟6ƶ ;_ɀ   ; 0̅12 Y^.w9[@e '1RyvOn xg~7P'{`m@R> (vIA# %gʩw@h-7ɔ5ݝɾ=7~}iP4̢Kv֯8  `~ ε3 Hbq ,`V^W׵jrKl ԛTm_G5&%{}[|V$o" H&c `$ -!&;#bh4%M#+2aO)މh(3 u* f~gWew!S;+oZTB$ b]ϜLiwC CzԷ5tA%`Fy{M;<՛ ~]gY'x S_wad2qwS^};o?'e_yrT*{o-o_kX,5?xTP@2U 4no X&]C(@i–>-5 @*>-Gs+XF|6%\.ek)x>3Czzǎx$GدV\wG60y~N/U1ت1K ?JG# we? 8!)'7=~<ܶ䀃@8 ><8ݱR o n=} |X {Ém,`=9Tu;>Nn9J`y`ohYǹ*FR$}b^ X$NCo\#rsVAnc[ M"LĀM{j U!P^x78K3'֙\19awxH0p3Q{W1҄@ҙ@|zr~jY~6cz j?d Ch~*w a10&wg[w|0s4@oI0>P#4QXߍ~m3\L|R e>о$r!vq;'}w7x pXz x4TUEX5JcZsCʶ 挰̫#.=,{ڃ_^/w.mši`reɥxB6gw71G_+4_~'E ~|S2O]== €4 ]j pU7V7y WDڼPX 6J룬 Ӛ*hr _^}*(XTZ+i2VEsY;\t=EcOE`9`_xMNDPț = ';&. BxC^1V[ `^kz o: ~j+ٷo },ۣ31!?wnd1'3;(0i: 3NǷt~(`rm`~#i6+ +ퟏ  ii+B:uswA"lHXZGJV U@O"!on y>i4ؕ$w]ĺ Om)|7˷η8jf"Ή~}qf|\g%݇5AQ$Äv"h)^T& U+(r5<ݩ~#`Go{0vhD5ֽu'k[]9 Ur!a_}m]z(0 b`f8$u૒'c-iQ72& .&*(d[p4 8ozo1+ ucfwДk~];'잛*/b3= _pO]=XPOϼ77|8\,Jdf&_$e{jKj;S;c!]]vV>BYO޷qd_>E3Ywګ0|NcV&óȱ'O^jMX+}wgjܖw' s\:ɕ舑 `.%C ?w? }z幡s0DT*AHH0{(iHNIN1gPQݾɉf7jN8P2<? ;PI?w̺Iɓ>)T֨ 7"؜ôu4 _hRw2Lrezʏ<{0[se]`|nכLn3 x$>]t@˘d3Y'i~Vu F=HCxV }}D ]hۀD"qL2s7Bz(-L7[+<?7_ޓK'R_$ 8MBEGwE1K v洟EJ &*6ų3>d>_`f»Z[0>m6l}>~Y-9xG  1zgh "pl3`tO П?آ2ig^ew81iJPԂu6ߖwtJ5 h>Ǫ ׂ"ARfbD _T"4s% ?7?A ts8%5oZ;j60W'js`:JƯ_^:,-%ӜmZ|ˋ]%#0u.o'OC w0@RVs.q5ܹR"ԯ"PHw޷&xaÿ4]_J]GwT-;qʻ\Xn14+kF3kzװ= zۿ`t'',KheͶuA3=%,C?}鈼x z{}~Ys45ώo}m+M& gkqdP>VY"/_pos61@[_60Ȳ+~,%?_,Ƿn:&GC?'fL4m7->wo݇E (q|Ǔ Ny%p7ǁŁ."ݱy+ n/e|r{M`npT$B) -{$Y9mQ^\2k*m xO|@!i)ȹ sb nxtrn Crs"bXɜxq| d <2kF5\0iw"deYo01n-K!/PB',yo @u!^ ְB ;Nto.m(BF?LL^q*Pq{8''iK`?}Eh0@F0y;jd??zu=)ǡre w+]!abd Pǰ@Uy HhS @Cd6/ t 0 U͈j @g%@7_7w^Ͽ=ԟ93@ViywpFQ^!0 Da 6r% څRXOާJMy)q ;p~Fo w'@;G%<@#ގO%;wF4 R[^ rH3\nZgՐu[?:t !,-OPv'Y{x>iVLEF "PYc \,~Y{wTJmGҪ;=-Smݗ-cN@NJ98F 0 @yt6 ^ O|dV aʫ >5MxqzVQFA]!tUu]WI+qm ,Bf <ޯ-|n>K(1ۊǟivZ\erR&8 "o}c+:q Dqd+;p~\ TS ꕂ#<Y[,eW-,`-t Rg@DuAz=gWpexUgdX"O|}g Oh[G۾o;EA1tw%omhNi8 A,)Ͱ.>K^=zC]|hla'i lͤpQ0]|k>n&t;Iޚ $w$@sU`*0xSz% " 0r-$ -/`b&d{ZYFJK̇4i#?~7 Kpg( @qջ-7397mLn$#D KbwiOzX3@ġdBN?Oe2V-0|{Olr)Z@8Ixvr3+>vw+AJ<!TzɋR|r\urQ]->U>͆v@6w)!4xd}&7H7@%h 9W20 ~^3J/)y̤~=Ax }pR~:Lÿ~ Sp#yxh/@~qk5`'(D"`TeFG[ x Ȅ-Gx^']Pr3 @F].@&HŇP#7_t }pfįٌZů "pr{:Ktmpy\,W=$/`_ 8u4>Vsoj.{/w#$+@-Z^(|@ld"?`.B ~'J:`[VS:IZ _s3/PpqZ=PºoT)H2s^]!._P7IAod߸Ds  ?.%I '7 [ RϞ-t}[ppn'i  @^GoA@p_'Ru^ ]l!M1ouc2?@N ]dQPlNXlfZQ$^3A\g+&MIMP|M| ;[]hoG8 @__+ /8\oA@X",@xwvay?Le7@)G;x}9Z?Qڛ.-^( `d\.W.:r eݣ{кczfF- Oq\|@:?5x$ )5ozсNS6-E|,ox>Cf9,3ccv;l"8CŞC׵~ dpUh Nq:7? & bP5 rۿ2_df@εܿqR@/`w@` =%i#(T*OggSLI2b}L8Tg:8ECEGFGGJsjce~مQ GQb+a/Bo @^WZ5y^? N=XGr8>@'?}p6/I I:B`;ODS`%n}ϷxJ)@>r(% @onƛ_ 'Z_#zzKrx͇ݢ]_:gX#GMw^}=C;~4~ZM P($\2qV|٠o0r?2~t⠒ 7 &vdUYYPao60oOZn6'Ab @^ɉC?_o yכ9z`].,RsØ;2!dtdm1<G1$UU:ﵘ?AEΡ(.&o Pqkvy:uZ^׷MIpx_m6v.$)9 ;}򂝩t&E5v :ݹ>$ئO#9DR_QU Ѕ RyCu MJFfIdΦ7C bd8>*p=C]'U'5Yh  '_0;6zS\ Kndru4ٺ"w^fCJC 5K!ӹ Jfz|7 ˶|$:s ̇{V8 RWѨ*mB.]s zz׆/IO| '|{ $pb7T2k>gud`ʒ쎪KZVf]<"f)\ 9~d^Sy3$<la[=R$.gIU Y< ~Fa G%H_q8Wopp1>{͇ۚQh@5M !tSB邇 aK nȹ㶇);PxTD @xFVvr`ja^_#v>X߿څ;^ʷT A@ tV<9$_͇wGU<Z?ylѩZ߾}EGeM򑬟LqHqׯc|>};tc8Oy=:8; ^3_-G;t=9 o9*cdUm̲fq9j8ͽuxѬ 7!Dws~׿9RS}}mARSuU 1~"߂(b.%jY\]o }ZAߨO~UQSlG~g!d߲#*}Ἤ5#q3q 6GC~sxyݨʤk1g'}MX&9=Z"@`]Prgve1U^| FlKZ49gd@-@H_xX]y:Xל9 Ot5H @[/[{8u\\{U S6ń$5}T\᧟Q1DDPQAog~ɔk<;Nq } ;4{ou f'ꢴyY,jHG,<..7^Y0s-NZT17[Ud*Y3fQ*Y6~) @dq#19>w?ChYt/TTCD+Nl(OEUåQMpz;4lgZO{ۿs@c?] \Go#HH\($ gfߞ4K6/nM2Ɠ r=oVPyx;o%Cwscy|d%㙽nڎ}sNgcn,{ؼr 'oGV' kYIcL,Sx@dA1Pfy+ \*H疂M*ST0^ "TO DR; y2$S}أ L&>jwTz,@vDښŞUɛCmҮ98k}.GW}`A9Mz&@q's= yC@ǟ3C@)N/YHTQ N~ "M@ '@% ϣd> ԧ)|=1׳6!<}h1|ޜC9`=B#38ҟͺgZG4R>~x_a ^8pU +'P3o.Qɞ8BF6FBno\c@'y~dV97G¯O[fd;vƱA6x̣ӱ=>qW0Y׎gTlڴy$~W+n ~p79X2@%ؤ8R>mțֻ=>Ga<o1 Wگ')^ kiJPb3rE˖U m ,0`BOggSLIݣWZ`c_gd=976DHGEb>+.+2ܙQZD8%?bƗ׾08wg'0#%ā$HH|_h_4gyb+~`9Pg T ]r(Gf *'92p /9) >7lƱof8vpn}.8cC|zɱ ?hV'25K @-\t|k@6\|aV1p <}ɀ(<<mqp++{F`$ģ!~zUJ9`J'_03xa$,ZVYФivFﲲ=+rkeߡ<-Ѽ<uT@O$q]y5;dtC)^ީrw.5 % J 5= Ro?@߲`-zdY@@| snwiRA ,x7n IEF|i>ڍgZ Y#bd!0: >_`J%'ߏ H6q:/7@ T=3/P _([EL*KU1@):P(d7 gDIAh[M!@ӈ{e9>a<\`tpB;a.-P$H0cL@&P~4xr@?8l|snG~z便?!N D st[@~YW#_?u7?obGJaйfC5o2 ܁NU?ߟf ^sTޭy|bEWx} K ϔ0)SW@_A4+r˝G4.3DУvW0 1K <+~ȏv[~z8;`7.DU jؗW]/uAL(_-L =@ßyBg(X~J{>M<g @\֚P=? ZykaFqd΄< ^ڢm{c^xi[ ~x5_ft/&'^ڋ<"*"$"IpVҥ+DM@J+c;EG\Pe2?^MĢwDj{*SL;Z O ?\z\}clR*_K"^M"17 xN>d?|Ρ{ˤO_@*ٝ"n)a) knC'̤3띐]+XY*6O;ؔҋ ;] jݸN_ ٱ'@>]-,5 gN=Em/?8sMΌp`w Fa ?$ؖp$q@`ҬeGV- vWyObja!?@a>\ 7ol۶ހE@R6~`^:@яcwW|X_|kBK^a y PM TE䑌$[#6{-9Q?c*[ǙR$a ?Dz3]{}o/,ty:89!J0}.8Pp0S ^I[ 9hۖ$[I%NZ.kRu9H9ae2TGBmd?AYc}IowWil pœ?ۺʹiy|.o D2`2.I@QlO~`p)x/`ON*',o_%Bp !B*Feu߷ `HH8.^lāPE,RQKy-ʎ6=_fS`FQ|nU/Yvx8)haUMK!X/vs#^;_;јJ0{d~t2I`)կQds BbICj4,Trϗ71ުT梾Atn;l/TW9YL%~33?UUFGMZg%¬ zйgWթg=`D϶mx]N}_hl$>}pl?y.!~WYna5%\Zf]QGH]O&>Ys{_Wrgruz: y6䆁[#dZ/.}ьD}BԶ(^O?2/C:}M'\`IGJ7G $rU 5'9nY}[8OtO+@^Bqz<e_~ơ͜f@} t 'cBb-0^HgVXpL?rAg2@ \R~J~m ~ k )} I%Νu1gjd(,]0C*oGE Q.=iؾ`@/QHH7\@'Cp4` pOggS8LIa|jtmojoMm[Xgl+B:sU[^ DヌcO.v1T,˵5%zV_x?W=aÛ%1w$_g%?87}#O.Г07f G (E䃈waIA52П >ڍW'<<~Ay:?i,\hHrݗ.΁lNj %FEFR+sv<e` Z=?S';rzLJ֝[*N*!p h/>ӻ'f."W}1oWv>>hݢ_U}@ T%;ob-aQ%x  p0=moȉcuӷG30l؊w`(8C/@jt84P@+9JYM` `x Z ,! ^-5E$C"{g4#לvׅ p/ yqqS$Hx8ƿhb&uߝXlP0evap=yg >h7[nPpKlPLJOFc <6X J͛ Umw*"m}oihGoV=XN3G 7@#{cq~ۡY7= ۟JV?dd"eIJj ,À01dZ)ޚ]#RРcV;w78U q(r1~[ym[rbU@E\i>e8[ෞLӭgvpΐL&xݛ(7@^ę0+lt͓knF݋S 939.H#|s< U z#) @!޽yT4t7˾0/6p䀞|P)c*ϹlX,_?@$i~x;Qy-|cK`$\ O>1mٌTpԊ-`b+u|8{𗋋̓ ?{w~f]g<ޝ܊k%3uzY1A&Ӡ,B3S9w Mm$2wW{vks9w{}2LO:^p 4Ue/{O< 9 ֪?;TB;SZ?&~Iݫ{& fXS73Pt۽ b>p833ukl@ ӏsi1w8;2f "TA8h}T-򂂤v>9 KPN go, 0`aN3Xu 1m[#^L*@=\MuÉ;?kY| _޳k!\+@4lG,UTsz Ů{+{书cjƫ{w7ty~dy$mcUQPy_w?"/Yc ѽyGg?ע?#D<\IYZr޹H_a@÷>/6mG}pVXR b{?Ws9@Kkf $v¤$ȡ/`V1lsy>.y.ar{Q3963ugC&| eg'W2|½a;.I2GR9}>'C ؂}h pYW^ -dWHNPQچ@ͼAp& _ 0[~Y5z"LSk)5.gCA6$T]󻗮o?>l25 YR|ysٝ FuH}XϺd0(d2"Id$.ɟƩC9Ꞃs`"4Ǒ-g@K k22Qew3L-ڈGgۀv7X?@faŴ@}{y-8FYuXd@0]~~l񦱗0gt.ŦJy.fOh3w8sWӳJ7T}iǬ98ϼv'fOsMG~H=X{//qf5t=Y쵲WdˍޞP/'܁47i!;GwK}p&*y򄬬r>YGN *+Y^kjpPd}z.zzy=@Y̲ @^=PQQ}ZXƶ,P#){`ޔYޞ8Zmq%G|o:FGYNՑ3 _IOggSdLIl^PUSU;===MOQzY5`ҤX+Ն$9I[{ri{cc+רTF*0G+ךr 9K_%y3B2-lYUMuYB.a΃eq{Qsg%n' ؿ[J=vEl`` ?srXevU:YD;JQS@UНZ)F5R4% 5h~p x{ȫHnБͪB4 ľ5=}b]<1ҵ/(>N:iOKnxۀQ0'9Owg19jT_z_t_h=.r&}HBp>.+%/oj\gOCzyHv6<koMAb1I$N:^E]^l2%|!|'5+ߺij'P:v)ֽ돎FPZ,#YQ"( ,˲8,p#,#ֵ ,_Zm١w}*^:#˶K?'mEH.*z3ds[q2K P7| 7@oT iA$/خb(w :3z+l>3k!^2 eB}7+~ y,m|h8,{~mx]0e'?>f&`&LQ@E)1ǭ ]ovD{u=7\']wrޟEr<6 4Zs9Y89 h~&yH SW*ȽRQ8 `n/,m ,Љ1>*{YP:߷k+{!ʆw~;}8 (|2g K{/|x]myNp~@ K0"_yڻyI2s>of=KR1Ѷr=y gn n(Eg kՍaATUQ]jV#twUלe9CL\X6@;?ѹNX)9Z?n,+uD.H{?mpJ/nX!&ԛ40'<  TBj5G;Mc9댉CoqU=p _מE>~ \%`s%UP03MHdbPݭy@/;wx;ˍ43Fl qyW&P iYB[kߤ\.tsX q\-?@#e.xxrx@xEc(%;$Ѕ~5ֺ_ė + _v.ϡ~,>k6ڠ+@ !2̸_ʏBE@v k;ӽD"m'dUm{F!+iΟ6dVOUpsyq t}N8 9z{3LCK/_<ݻ \]SYno @ǰO@26AP] {9 l+ '0<>H%B8% u ^Vp `T ϐ"Lj67Y@N'--E$c meON s^epAJ9=AQx}mRh`'t+]׶@[ڐ_y@JPb31Ӳat"Y[ƱG?v5PcwIlCZ)kV{j^.XTU]F؝+}~`oOU%;H`CI5OzI 66ﶄBIqu ,N |FG08_3$J8pUK(9( NpObPAsk4te,991E~ PQ G,z5٧0veHmt\~5y:h.G4` ò,H! 0Gx{O~_rmQ"g"r޲aW[٪/UҌd|m'Y-d- jpowߺrǥDEe_;od_I;38,kJí~{n|>kg`P g;q:ICmـ0"7O[1Z@}#o|;Λj?tڸOߋ(*ͲLeHe l̤{՘kǜrԡ D3CK&Բ1 V@}C};/I V \uGNl@F ͑l(jRy0xj@",'Ywa~3]\.dOggSLI N YEh[__9k)1ͩDlwַ,FՈ0[qZ:֭:̃O{QeQHT z5/-/vn%i窥Tlơhx^φxP08w^//t POdY"JnUr~f(rmCCf.7SU̼vt u|UͱN {Dzs:QdSh@~y/SYDk:Gֽi`V8cCP>BF))~,}#}<*? +[HZDK?lyڪlfaJI(0/8ӻvO/K#a1+j05HH 経]_} `g.B(ijK5 6smXb(ǹϜ9PyS 9ffj7ݔŌ1Y|fr89f>Z|5Zk͚| g*)jnAqD4XyIdD0$aELB+M0llPY(xe'%ʰ{J&2^!k %u|pysi=(pc+c85aпcjJrnGt827j~suf0=ԙ=tt9.âZssͰrpkս`rVa `K$_P37,3-6`O1@J}$滬,AwUNg;]4G P!c/( '(҅a1pa|_>Bk7s 9]~6ܬ}xD$r\ϼN߇A{Pl>eG˹Pǽw y͉&{&.ϧ`FB@FWy?'W_#t$b _ _D,KBgU(B L&0O)?IyxK[[LNKW) cu-|+'wKP3U`͂apl& םLӖ2J!z@8EcB{/~9Squ?PYHqڭ_ѓ?bs]@LpljGy]ZݟDݛ͍ɄL\g2S>ռ׼t|o]7JO͹S%]W2yrO:b^fLJs Xg4@~,Uj_ ;W&WE? %xmoax x@X ՐNiIpW.:g=pS]K/|XsD<">DΟx-}9$EL!.99+ۂc*0P k%3[(q.jB̞^U*m'|7s!OS+8@f?Hy>]&4?vx&7aoh-8If`+hz 0^%l\_J_+F`>&!,zss'~|(ys| ~z `^xh} by$wq^Qyg5ڻ䟾WlC}„+6/@* dez_~/Gm&ALY+/?<PL'9.}%INl\E2|/7]Uxx @.?N87L$N20!D$8a L+CD">u44rQ0+noC ?ok^%`my(hp8$P4`fg۝G+WT։s\}1?DGiB0ќpN Ѥ@A |o[dվ|` l)f_-{͋?~zRa@7O\9TU7f u q=,<J XF280]x) B^ vG:2NĂwpOɉ~~pa'^]o nQFQ- X1.]^2&re?sd́@PrM@ |R,˜{'z$l]̞`*:'껯S78ڿ8Wlȏ *O!?N x^;z/,r_|*yLp‘xH[Nl@D7{$! 8y? Y ` p>bgGA&uWJ:M跐,gF/i\6%ij^飔]р}=|\ XEC 0oy/ufr(!gs; *m!-BE{ݤPX\,ݫUZ;@ wÎ:I7U퉦}`~ԋnG O__\IqUl泼'~#@{?ű7x 7; UZ/Ų Xh0F!䧔 ^M#A`>)+9~h;:; ds[IyjQeK\8cTqsE˗. v6su@tb^{sj]@ܣ|;)ųrxW!oS+ ͟CBzef y0м>u}P|/K`eL%G:C>{aV79>?)?ዩ7pr"`n,l m20z-@lD>6||,D3S,^ Y*) 5@6dަ/qҾ"8O` d{J^q-nm.m0Dd@ $0L>޹lCQiY$$xrU|f0X 8ndȍw 4-qk rz8n$žx ؐY%w R~pUS2|0q4A_P9<棌yŌB Dz*s`y8MA!7u}_Ю<8233`Nbຫ%99|w2 P e;ax%?T96hX1M4pLA@f <>m,W5Wl3~GZ ieg%\s.?<4K1op7WX>C@4mAvDrYtN2;uL H``?ֽ ~1#<@~ʰf |7i/P>T$~e;z9_Yy-c5N5d^Sm~T^D||5A@8|O폆m@҅'|hR&r=%DzеߝL ?;z6@sCA|ɽ'`s>ELW̒y~ut J zT%|Br(/ ,`A  ap*(b*@?` 6iې8{OggSLI"Qo~Scumb`sv>*&?$ O̊@NpඍuuΓhFbXB g 9HHBQ Xơ*J["ZM_Hx_+XVP(v\[nR w@i% 7@_s=r}x>f{_S,?T1ykry&\ct0gy]fH2é:ϼ^=@&q4K*g@?`]Ժq26'@7̴#I%0 l{] ӭĐ$|1ӁVX`2<`h(l޺mR_+c$;{( 7~}u5iyܡ9o[rl`}|Q8!8a%i#"5n_N߾s_<2]7hN ߃@U|[/zo|ߨgXic"^{ty#蟃 H.Y@Yu6>ޛ&z&ه$}KS_MSPqy&s* Nrt|X/i%mpVی#bBL=-I'B l<9@R}5QQyߦq6|~Ȃ_9G<ڭj&F+xqv~ ʔ7{[{ߧqNӿ=xk%Ww Ho8 / Z9:1oar {ٷ ǭ?k]*Yͮi+l}d|vZ߅pʊfxr޺mśb96]xn YMyjV@@\Ǵ\5do G8^E\@ 7];2P$|4B]s6@-G{3yNoi[ZP_pc+=|s_-K@lqU `\&"wcc 0awEىx 7}5.!e]-/bL(˸q&qDԊh=; 7b_>p&VڤsINv̦.~ /[ %P4aϓ~mi(O_"f߹ݻO ~7 [Ǒ@ucyS 8P@?08|?: R,1QAڞ%\Co , "l =b esT~sh &5}3F~᜷uYc^/?s ^.8ʢ|"9 NjOR_fG9_o}sOX!ɸxؽ[ʸywM B(ز-3O_ BQO>~ނ$+Lg/?ͷ|'󣤚_d^jʰ^Ϭf zw[  mE$VSk!m8~L@kp] 0)Mī fSt9*oDZb<@\F/,~LHwrg4Z$r;֘.O&ﻼ+~ >X8P|wu( xRS2ke[vmC6w0sy{TQ\#>vY"BP8G(i?9|4a@NM'ϏϦ8 cU|Mcl-` 0돮ABsX.(0f t+/#`mU}/!`@dMczf1yQnlf|ë{xy/.K4oďW;̹*ps5@`9֒D=9ބ`ꥮY}qeLrQXn'h. 2()!>_.Yefgj;?G4@;;yD=t:; @. [Xٷ#r2>g>I!e0 ~ |,{yM}VvYVE|,~So9KZX_t\-pxoGJ*T $^wp;3uga>ndoRx TO!=C?MM_ ? ˕w?{y/'F9>f+ m[^ }uTU׷( Pr|:/T7W |@ϫE;p>L0`7o_~?oZ. d;X10ڴ W~d~Y-ܣ['ie@@>4KE /vy7S~Q|hD-!@2ذ/݊ ^ϤZR_)n\(GmKTjBι5 "o5{gm0$P죽qkZAKseao_r`[w~| e&p5FCGwh8X]DLJQy) L}7/pEd@~yj x{& ȟad(}aD)@e@zG6cIЏNl^ۀX|}P >i}];%±5">qUiw۟V?%t iW \W xDMnC-/^^FRL^Bl'4S9s'3ii=dǤ{áP[?ה¸d<ů_5Pn8Lx-W|};sm~ԵbtU'dߕEmivpf=xtwr>o$ǻHھVlgk# $B^?G6n$ad0?t _0@3g Y4*vƒ1('x_OggSLI#;Ⱥvqy~vkSUV|jѭ=@)؅r0Į'ı_ T|XSH ա+m˄ح?dқ~2 ‡~f]@nvྕZyB{YLᰁ( gUjT.p#@ss1dp.N=l^45i(#.X@ GGPMu8$j%!,!]  6>LT`Y mP$'+ 8d[#*{@(jX7Ϫ$~Y4?g/ǎx]ŒFT˾Xc7E$ 胆Ux.뾋rm$2L-(6O7@|7mgHn Ph!|y>4 4q*a7NO1-3jG@^ WWn՝bws9,LoYIst@0{iL,8_5Þ @i5 X@wm @/ [QPC( & =  @)/$Ik{ZxKЙݹ`p μqf?=4w|~U 3 l3sJ5i #1<%ʠ13a^>G2/'?1Xx/Pp˿T0-^;y'Bϸ|qZ/g8l/_Hh}w{:9 󑯫s/y\| zP TiŷPܝ tj8N^; 09k" LVJ'9"I-脡 ' 5/ f,`}3kԵ2a^Y0@Mu -I%G1@T=k>- KMo}\3Eh gR@w@}pz1`^ߕNQvyzOۧLwhrNWˊ?X "߫_b~\,'οu@OnN@0O,w .ŷΏB@ 2o6`}@Q@%w C&0{D-""~4"|CޫHܚ%vQ, ϱѷo)瑋ۀ?Ҳ|>V:̷KUp]g5hr&:bEfaE\O"?]qų3ϴ+OL,\ٰ=nI/\N͵pj` 7s[tf4m][.`N}WwaUZDZе?eLu;u1zI!X(`6H1gH #?{wB5Q(gɬ`1@ TЈ(JPT`?ƧR[>+B=\t֏zu%W|G_ʧmFn?n9W}_ oZ[ ]q߻~S06G8XK/y;5a;~|mWsov?"*d| Z[wV۪]-꼘ۮq8(.~E"~+ZuSϗT_ PT>Mʘf/5az'bN'pŚ7̿]3\bś[sx@&PGw16Z:;m6d:{.uW8ӏn`G?/&դ)<>wVaLkj*]n<ēKBȣҗPKy.ۥd*9>'[ޣcZa&޿}/BW=O{Wyl%OS?nzFpG8s&"ץ9ۂ#2$@8O44QIe@ss_{{줆k(F2Kb ۭ[d"(Em5Ϸ gg^_^arp>`, ~ĩHT ģ$yRbwϹ*}Ke+xp uzg@˞9_=:#&EnN%u;ꢏR(9xzW@&P+@>$-zv_)4(sY[9C~|Gsq˻pJ]8:4o[yzۚ և;v<H] P#LTlk$r .oyk_; YY<~F|+7@P| $!BI"$ ~JmEi^G)DgQ^ko_k|aWܷ_> ioqW^_l73m}mTG77cνe^uwa/^!۹[Jξ@gzB~="ʙhjU+;xhq~XoY@/@@m[?vul\,v_\\_Q0/T@-5NŪ6>c,EBo  pD v2a$I XS tS "1nE@?k`5$۷؀$0^{&7lΟþ5{ )h,ƿ4U{2| "x^gh} Fs}G-TKjRu`<%h-U؃O]qU/0|\}%2qh"x qdJHBǓi}[&YP4:nyż7?e}|6 yY`K}YObAǥכ/%.23'=)F\|}> 0w^]*! Jg8<;ߟ{ǁ$YPU`a[T^$kd (|$TK+, @ U@OggSMLI$hsueiUnN1m{>#hSa{iJF3hurΜnx3ЬYo]\%kFo;ۤܕZ/6l9"a&~CV޿jdͅ6/n ya(Om! ]+u%8*ZW9`wb >|_jzNx);ݹ;Wu› urϿ*!t w?@$ʪQd;rš>xg/l|Gw `17VϋC=5P{~cd ouyY$$5ӧ~B ; q G ,6_{5@5SL*2LHnN]N(;=Bo?e|Gq zA@~A[Y l`x ۴DЂP̄vNE?/. . 7\x_3Pbs ?@#1HɁylcM >Bǣ~E-:?J۶^΀[+"$xy풽9 qui1 v6eCDnYW@}g@6߿1dł~ѫeѿrq: X˗^LG'jU;&qoB* npem2,ܿdue@ $`h(X  /^ځ-`?`x 6k m֨Ċ -mn{!8+wٗ o)X`5Xht5yy?%3Xk{U0j$ 9Gz!՟ysK8 7?HLh39emK+Щ$CPnu6곟řH'?OW)EFҌN&: PUɓW+'_AD \j|]ST<9xO4|/ /9` @6 ǯ3zz_Nm`0, 5 ;3< @e/@M<+CmB2^h#?޹][ۅ#1؇N־8-PfwM?ȶW{/Jv@~ jNxAt D$Hdoy 3Zw~.?}0>K(]:ACeeEP9{(e PA B 03w?^uE{i>r?=Xs/{u#FyrX &w㿏4u* Dkj~1yyȯyn~5T%\⁊S^={>E>6AT\;`c$ d@B-l*Ɛ'0p Jq ;%KAP&1M*i jp}۶PXD$ʏ"rN/Q@i 7@ԀgY!\*pCmJwrRgI1Y?r3eJVB7!PJ tC\!h;e„@Mk{Kk.ENj~@d=%tR 2L](3gQhlcY'+ P9ՕVF}9p%y6S{C9q\)7V#qH?R \XO5 IcJD+*| x$`~~W `:e &寿TF*APx~ݕ (:{vȌ?1_9߫[ެ}xqQ _TEOMP]ߴ7!|f,7E͌@[&=-xZZ$WwsJ?h/[pBzD{?e4):\9YǑhY4~ij~@Ys׆{x 7{h7C & n8p=U@DL^1uhDUgT5V{λfwUa[ڶkE(Cd oh.gJd "v~?.ޛN@z @M_cPU,`EUK2_ÞW@$Lݽj($cDyz` ~v _  @,Z?X aap+ý0@?\gFAh`d]%IiO/~ i^B~Z  }div팖re@1V.tKGϫèZgfq9ʤFfU&?Moٝ%wo@K$/YZMqrUá1@G0|p&n2A~tWFh(2@fύ)` е~ʦoŮ-hY #FV&}j2Ybnp--/<ٜUSl-Pv^|w \9(8b_,`;TYBMx Ҝ,`%7 .I!3O4%@@יJjj$C4YIˌ´3nvB{gեdɎu?15øXYxiJи]McRo@&0.!xOggS}LI%d/:78:IJPylrociSb`btN:1r,ˉhF)*w ߳-̝kX3{`67Cֻp&lF݄"1! L8.w٥-E8Oʨ 5BstR k&/1 v[zڗY/+۳ܨ{pe9FͿ^[[~mW1}TtKS'kM_`*n</Z—q6xs|bK=4[?@nx(Ӿ/O=Գ`q~:pr{<6_;V/gh9nah;eoNy#.o~CO^K k{Ƴn|f_5Ă<^lةg0܎9`+^2eH 1yuz͟S{x@W$}e<,y~y:UG(X|Ηa^yŽ[ ?|5۽$U- 0)Ay͟'qC}-gtI_ъ8.>,q ٸ &Y;D@M3RoCY5pOLs8Gǔ몎##&~lM–xp4Ͳ-3UoQԚ̜Yll|;_xꟃE1Ȳˀew۲,vs*?x7*b dc)E32ʀ(r(|F/Tx#.^,X`@;-575(>aG_o΋ ^ے"?.P/@ŧ __"  xbYu61e s\L-+AW2~=K.o %}] 6Zlv1Nb*;kin5[9NЍG{jlQO} ~I@}nע/h*pq" .`>СLx7O WE繲"(cz Tל\ Of$8L[ #pud0ofa Q>u+ \X GIJZwY4fG>.n7};C|oؗ@x[}bh6^Nӕ׵I\=?}!< 495.j!7UX%89o8/|9h{is)0,r拫}>77j*`&jeF>=0;0k@uuhu[@!|}<Y5?3/^5 @-B!eWPT/H@yi,< /+ <X4 @8 (>jaW"0&=B1To9cƒcבnP2k j'Ho@`r@8W춆|wX;TnݯOޓ_--B;0z/}O Pr#{xf)†۩HTއrdUK6sKރ B0nX2` 4 W0 1sOB{;DosW%o2Az߾ofE*CĒӬj!! rIم( ] ^i1jYsMgoL;sVD9|ENL,z\ Hr0_ދiTqWwzq\]ޝ;.= o-ݩv TzYi]i? `INL&(0 @>2wES_ dU)uaC`@h#OralT( 3x7q/ƺ97~~Ae X}(tb0N,/Of۹bU]IO9ǫ/Y:|f'[YJ˓ ґ:OC)z >\߬J_-P&P䲾}WyD[K49^ue@$tZbx[}OuFQ9wWC=Z?tM@K jy@nި$|j@e hSGPzpMNlr_t% ^$NOOf΁:@5  — %["0 b. eOhp_S``C޸܃~#ᷗ`AIp(n@mc/$ 8'Ir7fpVSm[]zRmn@~q\21ȅ/?@(yQ 36ƽDOo&<@ .sIa2ϿX}|`fM:|@l LD@6p݋tcw)V &З˂99< L+^l!ɕO;hz#+}cѣi.'4^,X'\56/ B! ģ`'%1cϺœeY7xP>K.wH5@&O^Gyw7 (ĝT3o jᴜ&P]q_^W8Ŧ DLoS1@?&IK7S^xl49;:@UG%X?$ [G6|R.8VE~Qox0@>!+p@[BS@҄ل ȥWSAHNC?n4?ns.7?}܋ Xo?:͏ q]܁ {o;(?hP{Ggz2CҷKz(Uphaߤ`v%< >g_˩(Smݦ9 kv?(( 6O%`_" tsH7[ N=~ dyp|80SfgeaSd2X2t- L/2 @_1[^` d_ބ id-u;:0!0 +;Z`o7Fna_hۆo7W_,yk ǚ[ v.r@35Ϛ[?aŹnaZyM+ LJ4;߸@tg,8B 9xEk|7I84S!k~Q_+8I_w}#xxl%&jK>+D~].`{r@O'hr0||1 ]dž@4PDE1O_ "Qh@_A`+OggSLI&aP8788D?8QCGG>8m`Zqgv%((PЯI݁6pڳjGsgCX[DB̷=oQZ3~Jswl# NޕRjmفy]J 0B><]8 1[KMvHYniPP54+AL ݰm`R8.hzλ oyU9PUq6koXȝ)jff*PULs˪tPo o@Ml2&J XpsҼ 2bj忛AEFvCBo6MK[Tikys,z3Lп6:{G+zU~©<K1-ΏIzN37֓ &>vx9[1Vo/u45+~FѶ[kpϟUyt?<Myc\9vm-;7; 2ߡ~y{$4d[yFW%Bpg/xD&2WZ_1Z CG7aT`ʵ0b1["0L_fr5kV1 ISU5C6yL^ =è着Ȳ̛k le.o_ ڂ1`$~4]%= 0ez1Ƀ?e 65~eZbwDGV]} tޢ%,c 9*Ok汴q7O_osܦgoG9s3tÿT̙A%+讏~3'O7׿po7Le-&_}3i-}53 Y_Iug d^LfN!6wȷ6jf){E/@FF(hy{yGjH^FBcm*VE%f`J|z Z<Ԋn%Dy?g9r~*v;sI}ڃҭ@RIDuo?*Sj ;7</dכ;yi˿`a5(xB^Y.|;+no^ZXW >}o/pb馘w;~yaPz9[==@^=탭QUI1$~dftN 䠪:q;8WNRkPWrQ^Ī}p!~K+dkWs=X<<yVp`Jpۿ9 tMy}ש͇<g:#w]C 9ӕ3IX, yo_w3)Hh_~I}o<'MS>ބ7S~0?3{qMmUxٮW̖ 2<̾γ1LPT3z읠A o=B;lbt0@V4Lۿy~qa ,%_ F@;%$o4-mĕZxg,ևMu*PpJ8蠿p;yp>];(R@Bi91Kc'/B9kԐal'o[Oםw l 2Ͼ˕'~ݫgzӇE8KB|+))GK`;/$!" p|4.᝴7ߔӻ @?ӽ r`Z_@F^j? .6/{۠d-"Jgdx:`?da6\! '(. > N l@u#QŦ9J~x'@lpn-r*v_8rߘ7nj2)m|NQ5$5뵶j̔wo~O)eqű?8!p,M:~f>OC8@i -xی*6B'_0˺](307c]U5[ڽ4즀nt¿g-} {G S5dWXXV]uÕxPΑ{Wvs-dI(xB@H(TH|SQTQQ^ i"@@,E#S)h(@>=g&[XF% ӐylEXӧX]M`O %ނsΡ"RT @k8T%ܲO싓_vwگ -v<Ʌܵ#/^{B #υCvkt ,Ͽf\]ϸBlJ[Aϧr/;gmڗ 7W Ś*w $Ʌ)М@1gsAT@O40,N|7eMJm;^qԤ]r1x#ȿ4((PT6]<@aѩdZ CP(> 79>b'3<5+9Xk:>uNٜ/.5l@4W|m E@yȼU{+o@6Po0א|M2.i0 啒g%I g

m r[|Tl7?Ka|ovgl{*wݮ:KoYz5<](ˆ0M3WEѪ~0ϵ(Ey4P/_ {@z%~vV~`jdGW@`ohi eP՗ @ZύqЄYOggSLI'j6{"pwv>9>;<:?XMN<=JIbZJLQSg^j;-|f nz & {rb~W3@x/ .k`mܨיY hqF ^.5ky(<}vgg)/#C1eO-نr]hX뗣n~~ܪ 0"YQ3Y% @&DG{4x8ag+(q&:I\@v;@v%UJ3D If27{UD{5` sDt|3VSz p%D~YUejP2)^Hk?\<^-]ޔ Z<%y#QO{7x6Ec G*)l.zOLOk1]CM݉fxinrGEȴ41?5_gW(X g{64UR sks\Q˂X>Si'( 4vwUGwl4@;[6?@;O>"P³W`"'R:M\!]$ Т 0"LPtZ:T+,}Q?-?|5jpmO 9kqؓZ3h͊h_oP F L6άi,hJ~}z7 TbXdRc|^eNP0ׂ8#'Zϒ.@INp'itJ;'Vʢ _3TB~g|rҚ5"y,Yl6 %[peRUG}&냮N#S>u|Z03g C!}9پ lFHĪ#kaZ;Vo6o~2ӹsòzry 4!&q(eZ}u`̱" w1LuUev/3*M c1 lNu-\U>*>4nѾ1:"ܙF|_+ׯQ1//v-ׇo 1`?j۪ qԬi?^;`zv~c5˗97w7 }e t@xՇDjE?,ZߣDj#t`mS-]zsyK}*Ih{Wb|>{C)S1 c[GƩ /g?'w{;7L3>_+>@)U x+ywr+qn[שѵZ[z~^GS7t1%S2;cx ZUjГ|913\{Zu}'L^ry{.Fxҹߒ-}H F 8 \h.-vwk}prQSH%25gp*; o'^=i/h=eb9EW]f]9fM^k-\䷛Ks\1og|mUVyyA}Wo*Ke]*\e~4U\}1ǯWTսyő!ݥk0CфbUV<2y6=Y?]\C dְnX-=͎60ɋ'dy, 2H_qyj 2{Vre2z|?*2~Σ8e` Gf+Jp5;\\u$ؒr#fl7>WR1]d]+3Vn>1/mVB^׳?t8Qinɜ3Θ`3$]*S;TetT;};95ߞ0~/n(֪;Cez2wVNm bZe)rzi쑺^:܆;q  / 4d7"{?X_EOCGFcwg%h?yЯAi wEnF}8H5U{ <[}~O |;V1 LNb;{sm~~/]:oC ${<玦..-/.]=`f~8 Sɚgi>`Ww05$k*@wGkH6OG"*_$>Gp@GUQ=#sLr6 C ?eS0P޹O7 >BʊDG7刟g88|@&7?]ayK} nU'5jErۢ {}m,Os`Oq>Lմ+ ڧqsIrTo;Hdyms)9 o-v]]Hu>@G{;Nw}E;J"\;I75X.D4 /Wvf+ tc`mkQ`:MX`3LA`>u|jbW_x/y?P@?'߻?P a 0K{% H <]`X8?, @[ @@b mFOggSLI(01khcbecPZ=P4bje+'#EڥOV Zj?""/7 oLYt@毡P3=cHW)_ƌB[~^s g4̲@Cs90'B; 7 pņs+`} -ϓ﬽!nkG5>WP8bWF<yi 0_~8Džzx* . +K䆙W P ziAR V f (D1< @(-c>\ЯliN3>oD8e@}|JKl/faÀF-^IҶFbDd ٵW~lI@d^в&[4]CQ*uC~b3t;rtH W1ޠYvf.ivDƴ"m U '-?+4Sg?p_8*I y6Q;_|0/NH/k'@p:+ץ PEq={µ@  ?aC`+QO`2@2>& ߀ &P+"LOn55{K\%g*B de&HV>T}{0N'LXzȍ(LNk 9XWW !]iCPDwg7U_JqT{K<Zhky.4#3A?WDlȃ>b{El [aJ} 8 B|߀%:"s&0g=`@2ywaE:ìxQ+>|;aj. o~"m>DjR.Ѐfi,\y/,NC>yw=QZ9wBCYeـHl!)Z$TG\Am4RV>Ǿt%oKџ/ua:Ox> }SB%Wq5 ?_phj_LJ}F{7Nq6wNv~p9QtܑV\nH?&*{Vu2,H>tj@_ ߃# :5$@_;H&cc.a8l,x (~% |6$ !YE0KB`} `!d; tn=@5>~@ͧRi\=^,SqjA/PS`~gxdŏ\I^|9pO;,x_^ K({/v?"+27rlkwD>E?3 Sfg^0b{۪BjiH=`(U<'!\бy$X.?LD>U˵k khVIw fLJ_!  ;(( aI8@0 +T@n< r~@ #S<ީ3QAYFV g^x< ?|TK9J{I J0@;׮Rayn:cdR >B-Úp| 2.kPttUځ;q@Cxh@,vdK>=Ʋ~Q>^뛙3s,3{PyzhN~_O`u. Z50#:x?M} :8%>0k~YQ) "9 [:tb)PZӭF.wr4g,0DÊ9ŻK~*A{ k ^?vGڽ A<KyY9*g`ȸj_ՙE5<:nj3|ǐ: 3Tw^/gQ2eOV*NE4ӛ"qn?w¨%61SlSHM^,Uo Px(~E6y,mQ2@D閊gOd3G$]uc\L1 !J PĽ*ۯ/po9&3  2ޘD/^2@~TAc?^]Y]svo9Hrmlv$l9XHH6_+-`k ",,$$l2`XѓldZ m4Iu4Ql@1K/vR<+U% !@AR췝Sry8Q;+;UXzx汾=,&pXSS8|Oqx1ӸIoBlʡ6;YJk^гO׿ OKQ P.f9XzTR5.M;(i0;tNOАי6NRϥhԦ/Xgs0yH̳N:4= ֽtSh8=McP.Ʋ,?pF%}3A2e[[,cfFSI~=ߘׁzGo@UE J*~ɤ[Ff"]#q+g{?֍J-7..>&v>uőovQ{=?c12tluH5kk|֬˱*+.AKFΉ.I~OA9^'3U,f[.̚o*1+75 OwBfSM $á!,u8YpwdPv ~A]h@ @h}ȅ}Oo8U]pZE 'Q@$w YȒR-  &|ÇFU owYOggS4LI)iBZyRLMwnlmtsl^tT@44* 31䍛~Xl;oͩ(մQ\@ܵvi^wwWhJݶzxRP9< z6OWon\]&w]u#z $ݧ W-L :ݯj W,(G τ}.Нosӳ·NiDϊ\b<~Bӷ2n˱V-.J$`y"!/M0f=U]? ` &o6 ( 50$~-?|T{DSRDKaJt2tpីSż|T剡vfntZSrƫ"`:SH_zqȻV@ l2xxbjԣ4q,F°`*wGkw|߾Uj.^ё;?ÖЯD(1f?1aaw{(v̗W(w߫_I/K6x@MNx#FᮒJ@EsO>D~ }w;7~1oXðwoЇJ;ٞN=ʖ˲huf` Ti}}.x }?Y4O4Vc}|FB@܎"*y􍍨( YG2rȲ `,_@e `Y ~6]CO§rp/ ĊO,wϼl$V% `3휆7 ^ty |a>g+ t,Z:bge ^XOWߞ8˒j4 <>Yv V>x< n2m^n6{yoGD  4`΄#gdt9"ia5=?_⃙jjOԿY:rG@_!^gEyo?Zwn, U-O-  ⾋1 h!0~۝3nM kQ!-V_o=?wsO Ixhۼ!B qXIV, bxt8\q7;=0:~{-~TT((V@xx/=nkJ<<}w`|jt ;X\$=x@h8-@%o*QCίh{ۗ>ۼUxoK\cOyr]9-4C6  f}/2740(Ptd ;f[;  G@ȘoZ,->ggjsJo?9!U>HFaPL~?=Xcps@x/`}` _%n/ҢD. BF+cMowޙz|+^W@~#!P4 e 7CE 'l{<'LCٵBn̽R|!םg!:C9[vN=iw{UU$ϗU&n@}ty @hb b`#d010HWbB~@ p஌0~˝O0?Y!`tƛ@')UxV9ZC*X':J2q8d :V9@WcB9E;"%}kp@^hk^r;ZϏ@4?8~K|o1gK{ރ1ݺ8c-널i3p`X. @x⳻*?2],G,B^+yȐ ~w8 xlt@]@ @?qUTa!4>u *r;,~SR1JfZ{$iA,>?Oxw:_``k@7/]$BDlՔoPm̚ 6=3rU@3 v>zN;C<}_9CU@4% rYۑgPB@2~6L񫻏~8l&o XyQV˲J ;w1A@Rc}O^O#t\YPNpCЀi//ځ`Y{=|t#nK8 P/R|YOo|'Ż6>ꭕ@rXI*8坹X; h*@xi(` re \ ?o=\ ?-iuӄv?1$JO-9ED@g]c<pwv%@'OrR qJ@!Nkd~1D M/`%W!xr 92@9^wZ9'*㔽.0n`N&>Dj&;Y5_41|_%o_y7:||5:;͖ע(P1?/~zoNOsg=Wn#(KqPus)WL!e3]Y僕'zn7|@q‰~ [/@$􅻗9v^9 :wP Z|KY2?ApJèMhr @ >^^z5o}/ @R|; 02rSbn50 w>0;` @OggSdLI*P[VmiaIpbMK^Mܤ.^m$5$-$:|[evL_O9,{,@Xw 0ɓIDx- P0 _FH]{JnbFF޲-i"H3XG_~/1xP r׀@np-PԀF{%)\TKH$5n.Oʧۃ4 a5N?Sɯ/$[l)95Zs X:[<'K={6Tn گLߩ饯 <}_!@ t{$% lEA&4[N4wF @TRD o'hv5"$3 PAb@ a5$blv,~#?| ]LF| T ~QEfI gDj=#RjWqb0\3;S֤okm8 Ϛ LSķQ/7kDY9:o6W,əQ@e|HnL}ۜZ x6\ "_~|FQ6}Ŗg|ys1M>3M`a:{P/rgg,KwMp?~)wphE7'su]^oYu򅂈/>(xxATY Qcy7 / ٵ o&5!j|S;dלOtn~j,y?7@| .\@@iͽ]~ Re2vx߷7Y';cN6~[5+șe #r27@XA> 5߹>9t϶Վ潻xΆO5ۖ.9t3 Vy?9(Ǖ?}s^k7@>}?_W@9ӣr'[6 u$֓t J??6 0 _M<,e "lcһlsn7r,A]\4oeW ta,4ێt#c~^⽑,* ܚi<74u7cCT t }'}Wa5"ɠ ? KtbZ}~eB>'糎L @t2ҽ9|Ee__k>VӤp78d Bʹ9m;Q*zyH7kOO1(`_#ul(xHx7xczs陇*@e%5{\n}ޓ~>VlY!sf ԃQ*4}bb؞aanw e6]wsp+yiPHh'}lgR< ^J;0)APsQk*ߔ"5^@].{6eHeN,[>\g`6d'p@bS7 4҄L .mHoMYَV;#{M c؍/X@S}_ľTKPDSc7(?ptn#EuAC2@̛qgj&# 2h}˗m旷4oyo\.x@כ 6ڕR I]d| }cj>!_Y[2{$b.L{3ȡRɐZ@zwUN[s95Sa?ؗ7 {m߈BU pڶs -3Vy xo@yrz=s]W6 ~F5RoC翡gd6#vr׍{9$m}]+^'wlv|]Qx/Ggpf뛽+t H/|exq4*{c>XOMPu9zgYo_Vk h|P DP}OEn'-O <64޼2@A =C0* !8~+mNJu{!D 1vc"t~FW`X[)b@ NXݸNS]]>}HMwȪGeBԿ L~q(DB@Co.Lʏ/~A5]_8 ޿z݀fj@doJFj7=?XEO p @gjk `l& 'TY[!Y`Їl s+@f,GOggSLI+&BjIVDDxp`>;NSO^gtC^=o9ݐby@\/ssx98_K( ^bo:.aWwő1TXWㆩv gb}S}13x'  < }L8 r |6]9 ^ES.rShpyk]yzU&trA5OP$,NI209qr %.{ YyCNQpXQ2M֫]ǙȕA;‚9Rj6hn~iźx0{oxW%/@׏s9:X >4nQ @5l {6<1m+[r﬎"[V)B@;8+ %fZԗxv.ȥ ,J(e_X@w6t'ڟ ~=soK*4ڹ4GG2sLXFS8ÙtE^^SPP>/_/K9( pv#(4pmX0' ` f*~]Уlf!8a=+s"y`l4_/@ 4F@IHBq[9a͞xؾ5_{ v7 w !C #N/]Y9i:T=AލjNNP: #N,:I%ȧs|Q䩬`ΝgD]3'a_C pպ(Q/{j~J o I T`dPV>(*.B 5@!@xxiy0YQG67^]cZ3ۻOx> _/ szhO|6} (؝Xn@_IC p.#zk)VֳkهO.)i\І3v=Ha܇ ]i䜥@Z NK)<}"t~r9S^?7SqШ}m@b,@'dW4"*0~ OS\7_Z>NHs윲;XR`D /;^=k7{dOHAgE}4Z_Ev̭n.[Å3-TB4bf̍c\yt=W~ }{c.Χ#6hIGړNȫ-@&83 :?8\OǪ OeImȄUqGsX{[fNW&uaON @+hI2cK ad,;/+nG)xlaNxюaq]4[ {rod7A?-ÿj Np`KUR H!`srw+/ l-jζ z~,s2%PڏŸ|,39/qߟ$8f _|irg^bNh3ngqP1r7OT;z_[5|- x7̵ދa{̀ݹA>^Xy.='|F "0F~?e2B ?EKd0!%@dej=V ĴZ/֬| e֍uzhb@ %{$^{WO%rX70}_KzK./8ZtNB~=f| kN_+ @ɗ?ԭ m g7W(>4ĸM @_@ kleAj=I +@'جj][SlC۩6A n/o0OuxKh]x!AhR}K@~ݮ{N0w!c[戶+4hCdt~4-|{n~" T+5NP׏N1d;P ˿9*+ȕ!aQT `[!H |8TNQ_q ; 8Z3^ဈVo3g2Aжo6_d?>E J<@S=HTqFB*#?m6[?m9/d ϸY#eFrK9cRڶG@843e &vACD4eL* OsSmʪڊtw\h\~]|?$d:]%eR68oZZ/NhD ?>& 雃;ogH!B2zVc]/E$c"*&E8X*0B)  ̩.pM'jV6I-&A贮pOxY?+.~9tkmfZX4Uz)oncs&Pa#Lo >h.,Fu=K/mQHgr3.Q4M=Uřg%>/b:y⫾@JeDEZ%g6"&Oww/U$ \_ֱFcV[&̽R\͜Y Qv.~{\ﹿQvpxժ6NSMc怎6z 韚_ǿѯz*<#]TORWnE(ڼYyYtbC`]g~}.tW=y CU{/0S_m\Uy@ߖJ@ё0}o~8;x?wt;lGC__qq8~/ѽl/5Zo 752T^e`'WGJL4ͰP,z]SD'/ ^i E2Yv'>Nk_ܖ7gWgNk0e ! fd!6}N b[iv< ][VV]|G3O̯-7˞}῝7$\m!o|kD}jLT̞h(Ή(u?3?={g3>:׹FZج/SD0mQUQQQ +ajNdP9 @_MZOKG|,,Im|#eOggSLI,akqp=<:>:;LOT?Zʽ<2fZKyvlI(){>Vz4[7ݟ4TEL@k Q ڼ"Y1`7x6to<kKȰJ sI<ͧ]?mjJXlW-j] }x _Jߢt8m;|Iu pny쾏n{I8'uLfc{] 4gW;Ί @60)_W1w ߼>TQSٟ6 `< `3 lk!?w@v@,ǭ_dmmsތ1,wLT @״jEe| p›_Ԗb}V8]@/~.#Yo~`Wg;P @ϵ>:.=!󿯪)~oLoC se< _s<)D6 %v>J-^e[[;t}mkݢp$P`9uMBw/l Qb n6ߋ=qb.~V`O>t^@Q 6Оo3 @( p_]]wWC@c|cr\H N0%>-(X>ڭWم)^;ĘEΡ,t~~7]Fw\x*%]5 p77PcCVmpDx3Gw(gh-P‘[lX/ݹ ϾZrdfxϿ~c ϧ]I Lzn5PƔ W΅ }'|ςG{C(5|R܁07+dhm|VEŞ@`ep0{#K~,;Xn$3B0I0A0U +P K؀ r m{r\7sv3{ Ҿt_FgMv3>sax `]ۀO KpwysV$1gO&be'"k=f Dj?V zEY!=D[$'w|6A=9Lh.ռX h7^i qeWO .nOfM@,^6;p`x@v p؇k]N l+’V,@+P}1D*= v6X ~ \)ԡQ>^=&B>({X@^rKQ'D.DIF:fl)X1te)t6%NV])n&߽,@L/?\npȜ~Ǚul~.hrB4XWvzI 5k4 Aha@`s!GeEoPJxz%x|( ]D/;gw$_ij$ Vqsw"ύWP(p45.@`#<$ Ɋc4'8TeFqKl6l\\qVo)g{Z<H{2E@Jn(sRoۑs*}'V G}IۮXoUCxIwב&يyw|II#kMaLE= 0!vgD%_n`$~[>pz2kBU),*C%4;rQ T 9>:QTB`:쑔PcTOzgzgw/``mUww<#|;qbJ}}=|FeXr;.>O|LksR n2grΞ/rf`26\&24 [xCJ Cg)ΚIf926;ҡkZ&3A?Ũ0W>y v, ?ޣ!E'|HH"7'gu}'H8/[}P9:Tm{r[*u_ Y9[7Vgcwr;|6.tXL^zsY<˼M̡&^2*!PP~qU5q~[E8@^]yW9议KOGeB3u8g?f<9Tsv,6:3=^G] 6IJ\DDUɃךɀ0`@Gc,!dYzX?@2 d#}W}A|WA ~lO m,~`[δ Wo4 T^Xl~| pf zÉTgkla`NR)_mOkv㯗G=!w'Rtv&]OXmj;&c/qDAULAz" oPQ`h^<.θR?DZ׃njk~S5 [\W|+7ETS|t׌͎\o4tVo d;,hbqׇk 狯/y{LU D΃_X~XzYTG~i0UC K:@5М" ޺⚖78+MlG|ŦHET8wЕ;=nc{:m?ËlWnh垵3n2,Rw~ok\ǟ) z| O7Qu,ȺU@$+ ׯ[2 /'sIzrq<;)!I8TA;fxy?ky  <@e Stl@^~+] }&]REvG. 70I0qʝMQ"(i;H6 ܙ|qfyS,,łgx:PVUUQQ&k/[347]͟|ƺ$^p~Vq`W3r.r  N{o| }O,[&d[פbqD)k㠨 ſl/(-Κo8Tz)_ =̻΁Ei+ᮄ" iއkS xJNj6bt+kD}+ ' V` >`qEU`w(7ad[J"OggSLI-ʙNUU8<99KLQGqbkrwpk d ޘ_ oy`:*Q(t5f-!Vn3Еwۆ[z}oj/V@"~gCI::?];>t5{gonuc2ϗ[h&ϛ*wǐ|lj]3)8RiS -fC֧ s׭i9/ hfdpp)̙S{~Jmx kKAxF=Yd\@_>@= /h5hmܵ] `}5垿 ַhEF# []>U~?_٫m$Mգk`Ks~EMR4}՛ӖBhHEJ+N3T4rD\0s__sYM9oS;҈Tz9bu;vD췬Qm%WܞchUc7VA*(9_dԗ~F,5U=qJY>2Mf]Fv1y2m7A]KM[/_ޅׯ<9|=AT9yDeQ01n0%W SfVL?LXN~3FWN5I/(FoqZJ\Zl]ťeϙr1 7A?Ex`wpi^x {l#h $nsN֗?kZ:ɶ (kaڷ o#' 3d^?-s$,_WN|v,op*vz#SFtz=WoanpT9Oንgo} Ws!C?tͫj _LKW^>k?#?lm*{ҁ(é`sp\Мz-oxw^+@.84mA#ކ_N!,KjyoK9W*Tr)Dhkn @4@SZӚރ $:!g5Zi7+Ͽsѩ—O`ެߡ1HG@UZQb I! 6%tz|B[Z'gZ D@ E3kx^)9%yf"iM ʜ  /&CgՃr@)?W>:[)f;z@yTO&]P= ` l$As >[#}똞ϣ\`95UH문[xZx1#uyGOQ-&mT,W2Cn?j $V0>yQϹrV 9,L ?F> % [Hј 89?7ƻ تޖj?  !*>_]xw]Օ#s|- Y-Py? bRn>4h14FMn(4l'o`*>Jg[@s*u0JWj+Bs@ i_"ˏw4+U#u܍m$ 10O>:b(Xʻ0)Fߵ ;(T s@fm(Y] ݶpĠLKX#H7|(MN4Mf`+&S>8Tٽr=Ӕ^kc( 뀷$_x`תAV!KH6T<RoslGd@ :vwznc:M?p:gG4. o.3O_h />__Cc QTxX @B`L,ҍ[<̞O}1(6Rg= R/]Ts@3DkPI~}҄Sܽ]#àkqWe! Znt*lb^51kд 3;Z73L_=L? 7}*mewyY{z`CF<"aNȈi  (OggSLI.8i`pbdYKFF`mgg^*W{7Qйw(VfW[S5+7 /̟x;|iZ_Xޕ*aw߽;gOKg|.r{ywPܕڌB-xHoBC9}^'ʎ?.9 ! `Xi\՚L'!ޮ](@L6BĽ[<6pp `d1N%/Yoq0C`*vw\d(hʽF)L&oxux@ p'[QɲIAA@3`5:]tN>^s5'@aj>Wާ]mp< 7XG޴"O's-qo /h~۽*N+ew6 N N664/8&Oxzyc@BNEm*EuN}wJשkav>{y[tsj s8 ~yjr>Z\Ɵ-={ 6zWja-j1tVN81gÆ[jZv8rT,pU6qͪ'=BV6[}nJo}E `PY,֬[s`/X;*+?hw@6$ EMm*n[+`'lE`G t~fP?p9#1z{0DVz<?d}Skg4?% V$UE 0D;-|@:u>.G (hG 0x1Ec s_Yn4ǟ5m{!"Q@5:?$r .j%@^B^jCc|Qrᑝw @]sw>Aa{;li׽Iad}k3B~x2'sr jO`.`~iy:xfj&m ) roZ ?S =2؍18eu DD\bc(l\ 3`{T6-xNN}d^1giv&#T$QQP ?*8?XpOOI鑥G`|~Ca%>`s}k?6ss>?vj?Ζ8f:X۳}ͫ7or~ɊkjQoiϸf r{׶_?D国d|\VMDr#Fފ Z:FP3 &s#uN=fڙ عJ0E 1u GX&&=gq7*sQ\6(g4Y]2a'=jnѐ}3T/;8:lsGw עS;AKi3웇| A :o1~4 nڏ ߟ+mRpO^_ph`d++o4D@AH4 -,*vSrS>C>63R;rSq"_zoqPl.8& ׹%]ܽw""")0ȄM 8s_>skyC@5a;r ѝYVLh*2|s/ کˑI.!aʆi3?t}Mt#8t2#y:"MЯ \e~p+tq%2Xd!`b^қP( @BqsU@/Z `)7_O@л*7pbM5ܸ 7`/c  \uLmol>;]9 HĖwFbC!vMs@n @s|lf!iw}[A$F@¸ x8?õ_'k{y އw@[egcZJo^O^j j I'S;?WTzVyf&̿uN.*7DUU[0&J *_@Z>O5H{GT1|v@X {˷vP} ϖW~7_ 3{$E!xSOggSKLI/]EDtu^njdj<3*<9;JHJ nwSjhcjy^S޷PEa|~xqh_/ }hն]: kl`;V*\x|Ɔϙ,r6/\勼858_f t@m0imC=ulfn ^Nԙ Oοx ~|Y (0 yP|/m_z:h` ͭW? Y7Io+r),}p>9v?g@ j 7nT$0PV@DTX`Z0=QP ~ ܻlb!MSJG]18>a7׏Gɣ@sX7># U *<"8 <>,<J?dOlj@NF{J< d -/%1{~g_d ;vm;yvw<-[<6`[ ?c\O6ap~)i^%7}-_?8(?bm_EɲD(a ?g֏DE8Z @n)^ ܵmU4p!HʽQEh*XO]H@8X7cn/Am+7nLՓAB)^V8>c;{v NfBͬ ih'Pі0jٹs. me ySB%t772Hyg$A|[Ph|ͨ"̫  Ԇ6Wo_HsMQ_<[-0{@sqo-B"YPA_fQn8{J8; Nĵɼ7 !Fų}mNZSeps߯7/@QFcKa3AiC΀/07pwG é6x ̀e GՁQzHjK;t2)ƒ &3gϺ}+2] ]7i>׻4y69_ sd"OϳV]nbu9cjhgy%@ڋM@ۡ&&QHhcy p& 5$gܐU${y ^G9^@#Wm;r?`ۈS9P QwTnSq]VV]ym-[?C΄){y DfeTή^=@[v2Ӝw!ǏUF× @X/!@ &<}'`kOQH([>% /`sC9f]^y^`x_ zߢqnbk -,?/ ^}wh4Qzvm|~K9<2>WT*9xO#3fQ+|x]|;}lG0 pƥK̯pw!mr:˾ٛ@Jٟ $bnqx1?sߦ$m4LfN4^a%D˟]N^dnp OK t mڼy'?qˀP-ټyߏ/i>,`/QGtX.(ݴ3# @ Io?H 12r\\BZ u7XYG)4C @D^*`)hz>%!F(N w ,*gWbb :Lw+: wyN$V{?<Wߵj A'jXg^w{hO}Os,~\A, /j_x358!u֪d;PT* * ,[:(`v!(\Z HsNLR i~[gg/85d&tq9# aZg`~IjZ2Ϸo߿CIEg\F-hRGה/h%"֎\6lz2m6e ԃ3mo^3W1tg:<"KI#8,'2$}qo/:uX)ruށ[_ wy\ɡK!K֖8 tyd)YDZ{=/*P\p>dV 0Ve=0Ϻde;+T$>Q8Cr'e, 6J6 yY%+ B".$e6wY}k60V|Û7f-Oo h 7#>f1 [bEBD=O^CAIͯ)rcW=hymoY[aÍݭ}忥E0S >ޣ* R]g PTpwED_GEP|Iy v=93@&Zpp$ά]gtџE)3[WƆ ^֥>ݾSƲaf<>:_ 4j#[ Fȧg#On M[eloAL?Bf&Uo;Q6cɔt 㼶]M8V5ȋ/-݊`_&~xzW 5 9}ajnSe_5niߧ[&umT~m0vS$3GoNs}]?t/.Ovmv0=zΨPpC (\=Ǘ%_Jwx3Q~Xݫ`֎Ǿm؃(QE9E?xoM0\Ag:.n 8~鏩[=/vuB/Wh/«}~&JTϜFBF8q0=E:#B>0C5+C@{E#aǹ_ H(y?0yw} ʕ6xΆXeNxcvo@La8ʭN>ڍ0y*P4)6,M{wf\Ye6>p._@l9BŚu ~~yEQ%Lxa%P9$D]M8eHp3ҷ懥 @" <:Cs\2K=4~}9,ևD\P eY0X,TAD@?~2@ ˑr)*| (BF&*Zu( *&GŰEJܥapB?葻T,pKz GDb*%&|0 pv5!rsA.e݁wfyA"u#y̲ J.V̽`*{e 8/ ֛~$@;,901 O2 :6|,'8^OggS{LI0frnxxqFrpg}*茧KY4iEe?V3U ?Ws Kܰgx]Cb ЅԞo9C.h5*}r΢^뻶ӽ"C;N$쑼rpG&}F}\'ΰ."vQy\VPUwg/)G ͽE^, XCKl-{Ȅ}ZNk`ޠ-&2E)0! '^4%^ط[M3eݚ-QV8cXlp@/5Î\E`f|0͕=SY|W7 P{m}<s ={5Hy)-WJ󍳔&@8]^@.}#~`ϞgqPߟ 08 L0yB.術ǬRN5tm-<)VNr CjO{R+oJRe@ݑ_x`SˉCwۿl'#,(~2 쉛x 7P0kF[}0Pxo ;S8 b Y^6֫-4Գu- YI)>VW3h6]`QN'`8Źvk#PIiN˸ Vn;21Fvh(]߿+\Ղv @xt\vj Ǔ(Jm n1kU{,ݙCty #'w2@1C?oe~2|5w/nH!gϡvw_Uv`i~U̻H"=8~m ??DZZ*pyw ω'`d<y w``` 3AV!>fZI*z Z=m`p3#b5/pz,8v gp[HhR~;ۭzg6rS?듞sFvx/n@=hG-?{&Z@)3j&FP.ApϠi㊲$aеkA]GI@/S! 9=A]NF: 3'cKU h4?tA5@~C8 @[UD>UDId 6ZTUTџ^S2^P5ѯp*;*r5.DzZw[ƙTkp8'\pWm>QkK)P% 'ZzƓFttzUyS|yO+ΕǂL9<ơ1xB?%k^ ZdZÜC&"f?eٙQe>/χ+Lod [Vh D`_. !W,C0C+(pbc%qXM?H p1DDD f+!(r 5KޟӋߎfɶ/0`^mo'*ҲVNݶ5)>SAK)@4_uń#SnrmYmXh[℥k?S-&mv[~3]Qϟ ./,z7?&O#^ y$ -ܝ]iuw):pyr\ @ 0s{zȏO{ >͛@wHc;%}H+@pVG D9jp@> -%@ Wd%+ b͚X+DA$`xu* xf+uڎ饓dmju /j .soeAfnwX)(sYŸ&=nlF0Wh1@pݥi@WS,h.I"b{Ъ KN*~MToi17JsoX{>U7G/# @\RBf22nNB'=3*muYcgvF(q(ji0۾8_ؾ_tKz'Tο5ya&ϔwң*"D4gp0M%g~TsYWT|=7LCS_Ľ!^;?N:dFF߽|qN5 ]k8~P-  Qѳ*,YB|_# oQ&[wK$K?st2#(I]zE$G:>hh}/`j~2بAY _pz_r)<{W}^N{wUFC ݹ[̐V9f~CC`O+}9StLJٷ@ 8u@AŇOޗ_\ UH0O5EG]B5=? ɂOO֙^_f`_^_/I >IIt9z{ qv7Ym[D2G}+#/aH4I~37=3{Mv `>a3u]r_s:p:]~(u̜9g 4Cݣ#c%$J PIװͱ,Hn_?!С{`赲PϬh EYr% ?t@ջ_[OJ@uFPپo` !]+KHC 1`6d=^k2I`sfjky6ܧpqIadG6˃"?"" 6.DPB~_~CX,}֗#[Fz؂m2Fwf >o+P, n!8$w P4@N@>(Tkp:Eb(P#g7| b}߽DHEq#x> .`G}~ 0'lm={?֘YV۶V;Ȣa²yj~oN,k?h-tkmlW՗E+H s!Uɀ|B̝[fKxC=/xߋ&QuT3{dgL.elӯI5ь]={-Ϗaރo?ʷSTߍ_ 8);q"$a[ͻn8oJ:+zwoVop*PεMA 4˾Lf;`<MG!zS8so>@ oa z%=2M0Tr-b:/n`=n_nk{ 8f9LMGqAt1 bOnu0wX|-Dʙoys:s!g$J5tx>cz/nu ?;d?r?-Ưm|TYvY0A/./`*OWLZsc7-f<ȏGI !w:j&04Upaxp欁*>V`8@? +H0:?!#,[R_|YY>}Uѻ8ewîe OJɯӜobG&3a8A!AkUP Wc8* 퍸2o,Rۄu-dzhpU >DLo!X*p> bA@v2c'I s8@) >۝+$WFQ{ŞpGpp~)80os>,gĹx*@B'Zlfycӟ7 >@@` oX +!2P<UOq{@6/Ӳ|/[2j6QnS(ŭP2sHYÇ5 3A B ]"TP&).CZ ?lpI (.~$YEϞt,[d`k!M(h=@N<} |+?_~-#MCGD#ArQ稽O9  Pӊ= jPbzff`t4şWCG?d2nȯ`)>d0^܍lcn_u<YǓt06Z?[Cڥ!3+TK/@%?DvR>=oe o?6+*G20J <* 2#Sd;|F8S@@ʝ;::i^Pbgt8tQ] ਆGWOs΀+glxU1 $ fvb1d ._g-NIZ-]ב2._9*B-܁ۃּ,L5jؑ}ߤF FmP: t|+/336 30T0TąB[8&pn(~[~uh^i0m+ÙtH7ӤRzm`zr۝y|Gpо p5D64 7SJOggSLI2εcrijsnj]zn#;4h8v v=ӷI(6XƏkyp:_>g.!+/<PjdO!d!jҷui8Elpdrr@h+ lxfkC^8 /g S>Br7h:LaY1²/9 r90gz\a=bo[!S|!ă< `0W `-'x|V-o>4RcY(XN-`>+1' L>rzI33f2 b} W`qo@CܢU,Yuf& G΋w{''v]< 'Cd2g7f΀}x߾g|z4{[[(Ts{ 6pAy7F `i5!fH,3ï~igd$Nb ףOu5`NJP.XŴn Q!|` @kSZ l+WXJ Wh8²A7WݢWb `?^+~*RɍGffL=^{hv}=`!/^o&_k}f8ws~n?$ K0@ܽ_=^05c_<}Jظ//-E@I1< P `?x >ѭλPT1hR(Z3fo[v? NmL.I  |_v'@edopH~o j} @DT#  9dNX"QjAX s}#%t1T;{&pԘ\ p/b8y7kgspc+W8-jQ4RB?Sy_9/3Cfzl}EWZdo(_ 0}<P@k*]Û\WoΔCcͥeȁrTD^x<z>z56 oj.k]M?Z@q{K?|`>0|a2\۬"Ϭ`a}$@S߱|&5~5ʛ;-fR+l&Ρz9 pS8`ʿ/ /\$0eW/Þ9@?'~\kez_d8<}Oȕ5@( y)t+jzRΘߋaݿ: ?՘JWy栆;d쳆|4$hn'j38@|yg8ъ|?I8%@F ^^0'l[ @srݫLV?t'~}g@Q sz q(mX oW pG]ũE;ƒلI/:F==4F82bw`;0gs}>p|nE@_i[HJ)˽|):Oiv]_o,/-lo|z?/V%x|2yUٿ>sJ)O6\%x4SLj:|E dEr o^467N?Ih{8ry^*س߽ lo F`MLP?=ec ,pK /cT8yz=5n2zFL%[ H!C\8p^_N׻؛+[DMg=< (={ xC xrHDiߕd6ڑWS;yO2govBąsg$4՛*h|Qԫ'( ^k|$cU8=M3SNu3&kbsq %K9MIqo!06 .I#0*RxRl -3&FgW ^|.Jqz3&hv^zd7 HQbxNyw8p~8f%N4h *O0{,?8.2֍Xꅘ[zb!K~r_a[+!)4ˇW9Qf}%3CYAz{ K<8tӨ7K!dug ą(gߤs:֯ʪ}5lB5w ιT6TC-/TB[44x+pʊjzX$X,QU(ф\Uזmr6(dpN?`R(~]5)b0 xn٭i"9Aj|3,~}oO _OJ`iOX8`͂7 ⬘-|In ynWC5)Nn[o2{(d%G kL3=_s{rܖO)7&pȥ>0<8q{t1\ʹ6D Ԯd (M~2I`0N·Qy_gt;H PM*y} #@&Si^fY<78``=M$ A29 P?~p8|tm1~F o-x;s)e/Q4%΄>7VLhS[myǽ?K+#Uck6x~CFv ءm;p}yJLrs/k-PbߟH;~qv棞=1V/߿gE3 :Ӈ#5o |;@P3`R{_"VO3 ?ToWu5Ն 6@ ++chŸ& `Q0^Wӌs"U]dDrޭoC@l,@?G9Z(#j褵ns*\i(+Cjm!`si`JDt%3A)#9f1A(P~]@k@4y]d~yF` WG{5 ,#>>ȁH(g~RLmH zQ-.NF̃\?~g1~B8ZsF xK 8lV38W4E)1K>GtۏaRr^| fL|7v~= ˆh2~||?8~ N k$lgW Џ:qI4@#o (N%_dK`@@`kOggS LI3+UglzhvYm[ului5!J(/q㜠c&3(܎ |=и,@߽l"hu3 G y{oB{{*Hm'$0b7T|am0j&7#;Eyã}OoOdA^YxPH5 "V+o)fK> <^p4Rk,N L@ăEr;p2qR%ܯ@^q@o׷غW |'@|$.B5$ `z0;' F7/#VJ-fU>j=m:3BA\Ƞ@rIbpJ9-`X`,&D1 0d` s1Xǎ f@XsKQ%vd``yK܃謮䶡\ )Ϩ̩;fG<4W{ ,|J_F5p*l%,tU7vucޓh6nW꣖ǜSѸqq W:[u%ex9W 8~=~>@m^(`*g{E7׭N]E4y0ݛP%^L|~98b8[W6}7l0́0 d bl -Z _+j IC#b`yLKn km0)޸KĀr;[10x"*8hx E8PhhH^qaF~ٯ`'H}poz79`!?3" fX!-ކ>@n7z!'WneæyU |]e[ p_@}Y_'6C߁Cet_^1 I*{W`fTxNp`X {Ο ?8@LX6dڙ@XX76 X Iw@}w@ | +&; q=%QI J60~N 4`_b Qsk?}y3*]AP?:1@@ y#,󈋱_jjI[M:"oL63GPM7>'3DqӸî4Ħhbk,S;ʚg@]@=|&S`~Yi6So&@ Y_fy@?d/ Mi<*^lh1` )o2J0)c(yеi=O*-D=83ܔh=RmZx.lRa.h(O"^-{ au_i&,1:c%r3V^7K/ڒ= P;<`pꉃʸ6sr`;nO(C 3ЇnP5R2@0:6{5u)Lϖ@d~vKϟ;Hda+-p n ,2 >Xl,ځ{Q1LoE^|~{3jGY@R-nZs;.O|w˥_K`b,IpDbu#8amp}^p=x3+\J=+?2u i;әpuo9#y_=EQ@ Iْ| l`9a te13P%s@(˜s9<_8!I&f N|3+BpMt7@}?or7h7_KLk ^y]$ZNQX@(S0, p{rji#O`8WЈ\k8#Fs6fp9ؾ-۴g͗vi{79;/ iϼn4<&dGch$m*]F6Y{06$'3VQP0^@+,<΀9ܭA^C TGkrRbx9@{\nˍ ^^)~ N['O({{Q2aW"esS4r=rڑ\yPԴD5>~A 'SO3h _9Iy_{'ʯ\u/a=.%&g|f_0I-`4sk@APnb8pY1(0.Lm%(! >j{gR ɂ)>D N< f&w:?jFA_35Oe9Es@WP#)N䤼4ǙT/ϟwF}^>}2 s!W^6xbo6 |fj#/33\?€e`KrSr>t@{xNj9e;&/j@q^&x8 ^ӟ < ?-$6@hYd4: H~x7,  [²@8^Iɣ M(GNo.@̇Pӻvl"ϻn>g=\: 3G2Tn1tm1Ί /]]hVOSnI,'e ,ߒ tz) t$S=mNwSϹT;[.oK L7Hֶ^8@+ur3-Bsg89ǯN83 X仚@_2$1y' w( nx>58C- ? 08nv6l , Hr (B `m͋J5(AIz(RbsKMP;NT-Ѝ||װGi@h}6I!d>{rS7zt>B^>v/]Wir_#,%oߟ<=wD'3m<e|~-^n?3/ M^_zׁR _9,&81p6g3LFS%ms%p)l@eۻ$pvZ#8 ~R+lX@0ILh~ }`@ OggS6 LI4@#jz{j\j:ޔ 8*s=9$#'{}hVZu9=Zj$_I­ݺk0.n2qUac|}4ڀO[6{wki󂋯߿?$6PWL?ӹ}yFmM9Ju^~W؞}pY#%E$0\jS zׯ_~030xs3yDZ HJ`| ޵m$&lc1GO9> l$P-@$8m,iql4-&\TN >bw>nE8o\N\u̧`??7{Ġ `r4Nƻ(/{}<=:?z쵥z>)m dr›CAE٥_ ^A|VJID_{-SK%@_ÿ/s/ڙڹA?Q/ډW2O͚-/N~w]H_>yZY%ֽe޶Qweiglyqrpp'@TC? {L4 @*z,:7^π:*aLٯb*:~Uv v ޮ{3R3%9/CqO =52<|-ɷ%ɩ:ڮZ%X  's3N\ > {W\lyhMI(p3`W,̱s_S}.L^:4fq}vc4'|PӅA0 $ 9 AD{@WXF`{1!djS i=v"ϠgPr3 A~a&},*hKY\wǿi9Y 'w|9QO/fo ~$9@ζ7 x$4LoW/h'dDlaMw>1ϯz55 R@hlry>Wy^`d2 | | XX`kbX ( 0>}/@1!EAU XY%Fg2m;<%w>X\ՆympJ XOwg'DbDjJˊ@'.)r>!T.Ǿudh{s f(/o;eqX @Шw]> ^̉ >P<7ɹlmbL{IJ՛Ng|1S}/ u }}=6W·4#Q] [4[ 8#gP2lOO޹8F:?(@$lW" []o57߂ ,o_ fj(m* ~^ZmTha5G<5 cیd !+d h)Я'SȖgm_>#uL>,TgpsN?ļéН{ M*p|x=>Ls ] u"@<,Y@ 7k`RȖ֧$0 IOl$O+x@T?*Y+XK^jKʝ41R S3(굟Lg-k:4 UDAD\ Ǘ.=H_P )C [Yn{r}n3g<[{gz].Pr~y= N׍?rʝ-54FJ^E⬡/dQ}YeCU=E]|:[֭@%,9ί;PP70,$@8~@? D(=E Vn@;OO$~ >_ ̌jP^isj-t'۶S9x|c;pCk#UZt7'i-ww߷ˎ_Y Yo,Mo&mnN; Co* l{ʫ[E[k]}ER P{F9;w;-j pfY6/>YV@50=0Vs[E/,̵i5 9 V!6uS=/[d aÂI :$$Xx ADo#`u@H"9d@B/ ~< e@`:*#iɽ Q!'$`1(_\#E1 P$bPcnQo]On5qD2/sоi&\~ϿxBk)ەImy95S",|^;)~=5~9Ov_R_G?Wjq?xHӬW{~mŽV!~`&\"S*"Pbt^}~S=!8Oo mx,fL./uaf~ˑ5ƶ]SpN}||_X?98ވ؛``> ȅ8<9::JNPwo~ymh-;"@ha}8Q,i;-wuB @8#q}6><vOQ[7Dh_y%^Zc4mhIoXNXkc;Bo{쯷jnv]5pBpVj>7M>>6*qMzߥ_-]+s )_*ڙ@ԙ3_U4뉠 }Nw ߞT9\/j7`$+F`^mڗ,c[/K2Y#0d|E OHT{ [ ;v)9.9=;N]uiZ/ d3ϩs9 תM3+CJ<Z63˟)ݿy:F?gכvCOUaPW(q|~<4̆p.ȵmϏu(]4HbkT5}z|dA̕,ahnTTޕD^W&M }77TegHxD?)"j ~ k5k*X@!^ixQM RuѪxW˫ƾ8.8Ak[9aw~v—CKsY @~iv,nu lǿL?J΋Ͼm/]o!U7͇jų;@m rv;নP4Z>|M3O.qz@baB{kaeqgߕiVsjv }zz|fL>8wi@ˌ׿c'f&i\{>ݿßO :;IL[e4w篨I$X_&W6Ƀ|/nHC@{P>(r a`T7*[UgTʵ"T_ +??U(j5hϒCcU5` ">Ϛ.b:\ =Z]> :QŪݴ%D: t/hQK[4x3]s^hX1u33^'&LHR֝OCCZjZ x7hU0 M@z(H0a*x(: 1/_ @8;nXex,,KH6b*@l`OK%XVT /zS)h6Y2OZ]=6^V c\}r<V)NW?e7I˕yl*a qcRB/sh*Szx:ONvG=;}] ȏO$EW6 ^*{N%长5Bu۞rt>5_"xgizRfR^k7*7"N?huRkl_cxB;+Xưݘ@dBCEZ qif~uj2 ZSa]-Uc)Sy\}M:UbAV 7TGFvreΌa۔֤xms-ڼ !BD/54/u*{2Sfl[J/7謟?~䢾~}{Άoߦ\y{i>Sy_wM|f"B;@na~~A_ޥpz2JQ?̳->?S`5շ"vs^>֌~_쮻lk8 (Vbk,R@NgnqGﶆ<"0&[NRKgmMPp|X(x@el4 z~Ϗ:w9ؖ0ZFEnE dFǻuUrƥ+ ԩGGzc| }f3t7w`C/<@WgtsT3G*$Ph8ZѰۆ8gYc0CBGiwc}q7EܫrsNVIPf: ԁ=|,h7-QmQUQ$/  zAYLGWTP#-`!'F>J>V\N'joX<_ 4XTt3}izj򵁠}_`_iy3VÌWt(!`ugO` !/z[g~o|`y&jAzDv^hn߼Iv"r z*e5hn_m"O*  ]_ BO \GU>XM^88 c>]Tg3p6~ *4ݻ*&gdI!/%趫_` oar_vz;#@cm$ӶD "Wt>^i6g P^B= y#}5~u<)Ph:UBw3(UDZ۳o:y3)Op{~8˧t_/b.CAfTd y6\в+~/VcZϗ G|7~:~! r(@O|$`X gZ8\%*_uu=s_ddٰG&wQ2ѣq; lu|5ћ[z" 82o =}$GAQ"1{?᱓=w`u.> %mn,ꄅ/fNu {ztյY !.~)@k$M.7N91rI>޸p݊o[l";]t𖗏[2P׀;pM dMsSTpH:g7x0`ı\߸&,+@2[@<O< auv `0bY/@?7@f OggS LI6_VOOGGR^sfpM+w|N~nƫ.aVN#7p:Axsql4Ϳ?΁o sa@)DBVk|Lt~;= 9d^qsrP9_AvȹB`e޾6{drVn %C) n{*Vmp"Uh(=2&-||P de|B29*v1*XXJ@E*ȑ'+panv}2  -_ p"p2>]2MXa B0E0eK?MFĭa|DO6Vn^g;H%VPp'x&F:g\:Ixs ? ˫`]}\#woO/~7u~z8pE+LKWeB%)!:{z%xT,a.&>nM^x{SA܍u}3KQ,&OA2ϐLbO(&$( >+]@A<~]=V/+Z)/U"\=AŤ+@C} ϳ`+€gb~b>Z_ ]~c0s:Ł 4MQ`zpp=;ecFlޑ #;`v&8*&g.ʏԆqpC$! YIw28Ϭofd ׼} <ݹL?@VZ)_$,hXg4`zp+|~ܳ(_ǟ?Н) ,"l4n ~U  x~@Wo(.tSxQK jșvԜmǮFͣ\*6l?|serנܑ23ض$)Owxf0|嘾BE&҄v8ߪe͕ @<:/`ї4aNʏ^6@*[[><,xl>BSa) zfEs.t=(>C<`8۔p9`;x_X.HF4΂AAb+i|?8|u9S8373g*j=PcdR<O1೽~;2ߝ A@& j񳉘q4̾SBvB_\9/T?~μJ}k@ulPa^>=}Qó^kU#:9)0 f]]I.{4@" kDQFQ> 4TS;mAC* *UE2ȹ"rVb/ˏ;a?>XܣC($L4|'?J>,gSn#]ާonV8 ~KZ: e$K5{1Dq4]NV׬}l;Gʆ@ ƣ.|6~KU-7;q1W2s) pۭ?l{w`[E9`EBQ!{`OM |˜@ҁʔKB18|f;#9A322ΘF9o4`*\ُ36lj(Qn$wmS{xqy`ZRog>@~glpzEy}գh{(6t64Jr|Lc,>f1bQĽ?.~}0bZ ,GoL` aK_>>'bJSB>^zRVRc6^`-́oI~Hp ~}CDMԆ&VmUb$%6糌2Up_|X?1"HvA-oٮ7^no60xĔ暁|V8 e ZKDHR dlN[˶pƂ2JQ|XX=K=@ڃ2`G8ꓢ;AgToY`́ߛUIKNQ!2d{h޷t| ]E>Ҫb X H8_ wvCܵN$ n@Fv<&DEnR$=ҼjpLIݹ׃֐; vGK٧tsr<7v t͉/ZڿϼYnp79z<cܛ~ݾalبXx&BI<h)``4 7l %B;}@iw&)M6cS o5,?bIVUc 5OCx˼.N_ZB2勧)Xc֙fGuYmc?ߊ N-{[rm#x  /VlF@5kMngf )\ l@WuT_z:J=pZY 0M9$?k4+ss'˹&Sf^l8NX}-%B+VľUD2 7KD2\7M 5BNW-~K~VqvME1og\, @Hb(*1Bw~OTò5/3YDd37#(!FViJA:yx >wγضl>cb_C6@&3t~oj0i V.Npk$D@"nKCyģUIٝKnj}`ܹ$eQb6;p29ڤy/z?k|[ { 8Pr7'd*BL 7ˇ@_7<` u>>2E~d f&*5 m(X*$a  ^̡>]mM0lbWu[r׌ Nc,ߜI:U;hK@\k[8hPqETTNu~} en2t-0dּ-PzE: |8rh[lӞjSM3> E'.Ц~Rտo~ Yft!zs"÷@E5z {+d `܇m 5S a drW3 5&<Z M*^(l#eym3#Ldp]Ke7'~g}z}` G-YP)ƻ>rϿv%cZ_DG"PnWS:drbvZNŀwI08 KfPCAB֏0Ap͂^`07|&{_0gf[Πְ0B1}];oFPn;VGś<=UUea|]\}Dm`츊3_^y@7|~) H1X NonBN0-N>nn\@oj^EEYxYoD@~@a9#|PЯbJDplbCo>9^ M2]#j@ZbDs? կ{7$*$WEuF|qƼ%sGZADOi_{/>ScfO dWǫZ415Źƿ,XI*E955ER<ppC7{ITz}% fbYjz'4x)dzQ,"wl_h6 +LHJ6W!,)^Y`z$؍* 9]¹A.q Sˆ=[լ(  q-+<1>p~9aj˟JԳt5s]ۥwJ;A$(ϞltsJW u&|s `WOqwM$<O% ;o}W9Y%OggS LI8asQTfqm)٘łJt⦤AM gp%e~LvT$$F "W0Jw7ˋ*5$: Q0˞|swW̩;}?/<~8&E1a˴WU}4дˉ_~].Sš/Y:XˢETUUjR~kUuh2- c^g?u״|# k+P@}~(5j-vmur}6׈Pmcs&y<Ag`QgKL%\qlojFhYBBH螭wU.U?ɒv+l[ء|by{N*5a+< LL>ؾ4O-uvʗk`u۝3z+_yו?Q9c'~ү jH^?{{ZWm=^죟溎$үξ}YWZv63=|PSBz(l(|CQOQZɥʚ--`|`X`_kxрu_'茥B}"1=@]CʖQĦM%S?e!/Lä\*DgLS؂y>}M\󏛮37!mEQ,f !qUO>F,iQf_~.$ڐsW OhjsH}G8PLL2q8Dy"M.xnuѓf2(O& vD5?7M*'[p#[F,@ƞeYohYIWlϷ/ɒ>Ke3HmW)4/oxٚh6p׻n@Ʌ x5}RG{ wE'& cOOɵX~{o3ࣞvfU2&|Cڛx~;@7K^6$q-Ӛ .DG{bU>2O߾A\^}|!%}^DUTMKY`R϶[Y` 7<fPE3;l< Rjݿ:gfZqoM]G>: ђ@ @ŽGqDz ^WQQa#`N<2@9^:d 8{DlqAr3eΠ? |ۿc^)@|] ~X왽oy5omHa@Y|+ x=G(m X^ ]UQ ߕJq֛]m:D1 xJn4B@&QT@nzN_;fU&_h2 zrۡ e\=eGRv}v<>?#,h|-}h? G@}_ύ~n*_ ȿ|9@ΧoD \}b{PNJ-Xd7@&pDJ@MQ,kV9efl0 1s擻ש`\ ~o{ x4u >|jpWBE(qIz ߤ(Y+_~'v@y~I*^ÁAdG|{ eBiOib8YNM*r5oܶa`\R>m4%*hZvV{; -KdMm0O`= <)g pw߶ = Y !gQ. ^]y @cZr> dONbv,K-oXێ?22kI~i+kqםuiAU_7dݬlX'۞ǟ? EXY~! / P0ׯ(TTDT>neZ6/\lEd`P8,@ ߥQQxc E|AU@~ls}m&헆-;rDLy-^_8_/s~?wvQFE` 3X~jo|iS%Z?k) )~ymV!*o:!Sm>oN_=ONWƥ/@f˴ψ8pyss(&*^s{<?ܷRν,0@A+.#ś  f{'Ϭ,}w@WgUCP[ ^m/c 2.iN 00\?!c@Dww`7;r"y5$-+ z4dHGGYno# mxmuI\<ܽ+8imNe_EWuW?LV^Z=tֿ<f//Y4?Ppyze+oo@VP^ *&y@@fAtO (x#I)-{#8Ji"8^'u 0Zw`] 9͉UdGs'H'sq&pc+/QCb^깥 |N;{"^d53NO܁˪Ks~YkPJ/W]_֩LJhhq73N'Ut~?O{5P,kyq!4AE0f&0?l2H? B,x p-ŀI-B la~@{P*dA|~hn،vAcםyn|-C0O37wmA0ͣuOsKhs㰷CysݝQ-p̊ - h]EuϚ3 u҇b S,Lw{ͼ/kwY2fj uM%^|(B_;}\`?]X/^꥿)hO);,`z @3AYfBRg7#YKE@l&#bj@ĸ ow8cཊ#0UT)nCOggS LI9C+`mmf8;;7=LHURxfd~hK$#ݙ'e!ٺ<_(Ay1bZbi0fA@Fܙ ~[riJqjAn7DVWd`H]õDB:_ij8 k퉚ݩg~j5t#qQe=~8n(IoqP?;^E #3H_+5k ~zK mp窯sDrXYAm  %>y+RT= @5cTAF("eg:Idȵ=R U )?:_[j%j4>{93D JDCu<57;=czGGYE׵0"9;jl"H^fut.j:߾ Th%/qDWsjT ̵+܅d&SGc(^-}mPB_r$ {E$ ! 4{ } ,@ ;pnbn0"fU!u `G62`bL`0oi}~ɬhN q4HfV$nՃ#Oե x֜-o树>(EC]{S3Fnb۹qa }Μ.%|EO"@_]TMU}|c,ad޿0#[g " Ђ  KS\O8vGd *>Z/`Lp;10Dg q/0kp˶DytH33&;>Tպ> N_g]Ǜ"lZar2+`Z9#xyLS֟zYe$hϽN]ÄmP?}lig ;5\g0QbnՀX7|˰a~#eޑ PIymO?NcjCԼMNsiL&w>Ŝ{͕{H_,*0ϘB 6'_7jQ@̆.hY6>{n|VfCuW|xROy I?kb 9%aMKQ2H(VKyI64z055lXM\`;7 &n@ĿռiyX'" @g@Z@/hR3Җrh;Mۚkn#ѽ}*Yc^0S|w;ښO5G{\?Zmkv=F  b}QZP$31tz6,=Ӌ^zjZVM C%k*Djk~$%'Ϧxb&m{m,fLg? 0]0l3>瑜o1 d,_I۪=wܓ^Ea#eYexl~| zo;LUǕ@T//_ǽ ɶ%ղp2ejEy-Qkl!6@!{\x+mn}Aghq9/H&Is6l9^:'ɕGTo3d۶r#,XpϳAD? hIQQPAˢ(~mQ?E}q|?اZ;S.mXRpujW1߇H;nöPJZޛ{`8Y ~=dB =m1b0Gwj^,MX4"̛^ z8wu(0%`6>zt7ioe(z-o]ڢԡ--ϤyDݝZ^p4[.@O7 ߎ# tp $!1@c %m!9 <_kJ7gV{2,8,䷯]xOcw8Ppo 9<I9..g+@t%q.66. ضtM{FE> ]OAV4oAܗuvrtZl0o;Z q4hPCCvO=s`HSW3Wk\Y*@}|#~k8*VCYM70P/-}DVƕDTB 3v~p+{HB:\p EC""D!4v0Otl"_i&:?_ m -6@? }B3x c_2\NmWtIarg?f tƼ > i:C~ :Tr"kT.˱(1`~TE(@D{Dgl  d(OggSH LI:cv[gmcXk|bmi^5n,øUī| S5jQNu #`|}:0;Yw=݀w DHUtHF2("YAgHe^Vr]z⒈hF2=wzoOУ,(='(a/>g6MEz읯muwlvżs?r;<8@}<7 ͷn| 3#k5 J͏ H!Ҁچ' SgCwxGxYp{yPP#;#2UZPU@Ъ*իk_oqEJe 4d`iSL'9tsa]i[spթm>CO,7TU낋E ,]- n, :,O/ s9ʗ/. 9T 9Y ,Af SчUDŜN_9v 0 d7;?Wvwa\} ġW% ~mے%.I௰ O.||GTU&0F I$~)= ] ($? 8>hnV] VWYP.M+g"'" @ͽd#|9V`ݹR'Y8 Jk|~HSӍƫmٶ8k;]ehHA}X4ԏ, * ( Hto%'wO_Kgbg-?Α9V9&,r7Of̗ɧ܋]E-"'X{R)>UJGj*K{7=!𫜂`Mo-ju&lwG/G?OK 4}x>j D Kp6Rh\^a_ZVS+^f^;fVl Żs#hBt{W w] ]63%O׿YWkuKG_`>Z Sӓ!LQmn͓/?L?(}MN`8<`}9? Pi| O0@ {  a @o @d?TUyDTl,c; ~C#t3l9Y|t  x1~z-Xch]6wCܾzQcr8`N~4 njE롳}z sz.{pb$/ M; a+G`~Io?H, Ô}]5BRXA6@*i>}Rm@'r*5rmQ-=_͛^N8^.jS =܇@%0Fz.N8.~ RtIJZKnГ&^7e!l=@p]XU7F QC JZ:@5hoov{ e}{xΑ#Z3qgwqv>m>N8a~?Rr89@c8׬ o_M;Y$@$n:+@Ƿ|& :p36>J%ok &u+g%.Ypjiz'Q_ZNf;fܸ58h}x0^E" C<yZjG2!ѿaw07~ezORsX~qw /@ )NQ^څ*)7?u]tL5^N ҹygsNE:"0t  @̱%! /5nm9@*m ?xp+Ńۀy>Uͣ tk~j7 Q&r rHX#!=z7n?dZPh ۏf! ~c܍ EEriXS+xO?k]9@uR݄#Caw8U2##tT a`z'V&!J6 @U`>"3/ ѿ,"@&7 )  \|1AoC U]ЭP;@V0O1rZ$ `_I0 FO ֦s2*0|C}!z29ؕi,%Ƃ?0~88{ T,S|D5DrvbuւY]v~ S |PǓд}|;C6YU#l4jR67ޯzZ۷_ gf gM.emु$!/j1u|zB/~"'$YWUVj{s&xzSn\Fmv" g-<34Y䠡_S,yu3$<P=P[ ɺۋB ~" ћ.wp Kz%ހ X~Xd.o~U04ߝm vuR:3>0s~ R[ /|>D7CEZqEq"H Qy9{/ir? WO͝n\Ǯ'sk%_hYx_@weJ|ܚwWm*ݻOOwmg;p #eR zt(ÿ}@3<+~Q9~h۝8 |Y(G$TC.N/nfZ4=^g%jcg찧i3y<<UNFD k 1@l8|yOggSx LI;08KdW\TDQ\\RF[pZ^wZRnyQ8 :Qk/K 'Ӑ7+o*?`.V[$JRMdeW]&z=> >x"gC~cyA=\<1Yl8Z,Dy˯>t\W8ۭ::;ꠁ9 =:?/-X+(Uwtw&f=P׃qM|J  FbR`[S Pg4/R.QT @#gy0{A46@A\2`@td(>J^W\b+Bu|GT*>0F/ϻe4n8ľPIR)@1fu4Rd?v&X- zGWy _<<ҏ}"<^&H|Nuͫ|͟ H+XeZp?`;_B؃Bw!o* ^\j'4n%>狟 uzfoB.?y;S]*syy5DL?Y aJV@P @Ԅob4 9g9X犁5.2;\3ar{G&8.ႇ x5mPnb@m  `T鴿=@?'i \Oƾ'^yx$9'#߿L&\Y_O&h]ųґ1ioZHUS`T!{bNLG 7x2?M)k7.pWK4`k? p%1?~"]_Do#o< ;~Z^GPvӠV'z7ʩ z]/;_ _~h?jȱ !] *x3L; 2>PWU{.@id[ -b%Zyr_fm;b4LD6g(utS{0j!rG3OwE㭘: k} '+uPprvurdO(~M*|5s7z=zm;|`8/'`Wvd`- "HP%9dZG9&,nWQ|oh/ywb_G3cq|g@bPcYpxO:͌6H;I>㱹qul@ pPORN]ExpI(ǩ(;Z׾d)_vO,~7`wC(,}Ө?g C("E7orOz pp_4Zlk&!(+!8H!i,R>V>89^{a=*^ѣإy ԬPG imn e1[ܳw3;wO x͕SnWy;j>^f~t3{Eo\:o)sC:6X?>tu_|TJG .SzpB /fh' 9[ێm`d3p׀;(C p)# LIBqP"af8cv PqO]#Y?H 48h9p4}q@9l>8in ~> %_x#.#M 7"ޖϋ xRHB&>7/um'#5{>i(|/c>OJ"{cu3fm|mOjt</4~3} 8@[s ٽ,e)(PW޿w)Oc_z˯yG:'{}u?gmHL&@ d  B;s  !q CIH@c ]j )gfk4# Yn̈́30ϙ'78X ܥFpUߖ9FJrm̟hl|6fsɫ( 6eY9w-TAq>/l J> %7ʞG7+#7(࿟TM9u;m!,1s7y|W&72/珕y T1|80 $P଱&GZ3qͮ`L="1|>xPy|:. h`66@0)o9>kP@J)xoM >jc Ն~pF8n;}@ h2Vz8 x J!9qJlۨ$<ľ?@޾]nڙ\4 Ys>m޿|}9_.k'xzQZ,VPNm:ZBXzؽp|cC e}CIZ kPOL`$rsˠ-&| ;)fm n˦GI|=&kn ugBrR>CUׂpC~ ^ -R_ğqDkF;{[oQ'嬝x>4sp`+<ݤwB8 >mQͭ]ݡ)3q#x>5_߁uW˅)+Àŷgl)wԵU 4ЭD3d$[6WyynN(EDs#@{ mX4)g36"h qݡG,@k[L{I -S!pa>9&:?/ /P݉F˼Og0'k>bvhh?^ >c@DpGHS`;V|G@+Q8ct `Q>֛hXMl=98TehSFhs8-QHFmqF/2>-iֳxsQ  sukOFao#6f:(1o}pV!)qpv}qC$gwz/ kƽy .:;6gv/y̟ପ&/EQܳ~฼|c>܀Zw݇lm^~j@VN/NZm8TȊʋb F3 W@<7w-~"mH)q{e@OggS LI< @A?BLUZyi^fy|f ɽ[rg%op,$kx&$2w:w`{݀plm^sn]` š[~<"0s=<T&v8_i8ٍ Ïuo^WÄFOILĖ["{Yul\4m&𒵾Nvᇉ"OOF$׀ty!pp\<_Uݶp3.@X IbX}05䫻"* _nG3 | Mf" [~uZl|̖& + Mx{Kk%̚XD|5D+jts EGϷPlE/CKy X$줚k=S^4I2'Q@1a,Aw 4Avw<:AkyL>4 L`z5ZIztZQYV6?|'nW x 88׿u{Qhῷdlk٪=gbs7 ~45}m"so WծOY$.kɍzaӪܯ-zg-L6&9 43^>8zu;f7$ jlVP㑝vWx-+th;7?@UqC7QW3?r- { 0,E0L+x8Ŝ4 x _'>IF%5}^ `h$W1/|7TyGٙy+[nXoڢ|AU]Ռ ]Y6!h.<P1-'^E6EL(y(ogPU`μ~A<0S4 7rt9Q=}'9 PT7K#]s/zV:Y$+0n@?YP*37iCzk *Ls'Py( #6`z˲ *jor֧k`V.@^a}eAhd>Y4zد{1=!Gm$` Qo7XJ\!P v *ڛ/#X}7~v-,Y;erB' 3&Hsu :=,k`92|՜am AW|T>O+@MY@?`Jh [x_TPPVbU@fSGexuh0|vKT10o }u_sTDA.; կTE4. ]2@s&q<=ඖ }Y,|Q e#t 8jY.ox] _Ŀotv$ UwJ.OWn3 (voÿ1<<& 8\eLcUre&5PF9chHWB8;')֬zv-(?n.{D?yEWű 3P(tA?\aw.4{?e-*e ^ky f~^Y1, @ 0zE\L!8J0Pq G@pIe>ٝ3ez\dXFι.{♨s&V~t ~f5.t\-hPﳹVesyxp k[ȧ>y|(z <(7 䐏d\(B@AIG |'85Jy ji&lv[imb/ }CorQ8MYX'<Z`8>ܱo Ww [2~IP+"b5Er84U۸kQ-csʽKATq 5x><'8膟rtXr" "*x@|Nؓ[ [)U/ݎHSڏ͡@2}.\rVoVeoXi^U ]TZ={)+KmSzw:k{&ځl6𪀨=l'I\1( ¿)9Nf?U3P@^}*?z `. EVUU@]l{<_H[}\U0QK7[@i@A?&үl \ZS$.ծHbQ)GM4=,{[o7`ƥ0E[.Lp%wumJ 1AU@ ? 9z2A k(O-8,w?m gd)0Ln7-"d6rrpį6N ֞(ţD>R.ϻR_¬&aٟ/y)XE ?(3kvv7wX~F2bWn[xu}[ t݃8IּRc}b6Ms|cϧ:=oZ#"`!FDC vy]-:{XBBƫx@C[ߒ,Ő|{`ǿ!w`RR, _0";-(~i%S5L*݂=hߪ5fn'_u\VXh * %(h2~{ٛ {srxmߗ.l~y)ƒdɷ}QVowx&qP6 Y}w'[;@ݵĻ+22WX'hԠ}p)6-@;q/U,;#(־i{Ew-YӽGC?@ PWW @e;0+?e؁Bo B6Gi/L`S& o `4ATaˆ, ྠ>y0X4Lg4/)/&<~|h>PfGsBb]#-o1%cfg_U]нyG4}6rylwMiZ'fxe,P|h"A>]TtwO<ܷ/ܝks-X?(M=5'_LMs{F| czNJy|r )"l肉 CsdC ej` 8A`VAyF&@몐?*Oe4 tOv|ӽUZW:_Qo9z]ELC^(k5ǜn\9♓k2_mHN&Vʨ;Z&3q{T~e>_8@e!5` cټ @[Oc2deY97[$nsP<}J 1Φ}e̍8%H~I=\tQ\i`=J{Y4).\*&G-%M/L)a=nR{=dg~{8{n } ꃩ yh%zy'H]><Ο*o7m`  (@Թ8bX gmW4J:׊Iw19zV!ߩv.#B3{S39P'{\q%r \Y_I,1 ,'I6`4cڼb`KƪXps>. 0@nH`!5@|?{1$*=^){Q1 S^&CbuP? \K5f_t۾u1`:EUǩvWnQcxڴw"L?CK :, {mO+S-Y'y˻?-{$ jGy_LW]E<{P@8 Γ0εcqc|o sV;9u&gP {Oӝ1yfuW\Lp9~!\6 7wEVoDTR?(O%Bnu68-7: m>(-aM7舦?h\GG((J"1dZЕwϳzp/Tl9V'oI#T1¥\\nz>rz}a[uA975:pe> _Vz5mVx?rqP=;98YS|_"I擢u@VۂJ8TʵOt8 @難:J~`AJ4 "or X2Fנ!iڠzަ<󛳀x 0+$ O 8n rIH?ߊJcɖ/vb4ָ2~Fckxo> ¯'^?̺ ϖnmm.7Ҭ6{澳s:P9:93wu(<u2TDM'EuFb{]3X_q;fvcŪ_jULʒv^ Ʌc&hf WmPV~p(W2}Imh=viN \N} S\^*ry|!^]((ϳ# -v0]7ٿH'9 G+DE <^ʍfӄ|To"br'W[EQy*'mU˷_vǟ9w۳ } -QW؝ ҴІrt5(񶳆\>7 +煝0aD7eN_}g@m XTϨ'xUu(đ~0H0$XeG2Ed>\*\H֏,`]ٵ1uɵ+V,zoLͩeŨ< 118_'W ,Kxt_/7Xy:W' a~BUͰ\^.n; H@w02̗ OY4qQ<xEl;}VEp2vS_>Cv;N8XѮ @n 7Mt N8)X뵚@ n$r;7J[qXlf@}I@9"SD } @֯cC`o!ȃ&_7 '/ڷOggS LI>[zh>:Eq@7@Ԗ!/a$)/g9=`dP@`Ou.Ӈ( m |2 -S)y :Ko֭6Z@st1m/rLbحhn8㟣93 mX FԼPqlr5 U9ֺ}:$ϻ][&p1,@z2 -*9g^W@ lYn)g6Ʉ 8 | M%U^0P0o^ @5-lQgӫVs[[ԃ0Jl+β&j^Q)' |@'[<5`=0qXi jQ-j]}kO =mX!T:hGTE񠥔1Y#!WxlkRPO} vv;o!"ᧇ4"ұ3\ԧCw|+N}g?"( :N0ˏj(Zu?[9]ĩ-S͈0S 7 %9_K`d@qw3`mA @k`l u&@`3ϗ `0YMtFX2**j^g:~m>*fNbs>{?9M~g{^0)gjEa[*.xv`rݕd3*İL(fN UGj_|};b|sϯ5~kh0Xߪ FZ7UQoEcmattIJ-0]9$Twx.y%ZTl)pz! mZI|yR#>+ .|UWxsȡzu|ms͙'Pfv(iD5IH[{Ĝٝ05^`3q0: }=Uq @1c@we&6!*A/7߻ ;tڮ %O6 h[! }wX5>T<>~#4 aJZTٕ)zE!R~imy'GK?OE1л)*L|Q*SuIgd bc!əEEPt(@Lj01Y_o w)7.<-tM4eǬR}eZyF~0"z\}\ϓ緍.xE_nXNgmH#U Lkgfa\oٛ { ɌxBӖKHl|X#'W{1.z  @HoC:D?m,Tv p..L-y(NJ4XyМ/fPd D% d_u6?Ӊ,W*pD~zMb*8)mky갛6q=[h#kxO ҡ'ˆ/@u/.X+R1 *ޢ/}qc4&_B2#7Ȿ'C/awP`&_ sǙkTGΤw2қ KZ UwnErw9ڈ(=}!5B֟sЭ/>Q@T/Yn!{g a`syWo~,W@K8?^zx[,So h͎,/}rb`x| \\b_?KW#㛗7NT\m @)Km8OCn,cb =*t(xZ\_TY t8r OO~3 96 @`^Jy eifdy;PgVٹE\ \7C5R`;yXɾ |@DY"0Dz^:@N4szI jT]:(AyYNO4nl\ak_9pwc3P23!J3H 0Z9& M !|5j<%9@q rL{3@F[2rɁ5sf_?of qV#gH;?@6!`aH$<9k\h‰y Ѧ`|; <$wjME5 p-UV7L˸5S}bn h hc \to, Ux:6ip< ^On^۶ů0|U3rjJ8k})xXމ>/@{e8љOeŒ@0{qG@nQʫ 0|۵Y`ӿx <^/M @ e0_\T@sgd7l3W^xp] I`&&jU. RM ,aξ2bK Z pip.ɇ0~}QQHS1 :0_?/]U wQmt=9g _9ۭrђ9:觯$"j9 /?wϸ?]9 x6}9 x}>ֲOq>;yq1w<:Ol 8lcуf`eH 8!|l|9 Z<$/`zZXyv|ow R-_L"0BDb5_7gC@T( nkteuns&['Owx=zb#ɫÙےshtBA=랆"j:o~ɝ`K@<ϳzsι̮dRՂ/p @fI]NӿC^kq<ϡs,G 7$ps*u^[ے F`8\m۾jL7>}Sڣ߫m۶zWOggS. LI?3]^YupZY`nWJ^왖'JJP g\#n`pG ]`b,!ys;uwſI+n2x1<CyN\,ASOgO3- 13_5Tѯ,o?踀(05PCrz'̟Wذg6} m.M%"=pPh[(.p=w´8N/'c+(xl) -ulnAAý'{FEO<[46 7~*N =݂P!|^Clji% .< oɫ F#Lh@XO&<eЎv#t[egm!;d+{|#j򼡊^!0ICb4+޷ULuz:rСDc!e[0_{S{ o6;.o _ _6,&(=Uؔ#];W o0phId- dk`2@ > PBn $! pd6lbu%u<ms Fp7n 'uF71D5{`tP owt(2{v?YuW<K? (TC@ T "7@of-W# Ѵ1 R(L.a(oLZr! _;xKݕ>xKV/gU: V/"X?C`=4V5hG&` H $C , uL@!N`i^n]pfRde e ! %?`)q 7;4`_.^`ۺ`9aJ!U1@$@Ē3Ub=3%锜ET IVR%\%xWPuAj{/G#,m쳢IInMcvҐC\ ʛ*p\(pM.<vao5STu^=2]542Uf1DAӱ,>n,-9`X> t[2lZA(`^]{Z2-at|(v %,[韬943^kߝP]T^W$R^ 4PƫR|:_ {g `m' [@<]+?GzX^gT%ݕ d*mšᛯ8(AHUsyE8'g~y~]a?}|Z5 Gsj7x|Rm ~Bx`Nd/p$G ۪txxP`mQg_ D8 3r~?x ܽ f5JS:0i}N?  K4rncNH̑X#@p<ա6LtkpjEk;j1v-U(#v8 i`yg;f@o" 1յ)6!6Gb11I; \kX/ǜw,;*9TNU+f`Qn~0NP9r@G9acL C9`O W2| 9594]5RL&9L>gipsH#Edpwnpwgཟ$'uHG4Btlk<;?M8֪Padr|~t` @hyWv SxBv*οi_ j;5G8Fv]J|0{4ľh/.UIcLq~ ϱPBߥ MkO y<=a\+Zqr:oH6:#a888؃G?>.  as(hbLFº?7"ތy1E"9p50~d`<dWY t] 'qD|@>fW>xlWzXȿݳi{5oJ0:ە@<6po)@ů >8*[5D:Yu޵np`_*=r1׽ p k2L3\~o~>``j( dlū PUU9zj$& 0Yk~ 6 U-P` |0~(8?ël2vvRkXr%?`h\`98|?{S2y݆Kr y|2o7D&.yL Uh'#6*A01=_skC' CnBomف`qۦڞnϋQqߏnLS?ԂP; $bh<} \bD[ avl#oQA lcfad܀!o@ ૯ 0 4*CIgM~e՘Mh\%P[O?$w ` 6>'h8O/e_U|u>]$0}PI]f.x@ kyܟ) 5wΞ#L(hH'MŊ?Vi-] ]r=_96~gw7Oz>ƒt\u| >|;ض0ږ$I^ PT3 Q*) 684_H2_2PV@Zd o* %F  KW0LNN0:At 7@}FDL v|LK@/C5Fq"rYT\8䈿`Í7WZP8α-@f]y -fڹehDUO;?2_ϵ7y@D<$6$Sۼ 1/.^WexOǹfTG[i?rteu*"m̔P\B|& |y K"YQ*߰Ys0`=H)6 ~/cDy573_׎bH8@ d+<[U\kECw_~]+Lg|dl' β>, ۩;3~r2ם98+Z~l<ykTCȓ,}G8+o%L5miXY'ee@uo88k7k\.c&6Y/GP[s2y\`c,߮ )_!n oo#N{-x ; =i P-mmT)zhy R3OggS?Y LI@MHcU]Znu=C8<>MJJh&bT:ɥ]I!ϗFG9m~5tsb9Gx*MߋC-CZ/iꪝB5_V1Goh.&;sֲ%w +D%0 /AXH{ K`MWpG'ߏ_e=iXR >C[ $;I@Kp;T]lsKD2-|H-Nm qDGN9sT*X Ŝn 5NWwWΝ o'򞯵~\<ЭHD.N^<> Ō m_0SpU|oྜٿ0kOAb9-~˙&PPr)*QE+`YAI6:]Pe%M$tu;4&L12L:wB/BL{~*Enl3v٨>v?VS7׭CnFTԩSCCL}yt|=>D{ջPt5߮H{NJIWci<ޝݜκ99=YG1xylbڬrNtNKk``ëdkC]UUZ k %1pƦHg@ E `[FHjxD 0jzD T/1 4R+sI mznn Fmk^Z^f{nr䌼9[͕ڟvs蹪3!`{9OU |ut:Eopš@w͘j8VgUCs ̙]Wq4Oq* ȣp}zE\?Q43fuvFrɤdek>qT`>٘B8S~ɍkl$VPS]س L=L-1r^@g-y}?s0~h]4n5 /h(5(^)r3h=⢐LLxvڻۧ4 0Y-99 $ݝ'__l @.=}fex1NL򣳳 ـu~[H PHj}(x|P}jx@DĿ 5Lw_䣫NYߣMm=HhF.6x7o@H"@?!`$M֏Rm].w?|zGhZ[\.{˪x_]@7?y 𖱀_?EH1O`[BXg--rwR 5KGr:6Q: wD9l?[ܷ; RbuQ }v$/{@Ȧ+ m qy2˿/A&YE )眸FiqJϞv d֡]瑧x7pel)wq2w*;MqI}e1AJ9)z_UkԸPh'GT&I&4 8~g>]%NZ*ih^Ğ2]Mv~89kY] Y+>Lk/"h5iR}=S)F x >]i%]s͍vx~wSjK#Omd "4J^mQ C3\jo]PAw;d@3%%re'sOu 4CY^x|j:':MIijԱ"Gh$g13tֺ'm+|!rO%/ w $Xa3#V~ +2 -$@96di DKt(ab_Fl2/i?+bn]cFf 8!DBwߡз >E^|x*$vى2fO_=]yֳ/s\f4'>սǁouk`| ʞj]OTd1$V͐k?7 z,*y;A3}f~=zÒ<]pT_ַ2zgg׈Y%n]2ds>mEV&K_=Vۦ0@`ײ z lY p Λ6`K0H?Ye?rBEL)SL{S.F,'ߛۉCp8Aי^: &" #0bvHXစ:곙p|ycd>a=ݯU9Tfcnض F*Z VE9YhSk`5EW&yꩃoz#<9JuPfe*̻}v*u"J3p=AJcZ6P0@̭T'kpfvEcsr&I>ESC*vl<xŒ?maúoaGutׄO7}9l3Q, ܽȁ}[OggS LIAXj]l6N`joXXj;;=?@ E )5@ GWŸ}~۬oX)͠I$1ӱ:Ms/ۢ3ˋ3aC ȓ]|z zPc`үV5gBWSE1 5UoMˢʥ'.(p]Pg@55us﫫5L '${>t+ Y sꧩ#.`M2YCn.*XcʄOaad#7ۊd ܫ:UA9F e4QKAv`&~ӌcےa$b#c .x/`Bߟ, M2F!fF,~uLmS:vr[Dils\b7 yXNsp<ٛKy#O|0{!" r267s}7Yg#ruhv2M4g^ v5y|9YU=K]Θ83a Ͳɑֳ"9{o5k9g}~?x?-`ӝ# ~IfC(@$年A` P*"* d(#Xm@ m ga ༏I"odl*IykI g9rLh>b[Eֳʖ-f>'qH 9SM:9 L"[~W~5.OEUy /Nq j27Nvǵniwxsrzm$Ӧ}}8c3jڣׁ+ la&'~ܝO5B&aK:{r:7[}]ԝ!92pc{͂|Lf8矉Q2@V0Kޑd902F\{"K=H,?d#d?90aKn &+_ӻ`,O^qPWYRl@h8jyOIM ۳S՟5Ĺ28,rMÿCr?QeV8dӬ"9R5 ]g½LL֪>7ʁ|} 5ghj>o;x85N5lHeED3 `Y,O-nYX6 `ezpۣ/ Eo`37ʳX |$Y6o4,镰`Hx"VW11N|ȅ*fJ!k/ Twn& ;O/#"`yLk21b"Qws4GyRZO'Vl?NiztR52׾ߛ3L+5g ͓|b1)ps]OTwׇFow=E굠j;)< ~Z1UC~[P c}@B[r(R WI-@8C@\I&E6IM>28O"8Z~SzkmNocZEۮ[$(@ٯ_<:MƞF]N@։KFJWg\\+<Ye/5 :a>*űfo}n{ C+M]I vJ8=]!|{8*DOʣ&Id6.?gW 'h3`|sNTz87^ieKAom'{"* @ &@~#@FnSCǧɟp 9@l^^Y9$ BE>.LAv~ؓg~;~oqc~Af 1hQdbB o0a/-\zO^>Y7Nu~W2r+f:;9__{Z.ǭ>NC󻏲SGy>:O'_]7>S߁ ~=qZfsu k>[%r/GO9 U%V@1d ņrl@X|,K_+xxHPa  PZM6M ,jv $lCg;̷Cs\oe}gtьoC{}#g?e Aٲ&/.[?±Mal|(LK&/mَbeT:j½d'?гLȹ{7n&b.cV0ߺ MT?r s"璘.οw 70`@Y\$}1Xߖ5 軑 ?FH T>9!f  ϼ 5^ ́Lp7ߓl^={6g( Iozlyp̒,A ><l@tP@z)@ *e@QC܀8f؀( ͻ Mu4OBk϶=5~`ʼ,N |C~ zɋǶc}w4,Cǡw6>pB]<.?KC ''xMt{۾FZ3OWϛ85\7秠wκSԜ*\qa}3"Pg..4"76/4|}{(;1*bu@o=ce @gϴTG'_bq,̗0M' |m`gT:b /pL_*} >t¿Yp`YW Z\ .6@G#pv`7 8 }<)w %fz9V.q~V0f*TިWAڡWcَO.hxd;틴^Օ1j(۱$>3]cW,ϷסhvR>-dɈ".Nw)>U~9C ʂ >dN8 _H\v}9c:!fyuɲJ;_,KC5Oλ_H:ց|~Qհ=guffZS>eoJ.9g|Թk6:pofz-m#OggS LIBˏOVZv`x^jռ8ƿ5d?U/Vqx4ce͂.D>g߱Os؍oB47ƎjQDFVê&w؀\ 5tߓݫ^ c/OžzkX.S_c}[CKRϊqz遾%C/77s/f}?͛ 8*Ab\rgy[rPG]+G m]69}~9L'q|xP7A"~:[3pxHE4ͳ;ӞM ⋖V(v9Noe<[ [F9b_ԯ+Pa~|){2%5~o<[6k'@*ê';/9&n ͔ >u>{\7='ֵPOyNϜA=lw`<}C!^8 *^kQ!YJPZ Ç®0X? 5JzҺ6/?(8,kAoO\ z -rQQT 3ˍ,Ym:ˋNU@k ex{@Ey}*z-t-?vgFxgݲK"?c3(mҸO+64Ϗ?xI8"9 $NAPSNʵ/sX`yN: @ z!lb\܀gT4 q dXeۊ0ldߌ0֗8b~uYvI ԰ˣi8g8TPDg`_|S%fGd>SHfxHeI]t/|/]h=ʁPm n =T |`7|=o @F[K!A%1(ppcDjL,U&&'M W:!$05 @׶@o)  gobX|{j9W53 -`xFh/" ࣈ[ P\g CIFH.G`~ڍ⳪]w \w0ݽ~FN\ ʙ7s~@fOOGV^ QPT C^^~o @@~ ?|,>OhJu PяTZ),,e86Y|Fh^uT' F~#N鞷1ӫz+j}!_}Qk"o;tXu98E!aОduw'*C9Kh5P|Mǚ֍y|,<w3J{J2[rʲ]j7׆A.dmH`Wq척'éBz adJ+ld $ 0Ӱcl{J̰T3лD19l?`,A\7_Ȗ}B>s TtgyXhQ>l -H Ap}%\|ؖ,N7 F$н~|M T]B'+jooA)Z/@΂oK ztEu.fG/[IP[oo쁦xW 33PfW$޴m[to_EwƎٓ=6S TibAD'{"0`QUWx wE6 ٷ JP~pI!%SӭRDz]Siގ0?;X 0X54{f7pb; oE# <`KIh@ NJZi _>oƄlå0~a"g<|@ o&7/^*@ɾ+"Cؾn8=dE@D|XwxGU|̚1qOGtqKP%_}BZ,~.PIɟ꺯RZ ` -yi5edc '?`lVwge'-fX[ f"0y|kn[vmX sf83Qh(y׌ro> Co=|eAZ?›#9j#N :?:.dcMä{ īf7{dwх5=V v?["-҉6W ~@+y`xU ж `o0@)^MRH)kӼgZsK}Nn@㡷plp=}xN7@_ 6Db 8jsx:X Wn' 2 xmUdb鏹5Sm] ?-u@@sy=s?2D6{ƧE$Lgy2=}\K>i33/'0} *ط`WY0XHs_KDv͹n(i52pD;5` V6f|1;@si-]hHvH O$J9zƾJg k{E Tޗ/G}k5pN5`mDS1$Na ^W(~9Tగ+yej6}=)1+_^yu?K;q="`p}M>=:<"5XN ;9..ib ڹ?Dvu,m)ی`EfN'ʜe-98oyW*s~>.kҬX re_[8Ni c^I =Zo% P;I,4*G:yuRzk$C6 ێo)M3*4~ Bɚz7* %6~cE4^DP'bh]5'O3 ?agzL˳[bł%wj*=~ Z,p‹ֽ9m qd%'f__1 {*dy6sjEwͻ=bPמr ?s^@ H ?]| [ 5.zN@S2|#~ ar0 ,>)VEEg=UpxM^ĊY>#hgaJ HOG|C|/ .w8 ~TM1?yu? 3.@(+ r Q{WVu^`Cg5qS)? 8;:,`ϊk&wĕDL=G wcNIב<X ͥ3|r[ OU!_~yr@v m8ɜ>t$CTS9}@#{d^I-'l XhF " PZ;y#Cp Aְw f V3ޗz/{c>59ͼMD@(!fЯ~zw_"N/y;eQǼ-XU),^&1sDBpF p>CoU4rEttk7^ڧqQM~uIvwc.3m v'TUY`[{WrX ~OڻmyhtˏcruyvsE.2nh^-1:., aN?@p^`k3n@h) H"#onn5kb:̴Woʖ{'!LDJw=τK. #oD)i铂gr+9y6a^yK?fƃ?0_}VHuWh`/W⾝>\9fڣz?4slBP0W^W};Ϭ5܊l" 2,"ER~X ^q:#dWBM෫فv돏8[;?هetq9wuoC6LQ;+O$fd@u.7 ^~4X_2w@"GK2b<^>3&9PXDxmCITK0N?p\`y }?9kR^FF} =+!x:u> x8=i{@@gtߺy˷ΔKS]8}j226N&YiNdOPx 1>xH7OmпNհ<>"Ǧ(z_ur&:Ef*8X8A`V|vSWL @ W5^" )ҳmB10Cdh@Ex }@n,H [#uA"*>鳩2̂[/9؛hC'.hp,@I߈ eQĂ W L> ~/;_!¹]`BϭJPږT!1E@=gܭf,]):%3AJL7v,_Qf5OVw#s ˗oG @Ud}Eb&<:v U- ?0:+8or8gf}C0b%xPi~L\M@%.>]ruXf|I9x@K@&7.e hU9gUWU o]qkUkpMjBgV 2.#{ asE AH6| QixfgC d_c}lIIHzs s@.p` 80< 6P!rnn^2ݤ w=84CXF5l4_k@$7#Ը[~T+`܃ & Ϋ{O`VȭZW 65 -hף+3\Wۢ]r gu ::o8:no m}׃&rbz缘ڗuÇ'x4ˑrs8P@ w*"Jz=l#` , DwUU}MW |wBɹF&)L$ Ȁ\#LD{jQMwhxFn޽xPh`q5.Vl[4~@GGO\:5Azk ^k05~WJ3_B2A %! %zƐޭ?phc3.ۆi{| ~uhF|}y3*X '6NXpg8 >p{˙ 2GCXb! 6?PV`@( !B  ^DE? P@("l@9hOggS LIDEps`C`OIX^a86;<<:RMOc&=鳙]9$ 1G>h| G޳ }QLUWF#Hmc ` uuC ʼMXl<PL?JOdFg۵[[oaQrqz[fS J#3gh{?"DroV=i1i&^px/J%@9ꊁ4 &YNo͕Gs{hנ Ʈ &T0o T+A P`{ 7%O@  `}V-t .3A->+?ƿی`{iXz66DA"B  9r7ڌUR PZH5ώUW{htg^HBgD P]_x G 8^_g1}Ardl5/r0_B\r#l߼h 9d7_roT޿I4O P\`Us,wV+ D$`\x@ Au0W=!b$dS0?F3m-k`|xx3S-[XpBOv03|0@gOB76ڶM;@gT_E6{?} E ˳<${ob|r WS\y7sjp"YkyV1ǯυ/4j÷o`凙h(M(`W̚]\co`xLr}kb­Bd?`,IY| %Y 8d@S`>$ xaON Dl@=Mܹ]н3~Cku:kwx[k $4;k SEL?dn&-b2i=fQek'3@͊:%~wvc`|TS`~!5}`+JOQ1U@^p88 ]; ,oM7e?01[f`~MN}b> ~/cnĻjF^U:|CԠ-9:{Owv/ÌWGsZy +saZN•#oHJʟ\QbUg}ksK:5pZ&X\8T@-[s0t H@Ӈ]A#N.}E@@G"F}~@"6,\ߦ[EA~ f/ o`g^]xe"1+ݦkoFc9_in \[sN#5* T"L5}0}tyxuKhσE9+ʏB1D$b eO@}==k {{)@r(Ir3˗h]Nnh&&E? Wə(1ƙ'^c̯벮LJqu2GYT3fnޤgηLlX\&؜ F - @36&YH99I2 -}fXE2c5hF* !cMTZD\#ȂRy5TCu!/3@K~z4*M5">*tA! z]r;XFw洶l?}΀4m3!4ϝ(Y~ɧܨLRcz]o߼uCtڟ^6FVmDi2}lmM&U4$aQYl˿3NÌ\:Dw]ק~WfI1i+lrx.1`ŦƤcx#5T*ٕP !`׷kbf*<;8ggZu?P۩&[&( RHJ }>{MT ]{9KMg֣f0?JqR&c[cV'ŽIw Գ=|hBkGt}Rs rӪjj1|C[suM\>nV]2O^tu.܇gUPM?o0ۈJ9Q* $N>vC$pӞYߟ?5Ry~\惗K~ϖ:XE l/zN^D8szmg}wf^է֙|> goƭqVHϲbl; 6$%D&k&6qw{{aX={P_PЍ5O<*~"r1{'f כN'yń=g'>%L-/_v.L|ه6K8*?9gދ y;`idh+b~sf*4zk' Ss7uUkuNF<,~$yyh.@sAmXuWtq.S7[P@ +Z_-=�} ~RTTVq_aۭg߿ĭƖQ$P+qޘIɬV?# mq?s u0"Va G@Iw-hs 97hA.}o xotJgxʥRupxMC.tv˳Di<)ä9\ڮ' \| Re="8妆Lʡ7Qý3p$s'_]Lk] (K7]ϟ\VHb~{QbV9GAh} HQe @̯# GEY>60UPP'|P3Ր-Խs?\^r^As{f⩭5z?9 z57Xx xFY%.Px=hVNM1rqf?B[z!PsvKmWG  deI߬LA] 3ѩ=)fv3=3stjvo*O5H7ٺb"w@S. =酿p9WDsLX6 Qy$|6+4'{mD T{ЊŰ5I:|Fx}hW7$Z o_v`<3ӎ. ]W''pplד Ej3jտLĴj/a>!/| Է}}s\u M3xZN;@QdRrΗٔPz@\76R8qۊh]+c;ʖ_dmf@NS5~KFd_~l7y LXDǭ9d&| fapKj\1T/XЖ@ߩ}KG}hb'?NQ8zN跫= w__ h_v? 8-L1 ™# -k\ z j=^Y]}j^NAq.vޢ8  p9M4_o4藠" k66C-(,$R`8˓Yr *g^" >=b{O @Khz/w"kIq3ut}.y92/ʥJ%f+o$,POY~5O4`}jR8ދfI`( r n^X||3E ei>Gf ? gY80F}-X  *yz@ߜSQ@5U^)X@pS^i*3tbwHvkxfȎizl ф>`䙷>< Gը&b6H:U}<^ƀoAid)0:iBA΀Tn8mMw?${6eo@U9.C=&.z;sBUJQGK* /0 X?h }:8Ч(Psd!Ɇ|IdQHE~hQ,}{PH@|A{ 1_ gADwMO 8* hoVy]m5L^kۮN~E/ X|ٛF?g[5C6#&Ѵ`}Z@ghMLIU k(}"꧳9J$t3~NI&.~Sq17D<72)ӇCrk3g *Z?aT}83aQ q@AדfaK2g;AfVa>V=7ְ?̠fx>&5cD]$,Ȳ[^C`8 lPfO`GGh; URt: (GWy]c=LbW 5F<ifQ1s#䝳*@Pn&$gJ3l ^uo5@;rd0~deP0t)NYXo7 4k6u5۱[| U;OAK \z71_v(\Ŕpr:X|yL>_d8y0 0Ps^neh/l"âz "TN T9D`6.@; LGx_XA( _fqȯ**\Wxv2wU$,bhVgOc8\{I?/^4x\*jC 1 )Kx"ͣ'eX@i`f.|֏G $#J%ԠTcb}~pn>^4|<B b;r5xnn-sfR??~}!,>^UU񵞓C'VnpΏN:]^0ׁ~Z\WG c9jjz8eXPm-9u{sY+HkO6&fGBddopZ{_94`I*$Y򚁎Y>n ܋8fVe]@fw>U ڳCU}p$>^O"  d+. W2`ڥ d -4p}6@DF~i= zGl2)8'&Gú[߿eopjyu_+^0ǭVu^Ma_֗=Jqw5p, o5㹩#/{{2 ~Ṟ8Z)>3q ɏa2Ny*8!L X7H}X"&@?`E% dsĸ1А`[7ۆOggSi LIF xjt=:A=@:=MPRmjfWjpZ]͓l^~jmN?0}a 8V E݈ogsѵ_l@dv_%ϤGKCl}p29Z04V|ҍƬu8zIy%rx j ?Ԙ/I@p+e^_u/}}-/7kB̯i:<̧긯|}W9ɺz,g3 UUw> K2.:kT>>hf͂-Z$  ֟wb0yW{D@~(bHZ X?~z5@-+c|O6/+W+ᔞI"[f΂o]~=9o,rxf`jćEhX{,sjTU c&UJ }9wBY~\'>0<Ȇny.ޯjVN2)] /k XSVgkγd߀5h<uY uK]?9(Ut>]tqY SU$h _뿿'̻v@V8?vB$e8$ȯ X|Bwe}C~lfuii֝cAMﯹǙVT 51=o~}0?I.}lFȽH@ ;@|lp*_+ء.;q=6+ovʑ>3iţ]^sGi8ŋh%^yn֥LNZf5cddY,S65s6+鸎}%\ۍGd{lzWGx AkɗWW.i샖u7@ fхÝmstey2'^L ~} ~9~J(fh*EnO3?'i5,vɳho?W}4@]ocW2/k}_x/Hk|@ ldH>60.,+ǁY0߀Xl9 NYQYgzW5G406S\ u r|lWlOɜٓlBˉ~s*u"0!N?_̿~ˠi_#!AN#/>o`?- ']vk+373eW"; [>L>ŀ,SXv n7H^czxzO1Ui&oV$'|FcJ/9&V7lgPrpҎs Q~'O"6^kvǀS9{[nu*xαnnqL>]߸1Q7!_faX]8}wsNc葟 eO@.Cex~q\_.:YwGdOU3dp7z)~Pg]S3,T6xVrZÐEĂ,*+xO+js~j;`Xu3zPKo Η뻳M򘐛`ude+y1ywYy<=O:~}4 ѣқ..1.nL~~}A("p-P, ccYO=z6HAGH ȲIQT P f#7lI|%J)(EY" -&@b&X?xi>4 `yն ߬\voo/Ͷ1R4HЁ_9)o/av|?m>Ltb4[,{:p27?WK.;Y_={W_X6@g iQ"ʛ(/ckJ?~?8 P DZܝ~&`YvU[A6W *w3$D?ybT@@{@sg)nz@UgF-!F$[.!Zl8b:" ثQU@(K 9n- a?jY w:lLzyCPLG8`jJ>p& 3@ /\yS27w"BC d>+כaߏB^^qOvenنzl*l1_U44\ 7LG,xz:-\L 6鈠zxNWS C27ؾ0j*+ŗs'uuGm$ό(Z ߋ$% `'6IC؀qlKA7  a BTkTp`I Jc;oU،p;f (Fk%N{mb|7>YceJV|".q8;NKInm܉ -];gV'܉&AGdή㒓y6tprF`)duuuS P/gwaI^s}-ェs\@uZ߽ý@B1YΏO5yq_~pI?ES Vy5|l=``@\`A_ pNPUEyWOvf!( |41+-h;5ym7h@*m kX#;>B |9]YUo*#],7מ< 2Sj5 /OF! 8J)ǟzu&syo>TL׼eD^fT9 k0=|=Xec/vFZi X2m8ۀR0 =Y^m$ PX' ( l^Iѥ)בu2XVSbkQ<5`#^X31ymҰڵ)÷7nk/}lnyDCv:~8m[8NN~9q㞰Tq ~ᓕ .|'{N@zV<*;=y@t¹z X p^-Gw7@b3O'.9ҞEqL5v>]@K #و𭪩b*7 Kz#7`H$~,_Se@9_a O D0ZI:9 J/m<;P ?˕]_?}c:f?UaYΈ-I[H5 o`G#]ɲ[R@8=zʗA4,Ӈ[\.Z,TA &ЯY\us=s]dVt:>i8Ni澸`Twe }0v[lDTDz_L|ÄJ@D?"\ :6+DT`Z+D Ie^z`ڈWp/U "~֑`Sw ա ~/p{^,{2*o'~mNzH\oXEc]kA:yLd7_q}C'r?k k)z'>O9{# ߏ{g W8iz+j^d򙂏EVf h'G$ RNͷs8 @|, L@@m1/ŧܘ F`8ߤ7R\ڟQ@aWܳ#}#$>}~Y6ђML!;mRoXU+E<> $FZ|Q|N{ ſ YTx׾7`#75uZvgg'y<$6 J;JL}޺+?X~& Ub1rVKPCN'x0l3@NfRTUYn:#y07~a'GZ`UkSU;!k#C4u5CTy~5<.A52$C@e+ߩD) _41 yFH`gf!>96pp}*L?X#!x FZ,òy,h$wh<@Dv칿nӵj o2^[ސW ΋y{hc2x>+HQ0` Hšf( • tw}I@ |1<^ `+8-v^ܤ ަ>C8~B{~-E #G9 D!e_Y$ZSw+픯QEF!2[=dםgj'bym(!nC.1]mR<|R}_STj_`4݀7.aPae 2Sg0gao~Їgf|rg$0!fw ]9"7O#o`?]Ȗ@D1Q* ~' 0XѸ%S`#32Ph9 \~lhwKE\aΙn;_ߢb#] FnL=7զb RΗ{H2|)=q g]t aqU'|J: vÆv/1Z1vkYsP[;=c?Ao`~r ߮-w E]LapΩh8404e3`j!7@h~ˊT^+p?pF _K"" ?09yY ,@@E rXy0$Jfazπ(ۤ (; ɥ$Pxu^A ? vi<a.1Z ۞ægݡb#*h|+ 'l?>|~{8^ٰ|2f3 ^,@H;2\F]v 7WBSx f?;<W`Ѣ*юN,׾'FGo_~8ߏCLpv>^IeRwH K]$bLPl`֙!P|mr>Ꝕpz}c/@0޷08@T>SI`3,@ \@ Y!s`7X#f #p`l#@;Ȗ S#,Ŧk.]U5*4t!UymvgY(6de[.ů +}ZvD.H r9)W`v-YY-(LƇHA ;=3]PY-a537 j1 _N`O $=@pu 33S%޷$JIlfcD@hM,h"*f#2[ $@|#7P+T  \jx̅IGc?`;m_G2NF{* =`g&a[=fFqkS%~DDfߟ]( Ʉ_ =*JQw./أ"i4 +ל 0~\1{[}$O1 ԫ:'Wxs6SO2Dy3y{mo;xȡ5_2B[/9@ T$tE @H Km I*WpMv6*Qu .O@ 8=iQM끖=uυF5 >ʶV1c>Gb`LV^'[hI^J>[:N7رj|jdV' "U4W tBc&f:Y:elܨMZ+O_N/Zcyk|0;_/'ڃJLvn*^IJl (\w32k ns#$nrN7_Zf_?p``}Ke Z ;Z~GkSDlI nKOEy` G/]wOggS LIHXvrrmU}dmdb޸<Epו؋u7?FrJ-Q@ x@<@K:8DpxGU "EԯlgrSF" _7\8t8Td2* _QbѰYGG$:MC%i/|%4?@agq/fւWsr8y('̍N%u۬K]R Ϝ}8Mlƚ"l39䥪 [2 T >xR`{@v΀oSU> wx#KDxxv~GJq;0{8OB;V轾\*ҿ_jơ+S\r9CyޟO ߓf)!y*H:Z%tZm/njqpm?]U0<He0` {:#adl)% c&H{0p~?@#(@?@{Oɞ`/hQu'ښ[NPoD6*f% ) ܣh/6[ ,>a)AչAF¼Rm/ Mx*͘L[fA܄V׉ajO+ϼy{?; /G,7?s/'Y+5Zo^U/똏};̛OfgFcAjP5_ sy Y@@   :zN0: Y`\f`f(.:/OMC`@M>[5:T&A2R@hr.hܮczwJ$fu Wځ{?;x#!|GT&dž0dxRе\OKcjz/ _sP;&p6WSԟ {n\Aʻg@VϚ7U0U C3U,>]EE18% kČ[͎cp``SPU ߓV?/*| `w@0 Z'uU T;yЗ||A9:-Wx_@cf6gmIkxx ^dIwbf#U,(49ʜuXPs,6 @6"i:~m4R.|2k}r9^qMSxE09Ѽx:AizrSS꓁ı/6׺ t2~' ̘ L;<9e,@v8_:(6O- L%>"_(y&{ @d;2O,q H HpRJ.F#6t6Q| HcLρ֯>h\PCv_[[wp~.07|Yˣgm@##30{~P;LM|A֧?ey !2_<"ҕiH;4qooϦ3b/uy +|[u& )_MsLٟ]Χ>D5 1*_дtǬ;CƯH2oq|q/}=Y >P0\g8AEu$P3+ɏO NW:f8O ;PA$yi/@`|3|~I@| W|[idfUQ <'^wm { @HY3w քCÜf]5^5krn;5Hq7:+<] f i.Y##]ǥ?;Agx}K/,ކt/쫘̜PGnYlnmkAyY/hlUL^='LW;nE A{~|˟n J_Ԉ_JaN~n/ $1 yԵ9aP޵ѿ 0Eid^SS; |wIA 0@ЍʡXBQ<@ ^(\aNm!b( /|>w <*碏Zt!Q]^N@N%R?KH׏5}]Y:.~;p:x}foޟ9)p>'" *_"2P G]*3WtĖ8jG9@ Dp'Lf4D;o n a EmCP҅툘(<( MzeLTWG SP+T~&!|8Qm+ 0F8 `$+ N@~fdn=>yX@@)qs} 6i6Ov fTD|^Y f߲?UJb-0 r`,]2SG$!X_v/ cHyR?(\Y?;(JoTK^{/,fd1F0s8Xm ')(7Qgل3DP_g!Q@Bd&q${*(D TT^FP_J+ `^eTu8B-6@An\x ](a2p [5&`o4ZCGZ3Wzi/w@M63dz._\ր.)1,}p6H: HH$-84/alE&WoKJ3@}, , l(@gP }êF0;P~1ywn|s[{?Cg}75`8(Eo_hhZ=«@ #m'{V | |7}kDNZE5 d/)U@^B0F#aI4 {Z~(EQ;9MG~d8[tat8F\Eq5&j)AkwP`vYYJҾ YG?x>{g6ٳol Ǒ{<^:?2|]Q̪ͧ y \<~spDxI:gg@fLle-I\P+:ϺTgfb*,`ݼ}d OJX+OsdY.<,FD^DD@0w#(i,,Yex Q#%ԼP˚2lhŚ>(\ieP@ FOj#Yx$ @ 6ܷWSV}9<f钢(tm],͗Lv<iXϯU熻ngӇ!R.8w$M׽%g, [xj6{Na$\6rw6_yNҟzx9r^.b  \ (U*,-VX&` K *L~ tqD;F> D,'8Er Y4PcD)(xwlށUUC ʓr;P_\W?~y-^__!7 Jr[蚧o;`?oS0z>}\_%IZ9KO˿?toQgUJMG? ߯I"8<ב+IC]g ͻ"fs`,fr9gq٠BwZqꥢ}r,$|?>IfYj%GRt, E\鄊9/xQ !߱/6L}ǀol]A$\x  .w[+Q/C B;g OggS LIJVq|E@A>C=MS]T=QRQto}(a>TgRX?@Ӹ\͚ܔ6Z/n`ޓvꭿ?G˪,+T[ri#G`U\',U )_+ןo~Qp޻NSt(eQ w+?v'& 7ĺ7𭛛N??Cvcd}5rd:!` 7N PUt4;&u`sc@ Fn}1 |wHFط""w((~K R h 4 &\=gV! B\p7&;XNgS n `8ï9νϲˏу1rק~Q vq)Opwt>|z8›<+kOv켞s }YMU/kc7|oj<:"կ&un{K}-E6u=Tº\Q9f6T]%@( kd!=c؀lgq[Wn5fH K? MlVd;eXI Ё^K.W냏Uhь:,}yV0@*VzK9>ΏoT|5!c[.[[ySD?*l^)+NgqE\W(nNw݆u&{b͵fLکAT)^1Eޗ}>ũt&Mg;ًB.{E8ѩym8m}~O7o]]'1Aߎ.鴳)Hkc/! Ev^Yq=j~3_iDZxĩ?# ȾV2Dm\ыVlNZavגwf9η:'3MVrhvEvLg5)'{GU+$G۔0Hʃwh}~|sba~Z |G{|]d&ńyG"Ț'e~4>wgxք&6~vq/=|b@5? w7*3:K 3CpY}Negznןu}|i*Zk5L=Վ<)RXDZοK='.^ƾ: OOK*W]_\%5/GP{|f~<1nl㿲qhuE^^\(@dSpAִ`<˿`!5{>}_vI$캗;VĔys-<^:/z/{--tn]>vfX2+*****ul1s(Eo/\i8Wt%Y r·vSlkA;T$\yZU6CKS{pXbם,b[-}.wJA[75 qR 疗*LdK͹&Txߺ9u.:a{O/bd` ^[QTEU=D0;<F6^L@\D,/l_xkvTVY:[E4~' kVW΅䍽47՚_{CtJ=t6WyWy{}w-~ kR)y+ ).)P~%VkCl26f ٓ0y1{eέ67 )u^ :Vc{T%&DPXm$OG$2eᗝQf-z/[zK^*wtSKw7鯑^Qb?w(Zh%^jPA D`3s1*i*EBQAo7?ۥV˃"o"[|ms?ߐ6xC&:w~mz&aC٘VE={ns߹9*60yc`;r)V(@I,)3 LloϻUE_rMͱ Z\q##yH `K 4b#Y6tIK@6XV`0 $IhA#cm5xeb1+1%' B^XX09G@$fc9NnǗs5o qy !0mJ]ޕݿ SΡ+Q1epSc[ɅxF"-wtq6qf|E&_~08&s%dI^X?gJЌW2̂j\ Nv&rH?R>p9ky&8l jhS5vl;pu&ź@SyD |Y㦢%:kW įñ1,d2I+0g@7*ѷ2 hڈEo/OggSL LIK:ncd`roWOGRLDVY,J?mf03q9#/Pmc߶x!) 04~ӄ *D  >eQ~9Ko*{a1_dxz@|lLrt1倯d۶Xsk3{ߤ>J6p\3PDl\^kWYS@88:nxw$?릩T J$Z>$ /I-|kc$ |<\Gl L^!@oepufJH&Ȕ ~N/]to/hGCD"FLZ8G=},zJ a*rn? 7߅(ML};T:Uj/;(۲V8wfX}I:avrnLwEՃHeoN깋!cuҋ?PVr* 0b k <L&;- %./03!i_ && _ t@|~a_1Mp(?,@f`ڈcV3> 89".s{N@VE'ϵ}ʔm ai$| |t߽ug(;q\ KԛCO el;`v'. 44k"RP|>,Ȩi(g;*(A׿_2'`qO~@~{V(~.Sk@V770?}`~ -[;x1?q>$Φc@B,A}ss,;kQ >xh]!H Vfab WХW @T݃a"; q?N@8/^.PRFe"u@W$s5@M]0n;X{[d`bNB潫Kv =o+zLE<.Q~ZR8o-xntYgg0&i.V-Mv80ׯq^]%ogA}NkHϖ,X[S=!yruod^>PݝvӼy\ = .Q" WV&8sz l& >f "OPᕡ)8 Ž@^EX59_̗ ܶ&a?VF߯V3)XfMb y)ɿ_uuwdE&]~y xVkm[V  $s2n￾al)rl~!hpJ/%g {g_y<Ʃg_Ixy'/Y Οt.͛3f PּM3H.899Hسw.)@gPD 0]]B#($,S5Bp '~|, Guq[)}h) ptȫWC뫍~S*7?*ޗ@ƈໞnw_<\2t tøxDT_ׅ6[|(jqt:qg_~fYh2`L>&b7*J )n@7 - -i)a$l<0phyIaZ- En_ ` GUybu`|ˑzN38#@0lU}j/R~}>2ƔK:&d8MNVr f`  ipR??z[_LxR_Pո$3sxvV pb8Sp?kE3d8~fv+0$A ,%.F g\! Xꑮɸ Z v_ol^'W<'2Ͱ~`ʙ,yj Jvp|HОGO9jҔez#g0 '9Hx'$ڰ|þ 3G؀Oik1?ܰRXtJe9%$gN`. (C1gB '<G:kQϖ!b?4wWwП8a8TN&m$rb$)"uZcf ‰|4浐/+OvP鶥Ⱦ=z=UEbJv>bh>եT^ŤSAd:U%g^ͷ=P# vnηs@2|}w /UpΤw,0'-gᾬk@B97 |@7?Ƀe| xk$.'ƛ k.>8Mʜ&v At$הuk/}:i4`qx溷g،JQmhL3"ז5?9Ad!Ex)x"^Όy-B$#։"~,*޻ ߟ99WBdk703=߆nd*hMO\h:|{y,F~0蝾3Xt k|~/jff_P5tkT}_j$F2Ӻ? bNIXG3T 4~ e۶ G]jS>~|'؇9).gp܀G_cTUWUSFh`a13O+7tO|{uhbEڑ* d@8em)4ʬ3@25]3}#h8eA7P0[TJ\w~YD!=xUO{h"2$c!w0 =X,  qQ. >=xbTU CHT#""F>ԃ%,{^v].ց}IGeW_q)WO{gwbAؼF}ekBXxqԟ%@:gD$MgU:ʼ%\ wewP'QZS5+Rz;!SYn|2KoE*O6T,$7l]+Yb;_7Dkjء,t;e_M;2jϋX ɯ%{7 W\{[~HOggS{ LIL3:6DRLJwp}bZUNZMc*;ݛ ɃNøڿq U* waȪ/q4}}gz)6 4.uC nWcU*v8Yn=kw p5X ,*mOkG'=~+57}1,x;a8Zy}%ĻΨuG3nOTC`070ߵS̻m<^F-_x?~omYW 9{֓ I>+_xDJ~VE(vn|}awfooۗ'߶uC?]Ih._lE_}%Vr Ă?7;V m+g P̷t^#ʃ+}Ssۿ7)nu OuQJn% dt_ 3 hƩӫWzL0Ekos8< W_SU$P"J ;uw`zAI$Nz悪|)%C@Q_%Y]l(倔luifZ~٧KGe4_E/xFϛъU/;<3/>uCtr =ZI/7SALN 1k:[5IZ!aGB#MSŌ~S7we 4k.p:$l8_,/@eH@B~`d1 yͲ_p2ȟ[LF,8f/F"> W*I=8v+n[4vF?|xs p.xX<%-\a 7QW>킪I>pbL"zk3xքZ+Ͼk C1+wvC2>0ԩ1 4h'+ť`b6qi -@gsH:o` ~@]MI ?^2#\zbcvcoB6dʽ~d%S${y<X$udDLWBP\sW* E3z{bv`} /?yO 8@ ro@o3%0D @^U x fnG>m/o"}Agp/ov\p%)BD< w 'ڽ]dB˕mm2 >\{O ,gy .ٙJ[$u>2QilȄr w;0LPOU-ɳ9՝D%X8zbF~y7 Gsw~ d^j8{$#Xkޛ@*, |0NKl;qpY,GpoB2}[~ 6)9Y !:W7oMg8L0Y7@ϼ@þ7to#NquF@)kʌM+"+1xx Ͽ맕;{Xa~%H?zw`Uv2A$SL33#ڛLWPjXǨ, Yu8" SxZt`b)"`1'UxdH-=|~ |h@@+B;`!b$@Kl|#HhQ>oӏ39YuDk8f_F228G?o 3o `x Kˣ:LM$k! j xʳ})3RZ4Phȑ1{HKY/N ^oX'SO!wǧ__ >\[o ~k<fл<}!dG" \̮ɋEƶ p \=gfs;ob~n{r(`@)0T AjN{nNP~ORf;d-&P؀!@&@, uW8y⊿۵ic09.^t} `_qo.` Y`m2tyRj$ȂsKzY)'r">W.6'c{h{w{By/{P?Z@)Pp.Oi@7owlVQ)Ъ1:?i=GGNy 8I<7|oɄ~q5,)p88q@dN+=#_0?-4Ǥ [G'8l)1>4oedCҲ7*vlAld BB@U.5<h27d  _I Qxh 9+W;og{prX w=N*L\臩T >2܇9x9+C DQY$H[٧u-aT;=C8_=C[K(fD! 7j4R҆E#9 ǟ=]953xO*g"Q$-8O^g1u`qjLZRSzbG껳ۻ29́l" bz T^rE>"#6lp2@ D@T(}E0 x_?OggS LIMKGpCWn|WUVNc_>5+qGB?6~h~t_uk</Y)o`+AIPbU$"-s\9wPrLXX<[!R,ou<,: l_5Kkξ;Ʈle8[OPgyϻ>b&Sf)z4dGsPPs$ԞW&:TRNZ`@YRa)RY'u̽!gx }ZD109(8O+!c~dٲv6M^+m%)ˀjf 0^a1c"0#Woq а9o*}I" z<@[ h e zL ~/cjo&-3ȩW4J FhW>=s65(WvsNn&A)bL68>!|:_$g_ j^$ ̔6t)5>l ŀ g[&o0<~S+$R>|N_|x8jB}gH+=<-z'.dV[`l w fh `%|BW>jn&@*wXp4D]me뭰ڛua 0F\lZLJI 61@Erl?:>ڵ'O]t=n8]dOloBƙv[8=v 4N^,`b3eб8{1S?=*mNIzO+|a$|uht7v=a k1KA`;0&`V~ lw_ :|M @J8! -^ R"d^MڔLMKZ9#m 錌xKoe2V6+ws<f`}E`OZ~N~m3y;S!ŬtVLX[Ң Ϝ虙P/x ˦ԛd^kË5ڝ٥7xI8uoA]'Q'hB ˜ZHSoc"S?V&|Q'9`ncn^dpvW@Va$@7 |_l@Ft+VQu8 eߺ`7Gx 0^zM&,LY2hoZiOk߰J >&v~  v Pxݤ FD1d/gk)yz>U32;چ_{m/v}5& ˷'[ 췓g d_x$%lcy9mo5֖I+rQC_N4=: T?:%åD_JL-~yw_X`'x͢=`ӿޏ>k~Y51 c2ؕq>}xK?Wmx]J >SdԒä<1~IY4v{_z<)YAx}y <Өzԩ;<kf)Rpʲ}3{M;Gv3=lߴh {V6=kWQg j+S19y|܋Q~u_q5+?+ bV9 M LLd`ށ M3XxE~T}"  ϩbjӐ@)yY/Z@qE)A`i3!p~ Y9&OvRgck'3 ?o 8STɒhB? 47bG6OɯO~"\8b05CNȴ9NrqGƙ8Ȅ}ECDn‹tJ݋,,ʂMSăDJ_ϐEK G_Nq`q ]Ino3ϵ:"<@G P>*u2r;iʀ_LhUbtp<Q%{BYD>Yu>L df+ykgO | =p%|'O ŖRGA8Ȉo.+m"pr6ۃ=bcÎiwB޶IBP7{>fyMg%a}&Lp}>arɁHpյ .̟|E꺷L4rdy|_IfgvJeve/hAlvrZX_-2[ /0Z ᅙHGhB@#` Kw#iZ' Ym>u 0$6iQ| Rt=X>g.͡T 0~nW㩙<"(} <8]QopvF.;gj "BtG8$@(``|sP4.#QuUl_o&ՓYg+dIa5W3@N 8b'f|q#$ue@MȰ??<&`Bf2ȏ(oX*k^)MD9y}nE  al 8֜<"5li֦q95tn7C9Fkզ>YcB{,o'}DܛoXw_\W`Zo7t׃76^,ߋvQoq=-?۽&X߷oAN AIUv^6k'r)@Ft3o:~S٬З5y ?|T y `+"BP,&?Uc@!pC@8Z6Y-1lvaHf%oX3A~ 𖠁{%طj6t%m+J~>s\ޠS}No ŸR&d .rr1膳' d& }qjՠ{Xu+_P_5c&[ ?9wT8e魣'ܟ5 AG[hOő I;@7Gzb{^]`|0@ 5P}/ "{yyb\ "@6D%@Lr |@Ym@e"qqt+ Z]%#1Afu"oӓ2|ܖt}~ xanSET\,60 [pDZ7h&b ̜@P3wyn>-/3Luf䤇W#;w߱ GTL|U^b.M `M Nk}ח >樗^k-j^v>9Uy}Mebe[d/l.yNSO]P DRgXo7k`90Ud UѤ{ ("+-0^M/@^Z3^A`-ۆ^ 8NĠw5[p/9$g7 P1<w'%E5/`$r/z3-r_nBo/8F~WPob]wpF(;hl⛦t{ZBǶDtZϵ?y:}0 P$)UO<0#zm}:[WaA|>62Cr iׁsr?/ 0A},㖄"Fnl/_K6Q^yگW! hY:,[}`B]P@ P>YmVn22VL pe9/.,_70 4p9j^Ǿ4Ѯ6t]bBz`Bѐd=n7mnsC4gˊ90ls[mos=*,_фN;]Am08\~^l|I$߶>Ize0~L}\DDlŴp_TtXޅ:ϗoo")hj E5O!MӽY?|@`/ h,% cEZo۶&*b~` [@r6\|FYuV8$< _$ G8}1ּ޸(c[ؔc*1i[1@^_mj}^z;qNAaQ_]d h!t5r^`R Dl׹{>jЯU^d"DEw7q긨R+9^u_| `i. ބGM^z񚀄o;JEo3I ד CTxozB0~ƲeAWT3߀8 o"ۗ Hc@|4]_H@4yPi0YpڴUج.<~*<~J>t ƨ83FH&6>O#$i05s0fO9E@ΙGI( ../?b3m>dĽN.%]˭`} syk@rW}=(L} #a') B*x|^ :ZTkwskk[$XTG 0;!+=*\ʽEU ,A "FZa۶[wo6d _5$:j$}ɱ]Q/_g}paڶv_9P:s= @z" L6>7[_i(o;tUrW8/3藫o/\$Lp}kPe{[i" :0._WP7D=9b[հq?!E㺐m6s_/{OߟwƜ1xwW6~|]P"Ⱦ T^}W0-@X@U[(#QT}w| K%U7x>cyhׅ*\cW+nV2Laq8sP맡)||׫V|a06:ww=&l/rr/_n;_i˴SUd2]%BV';Ylq"فm:qcg.L1AS?Xra1zvd0G Н _mY }F\(`_( XYK%?6j ~95aX3+x [oo˫ VpS K7?#mD`(;[۰W[k^rb xL-xpf*)y糵J}=g}<tkEF6@ w s| Uw]ei81U+;7\Qa6p?ǩ{ >Uᚼp2b9͗Wt\d_z8k kJOe1!5r jd#*.I|7 AvwFPr24;|Z@Ck@,c}@jX lk%ѽmE!@v1?cX_ooqVpؚ^ooVx˧XkxV [*6tZW`BH6?t oQ0,@QWƹxyɗdݙoA2YJZŬc e2xqw d8!`q[4z !cw]i Πv7ȕb\r@8圕NSPs޻ܛOLpP<>}. TP]ڜ߿b?#I| ${d=H@c* @?l?$Xp|kP'LlZ76` | OggSLIO[(iqq`bBb_>Qmܳ#HF}9(?5;#j-Vg@>|[syغbt_r `W7+xrww 8Dy=|6\7-!R /Nqg'\ԗ}{牂 %'g&2 `.{]zǮ{epp T|3, wO+Be~Bߗ\Pvw/=sMGo~gw9>i'ܻ  CU?r06e x,LMOqY'QAƠo@z <ϪqpAm%Nf/I}yck/;on>@bXى #BX/P׸zwX? wZxjX]-/vja gc;7Mgqn鏇1Qw >s]{@p2g޿N7G٥JgQ8h+ݏ3"d%+Qj<Ԭj; 0s9/V@(ݑw&}ad,X.2 h 4@[/@aC*>`1 (xwCX^yM15SBf{GJF)p,xE,R7܊@'E5Ѷ/(Z~B3w]W& j}mn@w<@{E~w a*a_.Zc#s?e?jWPIZf/Y| s៏_qזWU!7la̴{'f$3x85L N v}dP45 .0?s?@@^! & `)$$@!0 ]?d@Hx`@de_@T?|WY|B*Q)w @`U`m Y5.QN"8D ?NoLb`[c׬e^f6wPI-[wO\Ws.$!KPv꟟VLW_]-'WY>x>@CCغ8I1@5]_D'qfOS=D~wLV$ }: .g׽~W>.8N9+w v( l^`}wpU!DZȲؗ%!oDUX|hP %/d; 0~Q]h $,fIM⚨bTV=qo'8?[Ƒ \}y2c-u.XsÖ<%WT{C_΃Yv5l_vsxoS22|TW̾]7_=볒,^=ŹƷݏiΨHhr6k/00 z mzy[Q9o;BPxW/ ;6&嶮' dY.? U|!(>9LQ4Z/sl 7@#x6m%X׵2-x ca.b~]Пs4eV7sD_eYa1BӅ_1okdu?XS_Eϧu)R^G=->;g ^zyH4V9}QoNߛFȉ^@x+O"/?l?Fw'%ɬ- 4_ʩm,;_-X>5gm'I&/BR#FB6ۻ\u׋1 DԊ #mlA|/ jwIpmh{E3vٙš=sٜ{ؑ=Wrsϒ$5~P?j W7c=CvDw'ltpڨb:/K`A֧>LRgxZ_?ǥFq{_UMl<^H({m@FE^IN8>9\YtOfdA&@7S

  • RA@UwDq`y,` HEyT-wغ@``!`p6Q)us{D3#7aP<x#܊ I\x%[mgmn:oߓSCt0y7?wq^N꾚J!0$u~S'5IvJ/5)꘿|}U@^( ]<ݯ9莲#e^HmF$/` 'OETs'1z- @ I ̊l^b[v 7ۋ^J\Ͽ95&B.* $XgcWaэ_&n._\N-옢5uEeG$59gU0 *Y:]G#!kӂx`Y$ZK tBSv3A5>VphH7)8M =n阊j]#k]=?`r%Pg3Tw`WˁƈiR0P_@8=ABb B:Aދ( E /3="*)7~؞ mV$ gG|Ƚ? lM)&N@#7WF<./"_=/{u~< @bז[`!&!sWжa OFتd+Qy@,Pls x2/ow<=/yO~^Ľ .Os*.gU_F7Ç3M]zsc09Ϫ̲Q!9."n/J1FzD(ݸ-}ԗ,8{/-z?y X~Dw""byM5_Vc$廾wT>k[7 i\q/xՖ˻'|{Wi!Y?)lO- Z:W(yӋgh 1:,x*嚝~ !8YNh>h }mܢ(F(Cl%%@wz.(t7NkY<+c귶7+ d|Nodef ,JKps !sy挚}Vm6XMxZ% ag6DOWwa 0c^@=6Pg\,*g ZWrxhK8iрLG`x{Wۦ`?$=/?4۞݂}W|8yDwFf +cO.,~?K,˲,@@ߌcYX0k4WWb)Rʍݼ,gQF o?xm4o@~oh@?<Ѿq \ּڵm$b)fx-եVίw*P6]l |)|^pzk:J[O/`_~ f~/ %? - S~տ\T(Y_ RJuZ|Yy#5E ]YwdPqaflXsmʑ@A 9;H6@~Z6s403O=z 9Q=O L(JԭX?-K[r-V- 0?a[0?TO|W꥿W۶h GW ʍ쫹ݱF};c$[\\ r&7x]*7 3}*gP~㚗[3o/hDZ˟⻒ Yn| IuOw ޴/|%,z则H1D&d[ Ӫvh?hvǮ]@2cvtOT B{{g1X~%9}栻ۮ4T@MQ3ձ Ȩb73ĀGp}-Y|W3o`^(4Ͱ<Ք\ 4B2-s/_ Q.ݱF9jMQq| >bOހxc Q¾C;||/y8N*CiGw ^f\<=F D?xA&>kg ȀkWks m53@Fw7>]t/G眡YA͚Zavy`IհNe$Oo/h@熐Fg*`@h|>Hj0F6-л-hq%C5:);k7N (c}NG!x __j4}o܀}M妌Bk  4# }3Wƛ q`1O]0g3B|M.ǽk˽* '4Kt<</b}: 5J*C;L_Y:0)6l>Lů߼{Pps`}j ?LA0~OZcI`O۔c ~ :B`E+>3mKI_ 8)GÇZ=]6 |g_~yc~Xl):vD XotŶ䭆VWˇ5f9LxF|[CXmz<@{!`q%r\G2 o2$v2߽&(EA=G1a9s\͍ P9'D7)8`31})Q)yTF*]Up- l W 5sH qܢoY<07@> ݞ8k,g\6pO~~o@XZ5ɲ|$^Dr8lq2a|Jg d|A="ߋ!I+2P|Wۮ2~D?!{ ]G8 'ak?!67+׃ д[Ͳ<cZen;UoC; y+}/BWU p:1I ؛xL.L6'Le$ y>)d`5ρqW$ާs)C][2 ~ /cl@6 G|C*Gp>&}gDpj @Glw+g0/@Qb/_> `<9 S_,{ bKm1QɛIݵ`tOB@ V @e_>dr6C=6P9*{ so9 ՜w);9Cnhy1 xuhU@ gw/*/O/s*Xk2%ea` ~j,@\๨I6  0|E_g8Og l 'ۿ #Y7@;N` c|OggSaLIQSLMYN_z{s`QBڝ; TH+QM,p+Ulb4^ ׊ļ{n3='7mׅͮО}X:WL<jnu*dqgA`Cb{[:d/&ʯγ pu>\+)w^44NG(h#֟ ̜@d~`o5̲4KIO2xi4I2I Rs69ې!,N,م@ 'p)h$~uٞ @hvBr_XlL2Fy']|o?I?|ߡEF5Q$`z-O3\{/KْH@zj<M;ƾ]n澖0w um @$K̈́ `H 2kW-7ʓ lȺ>\?)`2M @M7ە .DhRKJhg00_d m]h10Ѩ@;l <2@<vʭ=h%y<͘|P3?X۾8EeF`@o$FRq;t6gnL5ρ#|U,ȫڃe1>͈_;j|8627b#82툫E@{?sx&#JAul:L L67rT *{HHP_wf^9|ʁY=. w 3xknud]\Sj*_f[lvO?+ ܡJ;OH y=( @ . 0^DxD|BD pY?Ί5:U BX8JQy>˝=S6^nlwOIAQؾ DyﻎNJh]h kx-Ós+tPrFzB>nOZ8i W?8i&;ݠzQBQb5yhb*'2ӌ`: pܵ p=4O$ﱀA${wHu4gH/<*] uF(Le[~I   B@,P@ß"p7*H!8@ " ;P=cZ$>\.dx4?o?1 [+/pA"Kxb8<>b"H@ކ >!82ama{a7jE}1YJ.r.!(A .'[:#.v%!/~N<2QvՕ9М| ZD\GAnzxR7RyQu3ǵXZǻ P7#6{@OG.= t~!>\嬨**2o w1O㎹ ܷPx$ Ɓ,Vh  -5=ZN ʇ-}~K47 gp@c_.hHQזBڬM}-Эߤt~0)V #ji(~Z/hY ?ޛ-ѢP!-ƪgi P&^ y^\2'qG޽GP\LVZ 1 b֜I |^ ^[C`S//J"!d]K ˖ [S؈`G0 P h7x@2+m O дh>-i^~7g9m1#}檬=,Qw_o~yA0`>nuj:  lS9xb⤋!͓˺L7Nmnه_xA粬_Z[T(T2)~ ݃% ?}YNc-d@C ֶŭݻ%p8?'m8g{}TGzPδ+`oGo/3i@p*9+{\o7 zFֳ6 79 **?|~LSQZm-(xXΖEjnY"D'Q_n#kXr:'@Q+լ4w˴2 R-C(97R6[pmEK( P_&;=|J!OI38\zb]²w"e9Q~M%@nj7ޮU*b}{Z pէ=PuW{*%@=;2s`~ 7 ;v@| Pp.D`{f6oE @:حj#̟vA/tFp@U#(\SU@/0xF ޹m>_3iAjgf%$5<#-T4{?s,vQ*Whg`8lb@uWTSY϶j'dsBrCk0qʝiQ)|g> b(ˢG Obuo^2kf3uJ ?iAdcVM{ȼ~L.%wͯu`Ks{/ \/?ʼnӟWPWdQpo6_ [|9j/\~BOeATE>9*Wazb Wq}Z<h&ۻ06 ڝmVa1f(k=ٮi 091]x\ ZIѶAƆ&FƵel_9wDYlһ}guA` ̖E ~1?"jW"3'IPཹ*Iog!X@R *O0?W{ѹ"IhUj&TABRU?b|1^[C磌صZ VA;|½ Y'yW\@~BBB , OggSLIR/YNLTe`Mr~03.حyZ 5Qv DUL3<*2rm SG|~^9K=_[w̝7*pv-=qƒ7 :ttSu\VP}G KJX~PsgiՖܽlZ@%h4dP?}fJ@eqQT]{T̹#>z87s?nxJ Hk=aHf2(|i젯Tغjǀݚ$0&҄ i'&0 \@/fPOa`zgin/20RfZ*UŴ|!"044UR<_ &> b >?ñ6S++\8&}_WA/.w!@AOl {+]={uz uz^.jD}uUS H(jO+jÿ~;{2Lj3@QN%˯}/3@g̾*][!.tx? ؂]_Gy 9 @ r`<"( ? _&T\)=-,l IVV ;I  '{+y'?D.idakfκL h]n[ 9Z15$oya+;14vg3i~ie&Lw ;?೴dr~i&upg~Hp_֬yF8I&UֵPWﯜx:׹hTD|8 /ZE0=w|mEǁݿ0\> @4BK4Sg DM'q!r2o@POI;Qh 1m} $o1]5~ToŐ2ջ4O9eb'=Ќ/ Wuֶ<*LF(/D NW8LlK=$wI:Qv<Qb3W߱l4XBv(1LFQ /6@>6QlfxޚK8J`o#jf0PKf,NvDgd&Hg'mzg)ixٍiϏ8+>gf'T }ϯrV[I^.|j~yfHȱF1ߟdR_wO&}[Q0>Q @Amm:PC"?5s<~(~6bC H2l "#ɡD{3Zz,/aRP›-ѱRWmbS\nͷOZ=Yͦ ~3@$3?|H&_?sL|*wgc|Nʵ(<9|8?ʦBP_/`a/cqs3Rwl&P*(& ̼(+* (|% +)@,+|@EDk,7 s|@p cWJ݉ly3.D̃c ޤ}u(O K>g:{\ػ \gsoa@E_Yc&-(ܗ9|ݮdmr ^LB. p|j:v-О5KɡsFtݫA-imת? r:4Ti5((v7 <\Yit03mNPXӿ6s1L`&4wADc3 5g`1c'e{ /UuaD@ $}"X硇YLGn> @T ЯDS @,< zc`W"W vq+@-(+ʝеi&]!{s[\Z oܧszLPV;AW='SʇD3wqkÿ9NϿz90x OY ?NۑG][j̚Q?Savaso98SIBnO+P^v+囆EVy;@;6Co(JC۞v-:ײQw?(+w`AVu&, ~3`t|; ?O{uf6_+C}L]}M0|?v2NE)6`Wl1EOO7>qPY6fa_.[ţφ:v :ydB(#d+XlQ੘g@Л@ @(`$d<-91 Y84f!{0\^vZ#ً<۠Ru}[Qh\O޷}?jnl|Gh B$CCmeÿ8>m!ء,.*+/_??o̗3_|(rd! >(d\u/s@?_?ýˬT:=CAwJ(>̀W @Sy}I?0cakǿm79`2_u4+T~-[2dw'S _}O\"4nTD+ӭ`PD?~*8kWFUeqjR`“|DB[z>*6UF0zkek{dFVoҜJGHs١.Nph/b_ ͇&3egdzgBƻIJT# K?!̇Jm{}bw>|;HC+|u3gxNA"+oU\^,]uh,po4Б+r\ZP7* S$˟*r߳?l\kEEiʼn/ŏ+35xV 0ൢs=#Gy`(`cX  EA 1 99UПSU仆Y矠j,lu| U@,! -9<5 u 52[pW3ze-PɎFι+#vz<*Gs ǯb[~ӵk s|H{nZ.N{P@l#S6F6u/?Ϗ,͆ =;EO>8pU_) ,Z r(q||o~W:' W^"^|HKg^UQh rM{ؔVgYYWbsmW}-N >*=Z.cg/,\JyLݝCyu=PUP}<7H[xٷ\o,ԛ߇o4Oݡ:I?~n':SY/Ӄ$v_# kn"ik.W9ɽ*('<ݩɼ?BzJ&yNs{ۣ:c)4kh5zLܝ7 )LDAL3.a9Ougc " ]WGÈ9.z͏Grj~9$}˖Eh!=P *B @/P;v$ˀ א[.w oDP1 (88 Z_ 58SꡏxZΥ-L5D0_gU߄[JZ/ L6r{3yԄU@h*ZՙƼ,שa9?=woهax]~]v pJ6h81&~y@QI04d~n\\JȢ``Q?eqͧ~)ُ{Į:.z¨@r@@@TEW CHIAh7'b$ـPq_0EQY(*EO8w0]:R=}8R >-Wff3"WO);1h, { ocD\ cW 9e~Vm)ɋCat9 c;QUz{hjw§8tE3nffjas:^.Cx1!=K9<{߫+ad; U>p.Lff> 5{ƅ{NTRqPXX 0RP>#YX%ʤ3Ýߤ}26 jY,) :\>",S~itKp]ntyɾU8}]DeZѸ @Vw 7'.3[{\/4X_w[_[rOtϟ0ET3_XC\?2;LAmXS_/E5.kP'9C^ P4+_/'MC'ыTc՗ ?_ kdGGG3~/HټcXhw`~ 8_{VO57mLWW< 0Tտq1cO`qfo:Q㠷gJGcnHA7'[QUQHx&ܵ "'TY3'fT:=4-QUK]O1`>?^? PUs|>&jםPpV**<Oƻ/PϫVsHO>JQUHBy;yscN{ [0Ç39,ɾϷ{`d#:v2zCH>@0 yCn(Oo pUwop Lp0G6+Fb,˖rMʁhYU8qshء>͌Ej{Ц0G4sg?K:ƝgbLGon!)6Ր.El2:sO{r ||r@&0R74s!90 0kϿ"R4 \(1 ) fe/lNO|q9O y`oyyg.08?_2da 2~X  @Jt0o60 B7|b@Pz :j 4t6mFH-Ι]3ߜ]WFrЛ~XryN̄4:?cM_9~YERA_d6oQ=w<_/7!(l:CV>K?T:hXseaUc.]ym#n cm8Z,FmC;kֳ͉Rd A&]a6wXP~h<%sJKNT V^+@O{U @qYZ})~Dxtx;7m,,Z~`$5>(- YeYP5Fb)",[(d{p|{j\K Ҭt _Ͳ8#f3~='mK{ruw>.kػ/mAr|3ٽ| orxNh},O yfԾG>dxr9G~3:>+>ݞq|@sytonUzuƙ@ ߼[68gZ񆟨h.7&'.ڮ=촃;k`\p:hg%~$gR/?ا?J @n21(CEFŀ K /\|@EkTq7 v/)x7+:NiٌeRT| \<ۼ@ҥ.#>N#0$d]3@qP`&@@8Oϴ(?v0jЛRceT+{s\ޮ} ^4رeGwCm';P3/ b4ט3>-^;9lZ@5>  yi8<@?%0`gJL(@a(\>lyYp0;V433&C@;~9W?l$.| 8PQ/=[qr Yvu^ %N6 vt pq88 <!G5: mI| xpOFƒ=vM9'2vW+=;m3$ >:o~%@~XcJ}xeN/c~K%/#d'שB{p\ $''$ )nT%e0^ 'QYosY(E0񨽆6|VbXv˘<-Oq@W\3s)AgAC;_e@o)?@ePriܜ,+2\m̺UXQ_"*ođ7lBW87 0 J-7xd-@C_n27po/ ~S T ym3HvO/B@ ": Q2L*4L8ٜ/m'W_N#bM{3#A?wo_́' kt/9FHjw{~Ld<-K A}7}ycj[m%+ kR`iJk\'|.]mnS-?cqhk0@ȷ2uI_Q 3?Rv P>&4G-Xp>@-x06v їx8d}M~+1y8n[ nI؊ǧoo 3'^&?5x~}{sh1 )SAāaxusV_7~z8OzWsPNkdkvImH>@+|G o ](W/ y+tH`MYr|Lh0;P 5 ÓW(@@^<6p)ZUӂ#Bq@ .~ࣴ Cx@,^5WuFGYoq=(1y"Ǎ-?G,ߐyp,rP^4S&`$`[u`w'k2@~ bL><{}3w {RW-:N 2Ѣ Nu̠*9Aמ 8kiܔP;{K'VN~03_8h&]s{>cHܴ oF` (V>g)=y^Kw j=gK`_eh6@x4 o:Yi [ |5h"F^=Zo?[@K`>+ o> h+0 D$f:sp_N:K*>C.ؐkOf~BDL'8#_W'3ri{lΑ8A+g#/xX#=PO|캾z@s]r6G`\*=0&̈ +<i!0nV (;B& OggSLIU;vMNOYx\\ipye,\y5]&x\Њxa 0,_=\]`&AAzXzGTصx˜yntswT8'j /C@@` 3lw_Ap uI۶ ;r -_ap1Z2P?=}-NvDoK55/0|{,it9{eW[\cAw7BJ/ @ hSP)@pg">u)=QFv42P0*Ez+<+ݿe64W <px|^U3TjBrՂ%qzތBƃ^HSZ [x9)C@V.>-PM!){_ k@؎4>T*6mL7o;]ުi=*zmxp(̋%cGE\,%!B5(R5SJ_Lri;o{gn<-lPoa å3D(8 B.ff@:{^r^0rb6i[dfn?X_3eKyL@_$"u |a!k%YwM/dmVkd~7pbc IА XI?"`4 ^)6޲{3i3&m<ah?9'86zkpQQ!Ԥn2Oᐙ`C- B@( H9m Q,c@V6vJmX xd o 2 D-d0ͫw<)6qlEMBjpqWA @;0 o`ݗUvqf;²}<4Z$*=^}7iѾC^m}xm']p $Tvx!]Sx J H]}`AsEE\<g6pζ ԫQ:"'~j9f P4@ e;ˉ/pj*" `T֯~)MobqI8"osN 1\EHģĴYK>{=XaT^F;8<}qެ x"t W]lpG;KMؙ̞B <9Jzc w]pf0yjCZZzi('K#E61}~ Exg?]@] bZ`{n$#~ D Y]~"Hd_Ɩ>2|]'EPGA3^M;˃Iiw{?Ǿ8vz๹1 %Ө0p/_. E0D4%ڳxߞgV xlh${ ~2ثRݯ)_n %sdI@y vvf_dc#X9ޣ~]O .zWQȺyP'x=3ǣ/탤 1r>O`s8 5X/|: ]_*W })o ,|\s8CPp@}47&O|fY;#w8Kl o?ӝwh]xƍ5 Xf/ P Y*}q~=z}=D_Lpfx@x8lo8@y'G~$Va0yr1 p=ڦ)HLJ~ʭ"@96VR#(wI%ͫ]W7_ &\zW}PAwsL$A$x ttg:yϲ8w7II31/ۻϤK@/FU8g\UjI_iJQ`pn ~mC£oer9_ird*6L=]fZeT|qˏzHy\$//Rz'=p* :/,@_~PvD06PY@XQpT $+)I?@ޕAɅ7š7HP1Dz~Q77ȳ ^$@`V0ۇ,KvM_*lB.3Cm>F^u!a0n bp̟LA,=7y(VL@<{@_m<||Xz͂؏k _G<0oݸ(k0 `k;L8U9L8-Gv)g_b*'W#| ,B#Kp$p>806 l*(~mҶ~v*Hd&i>DFջq9/4t?;'@s’Q"[/{\~CF[,oh1gxyA%@VVA/ _jv8CzRă~8dT^h7MA6 2ߑsSu [NO(uH?yQ9o@"mw~C@YnyfSuG4^v7h(6,hZ2Xxհ??@> XomB- rϢs=#sчOw!\. 3@Qrﻝ3y\<|rM| OggSGLIVQsTc99=8;:9NPJsniMO{ %IݴmtM,ڦH3?45sh M_7x~UcmN͹P3)8reܧE'N(~ ܘ' ި sKo/+}}?P. PݹwsY%ߢBǬYUI?q r E2Zˑ̏Ul333uV7<(~OYpy>C&d8 ͳן\;( B[˅5~e{ .JMۀ݀`B q<rakn~0 (= ʣ}OR o3Os'?wh45XrUJNxa lYX1ā ,q//@KwڛQqK#u֚rN_ɤy})kVm&2N$ o'<zS'/y7 z.6Μ*dz۵髞s> տ0s|sh[J]Z_yʣEީs_aM^@<(} 0mYHR  m?hYhs d,78bƂ3Y'yh,Z(m: '4U/TCFj]s-o^fUc9(yz{T liﶻg&<]A- zG)Qy]774ģI墜4眳fZ8p8X~[wa `k;h "y (`[t x >z̔dn 4ᶹe1 2dVc3ǝs߀Fg{1 D\ \guǞ׳kۼ\){{-4h^9s <5bD?+-J{&6&)HK`s_glTg~4)OG@1ul1 W$ONל}__r`{|w`ϥ@ri5$BŔ'_oP~B@0ȇ{*&@;  L.\ `FPdh51Mkt|Xk Q\`Ȃ?o_@!Tys>ܧ0 F(_cv_㺫.}|"2a7AM0bۻLvl*·~nI봙6@_>ypgyhEt٥ʉ*7KYzK02Ll M^C9KrcVT]dZ ?,Xی]OQR]?>B#k-Sp⮗z_ֈ{<7gV\: ]+.ׄ4:I'%Gf2 Ww6+OQuu0.U<tbXT $[gƦ2c&׶ Ï~;t2ۍ jݖ+\J[SCXW~|zV_e5^eL}c jvmhaU^͓}nDp<sxgOr?_&bw|r;Dg!ѭ}ώXONc|ZUǛA\ xkU # $rr"rInH?{eEơ/Go.\g޿3_< &ҳQrE+쯞'yĆkPkٹ15ܡ&toӻŮpӟKaO?>vkTu\Dy&oAz)6ʒ/`hyp%wbDq^yo~{.WmZZH0ٿbwdfe9Ҋ!h[t?{KBK({ /UE=;@xXz3H@wȫh/nߗ߽y˫{/U@2D OI0'}vs{j>F_̥ Q[#N:xWYYZa LuYI?deȲȊbxHKP@w|2 4_ZDTTDn( o_Ղeeq9!Awl(Fw( ᭼cs1ܫ\Vv^p|d<߃?qA0]#Pn`2گ`ّED1J@ 8#uq?clߟ(H:37Jms~ͮNj>4) -P&F!%O@x߯Ob3-Ya/@qc}w* pKnԦ3}4 O~|!:]_~??qy0pU9TEڰ\s$@x @a`?6#_`d,0Fc! ȃEp-r^k1Rlzͧbk^' ndnAߐHb$>*yɧ]S8Wy ])@l]=xp.%@گX/0](Yx۩rϮ EH|?sfD m3A1F4W9so)oa:mAq CWm"`/3j k%F-GZvw1-? ᥃O,`|qz#>C@J jdeP^C#FX-WV(Z[,^a S@ 9m-Rܛ'7tbsa W͇}?\?wU7jPc_((7B|^k ;C6S;>A.yc[]0tPSk^[-(S'C,m{@ 9 kK&ϔiwMeR$6@uxh%P&,ssI2 @`D\7P@# ЀOggSxLIWgap>L_]bs_88HC):SR6FQROg'{A ;РӞ}~pOWO.-QCR*-8O?uOsn1{};kz^S^I)e?ƕ6z^QcGV>&J`L'@|h |-$K6(`Uy@MbF@zLyKaG RPިM|sڪH@1;F7ǝO/GhP7popH/eߗC0Rmd^g׬:ٷӖ̛x0w+Y];V~Kn^8/8Psj@uzu9>h-v |m?Q- w6~71t(( >6MRi'4\f2eEœ@^6>ox7qlr0UV8[l1Ė(nٶy'q |i0?߯d ;eprhߓөʠe:cbMay78|} E\!|{;G//gjnoϻo$BuDfC|Y9%<߾Y-?4_jkG3 kFϸ{w꒒Jm֨l &86p.cTrUbV#+ F&cx_z&RȡvWWm?1&,!9ٌ"s*-'yR|9YSd1wQ65=mϋr&iC-3EE_vC:avʐ0Yل,@4g+*K0t]}80^^Ұ7tg 03lLfSF`>})pV^Pf*UU 7Ca9z=*-QwrWm mK%'??XLGL+e]j3q@1PqԵ?V[HT_3%lH )7] |ffgԉ+ Lry.x4a%g ÌޏWm0dL`MlE1SxO&"x} h3bw0w'\ӛ`EaR>Ymֶ=i5dZGlo "/+k�X?D9o·_}SZ M*@X3gM4&w~q|39yr|x.{r|3Ͼ]O50/>JW~!:4Vk@;aA5j&]p^vwimN|w~fP ,dw/@Q !eM@3Tfk^rx`k`Nf7@-34D#vX%Jb&֤^)J5g%|Y{tb:@5Y10_~{+gŧm9g(M_ߩY>Or TZiQ'nrhm|R_>׼/ s&%kQ7)dJYPeHWQAXb b Ymq4?͵34ެk`'%/PN 0r`j0-] *6t,M ] MidC$|b?YXu믾o,L{!o{ e{aB䳡dNw=U[?~rbwV] 8Gz+zqW[\`ϫ=bYY%^i߷MG 6JЗZy ':40_}H=Co "0}ηU |Jn7`ݩ[xr}ktYm,dmdޫdʋv [|J!eYy g<qO vy]>Z'Y* z?]h?~d^)=ge[{<;Y^;_>  xY櫩xb܀c/|ܾ`y#`r)c-q_I<BPv{lZ9+=») *lC#^_~l6erMB\{wO|߇^v[G \>xSQ~QXT &͞~hqI_hoڐ.ΰYgJR:k<ݝ9U!42epuN=K;+  p̹nP\ taT%A7{ ]Y "(p<շslr6#"|A( (*V`OggSLIXF6yz|\Wacs`ItJnx[қc^Sn:Mv(>j3H| # Ol iI.:#A 2&0P>& @WصoF;̹F_@șRxL?Fÿ]x/S=^/\>L*+wC>{;4u&fd)&&L.*˯L h}8Sg.02@Oṽ#۽pDz O@h 6o ŀ"$YRh l@:N8`\[ 3eن 2g8lD֗ g?O@+7γ,{t跖}9Ʃ~q}@ +'YPc.AZ5WW/HdM p*}FifL699OȼB|fv9<"x5SY+9_\vm'k^fr?$9h80@֝@Y /7}Uiaj03kC]` 0^?3y& PB0tOq RG_ ul{OaePTC}"$Pam*#8MQjr v`o ]^/FZ=Z` ǷJ;]|OSu%P0?;ou.gkfiÉr-a$DL UA@ ~Gt<8`~Z.Ļc=K> #(r?>jgL/w^0wXW[5p}qӅr)T@a.$&ˌ{3o~:']L>$ `?{r@X(('HT (N@ձU y2e"#W( hP8Z;D4+Y(>Lo8ڏ~ 8ᅯ_4I{Ă| Z\d{%hn/xz eN*~=[c*Pp{zO {F_u@U~|y Kͦj2nshA_CV4Oc80/'?_p,H~T uL}M_ )_#O>G}>g1t4 ΏU% ? >KW(lje;v|g50V(=2`w>_hjhNi1P|A;i\<߿Yujҵ xp{x='ey|w>8vBz(i{6LAzLJnx5S?юmOnQUEӒ_|7@$;@ٍw:ߐb@m@Kp%`EM ŠHogytK'̄.~jDZա,а~ãH;$$I$0ʂCg!PpDI^Ψ(d%W6+@]W|n`2ɭ/ R2Tx7,~ yFxJ? @qc7`a((4 z gbTdm$g==;.YcU%7L} X| p>f,Ҍ\ Z5_>^qyH1~!7ˍw;+ q 3ٟ<hQ~l2힝1n<8Ӄf/y9!8&" rC0j_h`Σ& ֿ@UqR@PSS(j|HDP @EUXƎ8gd ]+9(W*[2gn#a(Zo39G _xq5!( +VǕͩ25pp Ο,Ô%hO3OڟܝJ P-ރ97: hN Ք 6@z'x\2H@RMv6S҂ hUL$ )0<3c ޚϧ~z0zq~+-/HB/dIe}a_6pn ~,s'>ىIE+=l>P] oG tmەRzrL|Hۡ$#rs>ՙ[ 69~,_tqnлQZے,P?}i@M(30*6`۹U#+6 ?X^s_ Bu ?C p ! O<>w_x0|yL.y%"j CK>|1 ~mEMqwחۘZ a,SUfޟ|~X<g?`>|;ߨa+ F<^] 絻 G&|?/][ %g|5>J}0>4ie\YK{ݯ۲sMe yqEK/C-/ [@?po>eN,Oͻ]?* 9*_-3_8 Ud?? n(qX}e@A `]] 6)[+.ZT@G &!`2 @wāOggSLIY˱h|~qeOMzbav>^#E v+@j*+G{~_pnp|/‰=6 h&5*c0Ooϫ|om4ɬG({% ogȁ\<9>8T>@r3 Cٝj<ݣ{SvRIJ[ܣ* p>IW Y*Mϑ҉Y73j zӼC|,_s^,_#@pNZ `b@@I.ؼ74 L/ #^*hMXj/_=UP@9$"`a?g*" (?RUC  ?^  b~i$m,P 8+^1 Q mSn&zZ!P= ^pDV0ױXE][LHW1g/7G&yv>\wœۿ g >;:>@FD7%x_WM#VwŸ`LKˏM 872 )E` \c7`o`|KwFCdR  Bζ|W]3l#DM| 5gw\Wxhuc\|l~t() ̡!co`|vd2}1J7 Kdуӗ@d JՖ 港 PdKKyWPyP,=N̝9o"t(UZ;9k3' l󋗟ʡH$BW1/Q/v૴<x wd@cώvJxKXC~.^2 rZo$а g|W|ʌ4 hԆS.xv~w O9 vQ׷l4@?P8ޙ?ƧZԀ3aM601$ 2.`O$+!`Xm|n.m Rل00C)w6p0T τ'Ʊ,# XNg|L D1t#1m jSfP`5ld x 4ؗ f%`2t]ˮ3{Mf/WvRAL`>" J=/1|S|l{R+n,^oAZ}@ .3 h^5̿ZYWd}b5;de;9i@:_|lx[1,@0-0,`8h>#hE4{dFs~>>e%}%48.rP?֓>aaX^~qE_Ε)^@Q O/WVBE{UpGN;@ Ml+|9E"id dY =S4_Q)> ,Wx  }. ,ݹ[eH 1{Z8gXmC9u8_ %O翼n080KXvAPxsnp 0^'(qFɨ Tk+E_8S4L.H)\]7#)2%כL^P|/sĿD7k^'{w=M p/pgsu@EnMx ^TpHr(Wۤ +q! # 壕;2 4vpM> _x=[@8Z<}W Q8QZy+]<G/ wRzt bB ITe*H_@fHr֧K/ W7CPh[ ВVޱqx}Y%Kx[H_sy6iwlnio.2NYYp@3$n$pH,?8VΆ @PBeF@-X7X|P( -Xpk #$ OggSLIZVg$|qjp<=@AMRs]G{\(͓q|=="M-]Wp7u^0%?4x'Wu](!bM?s|?@.or7sfr|=L]ޖRW*@@$f+%ug8q 1=Z_866pA<[E*0ޜsb<8'ЛJ.JAB$Պ QQpڻ;avh2Nq'e:]3SYlԽX@RD+cl0M&P6ܕ$f  h0_x ԯ3T5߁&gy<(І]˼y`ؗ9JV77?j_pzǫGL[ f HKC3z%+@P:޽*"bAe`(j] [Xw|9 4.L紵3Mml dQ0x?l)5@ǣʿ0J-. R?^W2PNOϧGgK. Қ,)Ֆ dD4V&\_ d6޼*Я?Y6k8Z,e@˴z"HřRmH!*GY{ 7 g58cB ]vS]Dm7 @Υ`3wl3!̐ ,^ QJ m<~8  a׊|!Ό<-K&H._/$oM֣8r |~OˆOq$P(Zk|OٿoCg&j,quo,}z <2P`g$v 8: Mi E @? o^BM/h | 8"$ 3}o|iw@IҖ(2.]` 9KaUG8ʫkz W9N}lz\]j} WvBc,]lP9zM/qT ^nn|10nC=Y )U psy~ڶTevӛڥTtJE?i۫0!]{q1|5]HdC3L0,"(e "Oޮ| huW̫59'5?y}qqEz:AۅC?_y RϾni$=N~7~t[kc[1T^|݋kqY/Cmy#D؀7J6L;.iUt9L=   Fx-K@Z!0"$OcĞuHy-߈sPg-j [-aYTC\.ɡn6+ҕor?wME)Z Leq9SƧ>f-~xlhW[)r~e8^Bnx ?I8,$%+a,Gm|Ac?^]v])Ρ;qB% X5ḵeO/GgY|}>mzӛc{D@ dXe"Oْ¸ 25UU.F1wLy'}|L~---LiF>o=щ7k\U蕗/Y$` ?z;-QKoa)?gm_O(9P ׽?=a--{ ]{zuҕ %km?cڭ0.Uv qxmٍ'[]upmz'`l=Pr{m&vw 0{$X~]Wf!*/ P8}MB/A/y[uUHGYڮ@]ubwywP5b ?D# b^˂p,'_9 ipuЂX>Y`Xy':J?n=4YjP[zWkSTTPً>/ր΄[ Tp&B" `do8}u5%SڐoU# ᧝awP%5; qMȁ\JlUBmISgcr;}v0r0c#Cm ᅨKGvb_|i29V|s$ %n9%x@rq8D  TT35MT[/@f3 oF*+Po o 2 :lQ2},]옠.bkgwV4o A" j>W~SEӀ?l[/;߈x?783Evnј_ +DϮ``:Ρ'm%GIJFL!傡_&x%L5jl~  <J^+W@v5*U6;b7ʰE&hprHA#1>]0<ie4x%.q 8X}ȸ F~W-8V|o 4В @ˆ@^ XG騁pKҍm|K" 04|OggS?1LI[`_is_PmpX?=7;3LJLkےӇ8<#ջlj_V|Ck["|(z(O~xaXnjnR UU."y'L}/9 <8tCΡ oJ(gC_ZydvOIt1 Ld{\Bwe\𵛣ƥDE0_gSP:=7e2yqh8y?G q_g>'lm$[9\#y/"<0s. Zlt?Kv$ x2.<S ܩ `EKqʽ׶<̔$Dģ]wV֞ xH?.~X4 8voF4p=w jɰm%H! kqvewk!^XYr-s3 gA9n{eR(4y}ra:W߫ 7sl: `g~ ?ϥWrv/\u'63|noX&00Un:{e],X06eN~P)"鯹Y)=Q΃@ ~kH_nvy^N>Xoc@s|/?}]k%"9h w8ST]+V@>x( 3}cL\G@@<@6 0?Qd >=Y5|rx+}yh  6=l3 ~"XBvMEj$mP gws ݙ=BU|?c,X/8s=PgEviZ{ mnUh].1y]K3h'utb9/1һ?>1`Ȍz7h엿3E2<>$6T6C6{|UjEɯz5 tIbM/ J _s竨2|/~rPQWൡrL4QńnYP)x`^u1@G ,Ԟog7N:xsh>{zZl:%Hd~*PG`m\P Q^)Pa@Bg[bx`m  2@.݉iJfr1KyFZɇ'Ev ?9¼KpXNNQ"F2JVMsns \S($ D]ﻜQ菳WW'sP@ܛ@ZSkrt鞐 d)~Tg!j*?t/-?7ٿFi4G9p* >|XW(jSC^0k_Qgw+ f* w !G @Unp H"0w` QRpYl&x2 볁o>yKD0V\bOr xH3a,O`Ͽ0Tˣ`8nf^^^l)U <>`@e*W P~vE@ZofB@{@mdwtì,vhm"fx&tz7&?ٿ{ׅ0]FrA ! kل6nٺ\Ɯ{~+{x-@kߩsR߻?[>1[>MZuwjmz_і3dwf)⭕sVix!X[NVLs,k]@'Z5gٔqI܏߂H0oc 8˅s/k0,K 1FU_( ◎7E;T `zVUAA&`p0΀L l  ᛾! R4> V(0(4)D%Siya2rr6)^uԫb꛰ߢ#1bTa|qQzH!"}~uen=9Lψ7E je\gFKW֬߭dj唜8ş) +wȟt p tbrbT*7<ԋ|JndEf"jx\j&gXŐ_bNDe2ErӯC;i ^6I']Z=I5Ȯ8s#F4stb鿅kB>O(1ߗx-z~{._yB^Ѻ^kWA}}CitAo8NE|nu?\Za6 5뗽՗xɗ_+-eFK[NHϡ͐!|0ˎr? ŊAz^qSgDބ.\}Yj-߾k`On0я ]}TOggS[LI\iJloaqwfqa~b %Sues׹Y5+Vo~=Y 2Z5y^^Ĭ4q b2ZF{]3^#:֌^sטc?=X@tGV SD/+W,7^[t>Pc>KX19ln[rɻ/w8藜 _O>m[a꧌{nsG.kyp牮./u{ O3'>tq%'hOU1m0QQQOyfaF '[@r '\TLrOT*4VWyLq:bRI54q))RO iߞk$,Z]-p1WF@ #L AK`$P7ODEAP_w X[.fgTŌלizv?CT2Կj!g`^oQpl4>pܿ n@uƄ|)JB '>C:K+$] 2ғOz46\rl' > tez9sFxJ,J׬_S3YG*I?]&.$y߬УE}gd8=?q]9V5빞F<Uď5skobvOTǖmϓJ 2Xwr“ DEEEEFyo[+/dǷlٲ|Xd;v̼Oݚ+'+?Or/ߝw N@~` To]{vV }@|H̠L;S$ 1^W)Gѕ%@Y <~%uP],vJ-i^ ?c!>@TBN6۸[S8_o] 6!'I;AW6C3'UΤ<0S3_YY 7+WN_|u}ĂjCpyXFD?<jm oIpp,$˵ ڈW"MB t @[8P~::95fɍ}(ŠmP |v7N $gx,7K{$fk#pa?x *n͜g(S(h<U/o^WŪ赧{Ytc@I-'NrU2`YX)]r6&VQOZ`\a;Li'wH#汿";o6>F3Pt/G 2 q?>tG\754^gK>}f+$_,L:WmwWhC{s$Hy3w* ά5 Ryӿ V]źSxtޟ磈vf)|lP[ ޵N ߈*uP@۴F we[@Wj+:X>;N3}pD֐k-ȯf&#l4gl1W  3 \b( s15{N)O)~{[2stEy`v w"xv⛻{槥 % )岌Òt]2|H}k^ô3߲ NLԐqtH?Z E<ǭjbޝթ O|},Xooz (*}T `m@߀VJ*@+^k+*칃࠹Ί;(WHCQ1-ωR7*`*W8ʟZmHBvꞳ; l=R]-*x:啉 ȋ@a yd~vguN);+|:a~Td󮘫W-'38l/H87[B ,@PFEQ{[0owzJ╀ T> 6Wq!Z;G?տa[(G@0]g[yd{Ahݫ)ۣd2==5nuI&'8}"v?ĭ3 `,hP s|(`mHaHs~G2N`vm]6nG3vwY|v '8W 50Vv ^j|q>)A8u(*J;EZ@'izŤ2`T>ZE@Tu\vȿ8W} ض(yRx8a 9 Z P: \ <Tt3\E;sg`x583p 0rsAuhHZ1ѩdxm`5_{%k~x~@{oLv vי2.\:v茯7,K.rvӻU3:R [q,~~\c +\k֬_DL t+eD7k-x b۷08B B$b[9ڈVxvIhSm©z2i+\nBσo?S%Y'T9|hotҌ ?ԽX+9ACnXS-:ͯD O^k zcu~N]5 }͟k3| yYr[gw‹/Ϗzìjzt5.;h 1u`@F[wn,"'eV v3 )WJCЏ_]`~ݢ<cg^C'&8geݽ=@ ȁCxm74nw @vt֛o;Y G4>Wl0:TH9峖vl&Wʰy&BTe3H'/rqŪ*<5#d)ǽ 30Ұ2X]-۵^O sJnQu-{47/_\UYb73Wj c[J _ ^ۚ; #@ пd9po$ c .#@ n `!~ayny:.OJό|)aٖ'~|޶PkOUCة쓞pn# 9u-jqmJ.'_eUhspTOu^$S~e)d&r*3,S~!UZsU뙭9De$k:Cr4R>vk\$ 0:uz{¹x>@LLß/nvhSf`Hoky g?~Y^;t)ܯ*;Nԃp1Mb2fܳ<>6jOhTxs3"j~w8U{)}8 )Wr?jm^\Ğrgl?Fҽn4N]E?mN C?~݌h{ j5Nގ,@v>SMq4L~"ɯ{jV[-M߁q ,woY~$1:npY8͚۠Ą~o?~uq=V>% yw-F1)_S4ZZ~oAO&[KV!<vL *ns!u;x ~gw?sTuDs1OOGbD5Pv6ͥyYv7]AZǺC[@yj$]wPC8jXz-+,{|# ~g_3Oh >`͞w]"AݫL@6[Neٿx^koeݲ qBM:WӒsfl5P'QN%Q!ҍT X< 9#0NK!nV+UfيiT蚯s6OC+4^?s!Ȝ@#6w?7OƌaB*t4pD5S?Hpjcu @`a#x\(z Z_Jc\ ܻ0k\բ˼WX=K`gVUY%CQTT`3`@v@@TT1ك@"Vzd ~*GKGc<,#RNu\MqпhyitKs5\h7*g5'mH H!^ʷ޽ @OP핻߻6'-+@le9tgK)e`f𚡿/TM 6 @&( NtR[K7uܩ0|ZLu ᢀ?/W.^Bpq~Y43_ry5ڄ4' o41F+ b,X$I V0~ wӭ!QVΊg iJ\?0;gjEuyo@| ~K4` ǶvG-H@k@"W #`w&O F׫3m؆1Eh޼pO]nOʗMnP'nnoPr5m4=h{ 7W8>nŲps?I`]q>8H(D?ojs}R\s>JoÙ8!@ Mf}@A( *$r`?^ N' Z5H y猲sx?apQC~ lѵ $q H/wLvn uMJ)e, U=aٖc) ^sv %hB']h;*&ɧ7rAW8_p42ޑ.hiu4-EE 鹟 h7;7QF4o 0e,0߻~7gh@_ : * rC3qLAO75(-%,|á~Gӄ[ QAc; u!)Ȏ!nHaϦ oZh8`߷}LBcZ$1bW,pwZbtp=!]>x96%:`of/tFs A'' ?P1uϗ'jG1Sm58w00˫Po߄_@47wrd=x@qL @Y #" eHm`>he2/K~ B/8st]iִԻpW 2ϰ?Omg)W'83xd/Q\U1i0rlxJܽp"{9w<+>+// ھ=[)vvWːa7n:On*r##='暜ѷshĩ pw'$a]/7t_ 3@Wl޾lS7z @q3+LsP &"+yHl̇,#}s ֏xwH0 $ؐ1hOggSLI^PűJ@6=Emac;:=8SMO>m5kYMN xM%pq&&y pht`[%J!b!˟v+k+ 9Z(ym=1 ]wCg,~*w 7lj$qXM?s<^ ~fۮ j߀*ܯ5f @7@9yfe'@3r fOWh$F1\80_E&B@ @ 8>XH -k)!QvOh*'$ghU2Sf9%x5:E}5UU d?]j3 X]&rDunv~WehB>28hAXl㿩 41&[Z,_ldE[$l?]4@~#O @K} SV`2phxaX;J2p iR2QwvPgmg|[WELZ +@^]ꖆXv$`;b'Ż7}c@Ӏyn2@|M^#y g#eac~xxP׻ ż@-]y:.>^ T,| (l"OLϱ)}[ ?  :x?R]OմtWxTj 8X4пORlv?}AED+O>%\Lo(XY pt ?"@aCaޙs:R JjwkZ1Vl+xn˫Moͼ+0%XdmUHcsywAR[Y+yp`54hǡ=.x{|4Cv4O{OFL+1%7LTR o CъfŽaS7O<.}\/ P^f=~ zawV1HMNC~s24` LwYhI ?:b= 4e6Xm䳹[0_֙Q "g!w\l\)AJ#DBx[t\Czpp}o~* zσ_6UgYn^/u7SW 2NV_Q8 8% LlfT/TCY4ɽ(?E%0DqL8Uߞ04|ݵR>==Tu9L` P5|d]MPrF; k^I=ls}.bg򺹊\ͦ0D߱-̆$/Ȃ7"@@:Qڀ~-bJ3[aga^|ar:p0Э.$5u_F#O,x]4d1@&#'Efw{[6?g ( ߧ9b |;^Ns>{jV@{YIտKL7.x r'1.p]6 /܎a߿Sy~iEd Hw .'Q$ ?k&G G5&2T &%ӷQ|3v^2ʽGӽM W6RᖊۨA2}е7'n <BO]v {N8>wo{4yL'gZ`^BZ g'Lʍ(焣^ǯfM}oH~x0_)`]SxTߖGV;/X)00kx4o",H+%3dl"]B@@a =T1` !+5ڏ#@o6'X6MD"(5- L /eiȣ{TfSjG- }e5 x7twpr?sQ4{ڏn g}Tf}$}`6#y7?YYPs~YA/XT-8|ނ7ܱ:WO9B .(EtLqo78?7IsD* @q)"* ~w^äpgۭqj8k:c} 7|a _VD+J{*m/[>r+8wO7T$ܙ]f_g>çE]\.Uk3@+v(ڵn\FJנOkT:];K1ۉƠV[ ٤R%^o4JZ8RV2p|BiR?PJJ;`.~,p-Mb+/j"_^qٹm%hz%[zS'7Ryò-V|cմFp-wx>;綗[u=O٢Cx-!*sMEcvrlES.oNG.?$4|9O|]7ϧNqEz)fһMR_jY=,i{4ֿ*|07>.Xl.E "Z@c G2恻kYgʓS {)n̏&Gsl#?7*q}|\ey.s 4,*ȁb6DWi&=b/wrmunO,nݮʻwkCOX,/A]޷b N]?#56o)&>Ijt(8ӹt,8}8@5LYGŹ<f;5xyI #Xv($`%sPI5_{y-;d$dӔ#!' @{[i~zG&")НH/weqO_(2banusoE8а/::ٗ bP²]XuGm.K/3Wms'tzIPrUp,x0rڞ|oQs2v/C(:XF /("mW`Ty1}kLK9oR Y} pל 7*|wg6*J ,/9ש?y|۟f~P@h6o_I0? @`[D5"6$` 1j!{y~,] };0*X b@ OggSLI_VPxxYs{Xʻy{0>eN#e_꒴(8h:a4`\| j_%fceȪ\` zp]vs jJl.o؊/3=s_B 0s_V  $^5j1MN'os 8Mر@r'yI^S&n-1A?d>fbc "]PRp>mg~Dn'o귒Ϳ!+y740; ?~ C;7p ,K&Jj 1@"b i:?&S3aF&ksBf:_ ]= k /&xҶx̗'ۃP;ZԇyE?x.o}>l੅M2 u!p@4:e~@O2lϭ3p'W_crO^<ʿ`h_`? `/oMf.o?\9PrBCǯ,<^-賹gP^"pwD\nn'}c.  *P |J؛%AL8eqr\yK~=2f i%ЩϧJh+  P #Vg`G>(Gy Sn_2Å]q357~-dpbu8}Y_ڗ Q#.,VO/>7ͻW" Pn*ņK8Uˀm&4 S 괲9Af"SNٍkZ3H:ÇBjwGى`~n{ҏ EaWslohOX!5X }1e}^=!p|}1,ʾxv7_ȹO,w @OZFN3s uaMϸvYo45bs:oˏ 9/s Huߖ&T03I0|}M-5^e3{W_N̓y9OE5/_y7jE5L_];O_#da@8 ,00d_ @4q; lc7a^ѮҚB2^YeIhF-d%Dkc]o ~s|.:ƿ?/P+e Z/c")5H ɪwP!w?[8w`3}Qt (;'@ s x, .ƴ޷5J<%txqw]i!!| 98f` ֱX'\8g9޿z{?W}$lFh~_KP!IZmX CH>9-*uX窄s`;}3rNjw-s|=O VKC> FqE2Ufk᫛s;Zg<Sv.i_nڒ7N^xl|ȿNjrU9_t7rY *Z鎳(y/Yxqݓ/p/Nqs*>}`r' X )Vo~62"< RGJ(v4/okQ`N(1 o^NѨfr;;S1ٝ\.p0A3*Sv,xHP>|0G7@}XڬD5ۓ<Y~vm/W ex::ع;nrGr@t?kR2 `2&uY0^y~ 76A~l>_埗A竩.y-%T#B0"OPAd PoR0s{@7CE | )pIF8@wzNp򩝈{5㡡H3ߓś#Ny'>W=|Y{XgivbHdF&}ok p|-˫>- SQ P2@'l3K0d:a=Rn 2/?G2 \dmW^wm̴P&=.򙳚:/7f X1TfN,w`_VLC}' QU oVL Qr.|+R` cӋyyl`r9*_9%*p L<؝qCB$|u\~w=!B ;d:;s/jͻ>Qm;]0gۍ`YMֻ%@>O 4).`s6 qCx|%H>LT~ 9@5 V;p? ?;ܜ8t^,qh.n~mI$oI1@ !+ Jb!8׾ . 0,P$^)t >(d OggSLI`0:߲ϭ9=#1`ԎY>l:p͕0쪘_#h'ܔ/M:+nk)湚Qi! t`wǁ3?pKT|wx?//P%-W"RO3@/{0 3l{XYM 3 d&T)E˄'nnssYOI@;g7"D=l)'I;F!'86ug>,>Ĭf^%G5" :_1>@F7-YQRQ׆._V2|3*_\oo \ʹhBm5`w]˖$^FImψ[rcKLɱY?7pޟA|{82C;o7XG~ gE-`?'Wې} bVK3>A`GCwiA&cTx,\~a%kf\ohC" h,J('>e+:҃뇟"v=0j_7 GvP8- jvaqۣ32Yzg7fXs 9U.@_ 3G,V@ɷVp'?\(7į,oDnn\HlMlLGXuolxbs"-mW5!jJJ;vw Y @Wm;B3 }=?^\ktM:yQL/<&HC8aoXizλ|* }k\3P݀^V;OXۮ̷aat@F6' @UѼA@Z@N>-lOIY(;jDž]2i"uNMf~F0u#N~ Y.p}ax}q qob%!Y8TAkF@zsB&.R[uhO Ds 9Co@w@3r0 ˟ W7N.e߻}֛ : ~ _fuf?ttP7y}6iB_1E@h6x#9֯dW~.oH, a> ho"j56>|Ɇ@0[(wp<oX8ӗx} gRH }q@PWݍߞ1<9P4xN>eS{P{ܘ@yC#qSgc4~Z<Lٰ4wu\!Uxt82Vi6_pb@8aF#e:FpuE? lޱZmP +Zz]JC!!f3lęNL;<@Ǚ?uPMkܓX:pXd ?1V?pp0g@0q 冯%_:PSllg&m @Af 0IqY P 4sSVz 3}@op>  *~]'~ul]sz L^4*:cOxOppUl8f2((tq= xҐ" vbDr2aq(/qz= y 5O//o. xЇ\ϲ2*1Ж﨩U@ #:'_7[u0&|.tL˻N?8-(  y+g@yy[X6.<T@H\0`@PC&(%I葐 F4 xN𞰅^d"E{Lh7'>@OٯKN\Y~vDBl#dV Gry3 O8@x_m-& Z&z<izO/etu})t}SoKt"fc X6vLVb'l;yA 3p;PPs߿Y[ 0^1+dK-@e\ \0b4$D#xBmZyu?k0o_g8gna;R.8iYgXKbNXr5 A^H(,'69! ߲~44un-`f<1=^_y{F*y8 k쳾K]# 2d)UpZܸ=m4I_(9YMO94OZ؏ @đ 7722K[Yo[@RJ#xm#jS>HŃZu1 8K ||4 O>#/8gﶚ}=r>5/lE "5EfKҍ `on ۼȔ>ǃP0B(ޔAsr*\*yd@θs#ևS]ϴ M?Qǻi'a:h}:o]Oc97LOۯ^i $ p4c|/߈kտ h)|- Lc2lZ` ze>< t# \LЀOggSBLIaZX`L9l::78EKLibg^a~ʍ#Arg1t/+F_ppgg!J^l\q<`#@5K"(XPҥٙ0} :g r)cEOv@XlHKzRp֐ M:]E{s#񧳁܌zq dΠK`qE9.C EXr#H4S|%"/$QxBVN ;ʭ380m#"HQgDm^eF @ʇb |yoocЋR %8ؠA!|?^`R=(-%4h1'@@n7dւ0[Uoco:=n aDvPv9=[xA b,@i1SN;wy?t6uF |$o[D^h z"*ؓ7`#Ca MmtAq7mI0{졝1_f4 n)%8&[J"" î^q>skV3F-\)sw7Ƿ%+;OOFxC)mY89<-M>Z={;ΐ l dͺ ĐuiHNd6X/]]jT:ȡx?IMf?ΏcRȥp{'I>U`$I  cʋu"4GD{7p` #Hbѯ D @kϲ&I0a5ڱd}޼ǘ@_MV@Nsqž3UUBZa6;ZG"{ w,+Ɛ%a1ܶ@ra'Dtw{2Ო;ߓx]PA͜zMaDwdHXwi3O3tԯ^k1˜:y# ,kj$a_ά= -td`Y`9=:˗?wTF֒|S[k6|bh&{|mV)B 0]BJQf!uOz.{Ѣ?#8융Wzx b-<؋kjc =>eի9 @H[<穆h Pӕ~f84> x( Dkt}mQ@nr;6,}]~1@,M,ayU؂ @$Ag,:L~_(('zac+/?=Rzb\r(!VbԻ"yJHmJd5f W09@]؝sE$ d%]Ҝ\Ys6pMG}t' n=w) ꙞOL ̘5kE|-UdeV||v@ :^~5̈I^<tolmet8.ޛHdeYK˲p-!*aFoe$9Y  `dQD? @ ('{#8hX*L(T \Z'ٞi~p~3_}5s@ [7J/m 2Um,t%]g@!8!.X_&`;}S5jpcJ i$97Ωw\G@y;ztOM߲c2?` V@jfq; ,)S)Z?u<-~$8Sh@`Hxg"`mUH|:Is3=CX|. 0ݱY;@7`xB{VnܤsĊ;Ͽ'YO?2ó%@v.xje//|߆{"ޮ@eeBQ@ι @^Yiծk`K;Z- 8G3@ZP'MRnjЪN PZ @֮gU)f0 b@>Vh&`@ ^mGz@s/3]A 3>w=x*w r 5l4m(74YO=P_./W @%@kk 0gx(~[Ư4@:lVsNurA.s)r UoT˨9]<$p{zm ٕ"I}W<-70gGOn`W@?y)HA ?% )PD+D ^C tX 0)@A`K2 `kOggSpLIbaP!T[LD^]96FQQF758>9HLLMl^MWS9&V#U.`A:fF^>MX>}<_@,~W`I⯈Vru]qV{IT (٩K< atPdHAjUB|{߃@},j9;rãj[9>1<$<%w:(*~ZLz~aWS2p Ykmf@O}@U1?6@O`Ն8.so bNfQB?~ʝg AH.)FH↜G}'ei>tkxTf{px8u 5=Ϣs̵Op߲ρ^Mϊ_$21կvܝs*{C!>%' R྿ qq ݴ)1@ɍ/1~ ߙt{6n&})O vй]7f~_/Vx?O TnMUT3dr6@} =:~-òo @ G|Wtb`arg\φ>! `)`q-ʫU܉{&" z>-LD(ٮ?|h\.sM|9OX-@~5N?Eg~ʫ5d+4/bBzfvu 9|˼.C,A{HϷ'Om9O7!iFhUa!=֦3b=ܦ~O?V`yM v$@: @T+&3skEV0|IGI@CU1_sY,S? ۰i4bcpv)Uwν Xab3CorWᬖʠң# mTa\$n@xX?.l߾pLƶ ^:pZkUrmf!\E]'KgT-jbFzZq6̋s=XTYPqj>:D?94bUDz4=;}E,6@|zD{t2Ml8P,}^A׽K>,}~GsIǙ:LtZ(Z|wKts?4Ŀg@!|B]?r 5x35svox_n^^/|r=>Ow@eo`?Z1% "Aj~|f\쵿Tbk *B@FX W&um=cC\/"&Sf1["9z32}끁?L}Xu1y~cԕ:ɚF1T{')- xvwpG4NoSy__C~/WinOOn2bwrgOqgݏgz E͙u}%dD0s$f5[K,^~1^޷n_MW`,O8`@ ~0UK3u=r"֢XRiY-> kug{h8Obz~jc}~䲱_O&w3gdC!_ۿf-#;eLA>#CCnMΫLs>sXaܡ3KoϪHզ$@ѲeP1?zubU->vK:liV19stVnf[Qrᅤtfb)Zu, p5VzqWwxY\q'/O[|(9\b2r1v:fϞG79D8sv1Ӈ ޖ5__c2Z_*Brs 乛Ŕna.Kvazn:-;lY_YѬi ֯p[:܎a;QN3Zպy5n^ڞum_or/.N#79 t7 T^Z9=F,=.&(6D9dxXsW}̴GPěz:-?yMo=wwh}jxˈ\&,h{Άlbuk1yG]->/T ._ ?XV\ulۿbǢG^qwt&МDun${?iWG\.ZpcVY _1>Nghw禆z޻cQZS=OZppC^=x `]daAgk@!ܥMŵ]=>#mxPxQaA3 pSvsh%PWxr`~m@]`_`] շ1]耀8̶u %{)_NӁB.øym)([ۇ@"^k'ie;8}Ydچ De/n][ϱ).^;FVMXhUxn[} :A 4$}w-˹K3`(-,+c,| Aby *j}N{,E]D H@526ot[HyGP u(K>$X\OggSLIcRf`cujDa]BPa>km/πq<,eUo@Ɛj-Nƺ?h4N7os>$Xp a5_etPϐA.UH͵4 w WZٟ?fyW t-] s<0u6_=d)O˱pw[&w|ߥJ Ο ޠ侱\!"QaGnJHIc9{ޑB_.S_`5c}?>Z[Et^\b)@BQ@_]?&D/qw |-@|5coWlˇ&p1Bc`5ʶi}Tp—hj'޷;/}M=t@%? }n}M`Pýo[[MƯmlR.㜻㕍إ]*>xhVZB1͘I=Sc#ailsOȅ^~ӿvObߑ7 MC׮;S cr kܛ-m2~Y&a;O3P^e;@oJ s:h~7E^d#@7AW?-*|Q @ 6gxV >EpcapH2X^ × `_ Me.Pa%e\?Oke460$÷t%bpzcSl bz{'igiz:Cf-A}{B uSŲ:ME9;sN&7FlOB7:d: #P%Wll%<tj Ao7 !: Y@ 0[mt\f`CѴlF‚iO:.c~&EP]c@503RoiєˮXeWZ.&+Q 0j r_kuOd"pcyR/\@oafuerpT<\(AR}.V$fpE@q?YA8<;{RU=z~3 STK¯2@4EXh^EDM$×"J PDދ# _\~QF1I mpnNt1 G2qӭpEO,/o13GR[n֡u.0oig>}܅]%gISV @yYu$ Ś_{D/x ]םu|T:寧)JTA/{}UT>E!k@}6gz}@?@01\f!u$Sl惕a"n}/xX xz*'eW(ruKQy(?@r{QU ފF3Pm̔IY5p+?Py`}W^IiZ L^G_Ig[|`C٩nw~H-\b#)ץW 1O>;|1Gd &"DOx7dQ]Y w Y,|S;r@7M'(|@;?.F:~S:Lϼ148<樟jf$N8l^*he@mQW hFzڿ-KDDSni -9^Om pB p1MZA6U/o˅\-vu.bY yD4  /:|GcrܦY& u(YK(,A.\ZkeEocU򩬽;5zjsAki'`:x_yˏ~! "]NmV,`N4r0NjI3]ȲJ5^4O䁹S?5~cl^$/0==:!T't̔Ϥܽ9@ay ~TYAuo68NL|GCZ%hUD W d"@#b=1^j5]&I16n(ayUmR3FBFb8/3zqn.փڹx% vJ+O+IՀܵ>sЂ$?Tuϔ̋ xM廓zbV%a§dsz6>Hs8sEp|}eI07ޕ,s6Mci'+? ohO *& `HD')@q+Q KvhXaܖo60(>ZՃᴹ#-Cxa"?zyp@Fh/9v"趯FJ(d5syuLfZז';߽77_N͋>j\iʟ=~du9[h?7wYPgn`CBku0 Ek6s|v `á6W=YL`u? W`l!pW$~o lK,f@j)o$(N*F}z!mq _zdoց6k@LASOggSLIdRbwm?RTKJqv}><ő.:ޖ+Q ޘ(eٕ%X?RamKζU)Q>,y-3elzUT -ShS{.BPܽ6LG}4^b~ l:|qGWUB~h&{Y@ ;0ZRE%k1MtPِ$ ek`ejs6=fPCG+ dIaHo3j0G,!?h@2W_ (>&4o  =~|T)ٜ*`b lӅ7.z?^9<'߂Z l\zc䷿s^ǧxm=F\' W7SC DUZ= rPG0hAs2$MWHys+f]Oka7r/u>$+ z 85zE[jߟQ#o膶d]@x-~w`Lc T@z`E`bO)\[cd `:(X6٦X1 `]x8skUMHOQ;nc$TGnj9("VyVNeW}Ɲ>]n8Ǟ={HCPHOlϐ$s嬞[~gV3:n~Q LC:UR(s5ϯ  dqB? ,^[̵y}u+Ŝ}ע6t1Է-Z T#>Q!p|`࿖L/PQ{B]~_ wEHF@Mָb`C$3Uqe<4ܗKk :hQBkGy#s4f>] 7ylST15IE P wŻ? ^]zej_`EtѮ^ Oi/FN r>@_Sɬ>`\^zWUqT s$YLtt4UP|mcHmEU?m#@/PKRo$@TO964 mQ <1X *` @    @F)("(D:K}dcR0󅧻 rsֱVUgq՟ǥW<.o`\"W>* ^G|'(DT/m\luy (|/ݏ#$4w@u֚LH M2i=t]"8>Z#ގCa:ڟ׍W˄rr}߯Io곿 wSQDMhhCV|2J,*Man*Eу}%d$a}u`m1ۿsĻAs7=fKZe|1dKvzr r99J Н\C1ݏ̼נmog4.SKf6@:͠i^䚿Zh/ṓ|pkxq+X4bk4~ a}ٍ16tgiVF/@k@4[J"Y-p=m6V,Kɻ`D~s~g[e\gysx*tyc4#+2w}d?7eu*cgKU?m@5K*(7;Ͽ_7OR%s֚o9[' ^ŸdvlE]BvfKp< FZ V\ V O_C ݸ`tߏ45У4$Yn*H :j~6lQڥ\RgȫP5Hj v {Tst|Ss :tC;9fӺ؁zd}-xM,b#=r'?K=]UP ,tu 49?f?b a$ \L@Bg. p62'Q@0 SY/.o8Ľ`pg} ̩Ex#.y1׭ǫW=R{`3ފg^x ;xo~W_?Ѯ.\8 tte`=WihG2lR]}B6i65a,Z5P%! ,~up<'Ӟ99ndZ32\{1;Sޕ bM'yii7w%) #rqC5{Iu >d`:Y[a OM%/?п'A=5vv9@o u8oPh7 i  %3\=y?~yDp RE9F"v¨H۶aM V pnØƬp/ DrΙ8 N=xo 3ӽ9^3p` g" =~y|PGoZ} m@uDx~? SE3wJfضe6'5a[y+8D,tD~u.<;ұ>9O6ֱ~}R8 {lF:\r՚䐱g@y_IU&@ï\ 5zV.}3tHf~sCT/du <6.IO0mk^5wW't 2:Ƒ`(N>5Hx܅zB]2ghyukglѳ "pH 0>=tyzLC=;Mʁ mVcM6dnSW m U5?#agsYaջ ؀ %RїHifnp ~ o#@`  *W0Z|~HA>3M_Sk["Y&ɽ[_0ok{L74t,F0vg_ytcͽ϶q W14 i.>> "9ܝt}i~^׌ҚPG]r "i+ߟ̒~Y@Z?Wm3X6 Wj_4dz=@!Sif^a>.Ep g?`ձ4Fu/fȷ"P ~N嫥q'TMXXlxpWUYb#&h%[ \h.@W葎f}$ i@)֠H O=@UHNZNR85p+@w`R4zX2L8;=ߕqiϮѸa>4A@M*Mpn#̓s :i pq2bjLo])v&<Ӻ s|3@/*d=@޴H6ppoLTrOY|މ(-m6OPVKyee?V=bg7VX p: h:h+tMzC\@ PjD,!m};{|m`9Az7麮ky+~+UObm)@g,~H_"EېMؐȉℹ[. I:ƱLJ+ "P|M;ñC~ηe&ԻM|xO?0o)Rc ?0<`R~ޙeC34oiHh6>~?|aB:/nЌw|q{P+QH/jh0ګrK͓^'4|[/ \ٯ^s[qٛ>@ܚ  ؖ'&UhF;,G*b?6yrQG"\#ʆx;Q~/`8E_nh`V +0PX`E2oAUElgCOz,@$mur@,|\\'@^;G$o] GUϝ=p"S"*F= A/2nPu+Yy"@S߹C?8F'Zex|(w^yg:Lv= G^PFS=C+j&n>h8a=G?@F@w8}?@f7p @Uiχ.F  ݍm&WgOW%~{r>KM@歊?ŷSM A5CFwS{PmX\48 4Uu' !}z_6hiE8X N\Y$TP6E̲ 4p%'|@ۑح 2M @~e(6X1ie{v{: ns>?w oO 8F7@uXX-P4= m|Ör 'fOݳ#ᵺvg,+\ᾜPJfop&ڴ;8?ts]9 Jfl\hyt 0Kf~{۷ YyQW {T@@NC~QUD X n P2@ ! 7'2O^~iG0tZ&BVzp~ ^,o쏯?4h{k3g:h~x$pnzSF("b >˾@exWkgjNXۼTmc JǤjޓÏV>?h@H6TWEmeT=uW{T5^Jٟ)px}T $dfoVB払Jp;k}Yuɲ_c!7*?\Hk'ZW>A|* ݿ-س6Iv}@p>JxA#mPJm>Ju ` [\G0 ptOoC KCĂXPn'}=/g7\6R\]@>_..>,F0&; ֻ]@9KC Q|SBvqܜ9ۺKZ(s){mh/<3>k~ "UQSDl&b |X 7ˤZءoLBSy~ON!?>QyP0^$"3n"::: bm|// [EН%/ j) 0IH6v@>bWY{V`DZE4^Y֫o G O iꙮKcH j#,g$'(lqMf-~sl}|}gN{%1`?!]Ăo9>@s/sXJ-`^?@@f?1tz;!0?|T (3'ޟWK@J%XiYB<81svr>~ g +^ ]M=ys$,O硁?0GcEx~Ӷϥ8P1PHl@mCW*XvGOp(Pjm?$ |< OggS'LIfU˦usng^py}^i#d 6򝩉(${{j5Wڽ}-ņ&|}xCӿs_%AsKC@ڦE3c+F?s}Bѝ{JkpQe[56˜"(]ɹ[< 㷧W* "wX?NgcWnG0Un%ɯIшH[}&&e>;?q?9/;v#wYx " MX~ r'<}Lp)iRo ~,>Pd@ d(9Mw Fs۹W=,SWbUh_^ZLn@C_,:p ;ćh4!pp_+#CEA ,3iSEmkGtn 0o:29\@N|a@e >je>$9^֐ɀ:ލ@B[qfPB'XpS&)ײ] Ag/m0k:) w m6H+ c|#@E5@>(&?eg/62q XO g*$dc(Y#@g`R>X;[%3~cc||ο%~,38s5r\_ E. }=n|bv_nbLY毶f٭~)bt r@ԛGbg9ˏw>,Bܜ!f@|@ Ds G >CX= @XP>3_A ?^*,HA d#,c# 0te #`+`^L`۶ <>ucI#3'3nSN!nMRpǮ[eqΗz4P9,Qtbxڀ+x6+y\r ; u%E`n742M_a|}N&3Ft@{YH"_>U/Mu"52;Q={AKejUsGn5Эl>f"L+{63T] y>lL'Ȅ8gUy\3X`MoYY{aNo,U=7U tnۛ6h,9qΈ \*=g}bۄP<|?6`U3~`Ű⻒ GhKJZ*L{NsY͇ F BMutgqO36C.KΘj%?fXUptx,6[&^s T`.O"w,o@` =D*=&* oXwd<9FgcIϤ )'_(5k9&.-W$ 'o) ͋ѐܟaG,# ֣ M%xh[xS#y(E @nĹ9l0ZlsM^qV&$G'u|8Kt4tD@;2Ҝ9ݔz@H @?3spa4yuN]0W7U8?v3!279?^h (ZY8?T 잛L|8aV oC(@l2O 2s|l{o~,'~>I=AmN+A)\|ث4}hUz8+{а?Wz/Xs@o9 ЏfF." q}xݱj?[wiΉ{\9l֗B` )'!uŸd f VMbɪh 6şT @LK^93s>U*`xgų@:ә-W~|sk@`*!Y^Q`|d1|DU ͊$d-B..mrp[5%ݗ/q]ǣE?Cqsw#Bν#Е*]a.Mӣm#Baat ~ x/ LtUMw8lA_;OQ\`/Y,{\/4@P_N? Js QɽI7.(޿",/&htBb!` lH| 8`$Ypx1lc). ~ ֵXѨ;`#q2qK;_|%/?G4.nʣ:m;Ԋ֭sw63oܛ{4N \ @<vRN3pͮ3H&^2@y0?&s9WiN> p"s,4o/k I9TlXZ@28 !3@\6bƀB(d1,nea- 1H ˄0c\5@0)':zP~#5}8 ^W^`&^O}qBМ}qۖ>p~#N+w(Т4cO'M}g\wYxpؕ; ^Ajsawhm_Yh 9g@K,_[(D_S81k=N$ {΁`([6k)b1ְ_/\.H$Kme4UuZ;RW,_*,q 36WAZF:EDPb$ Ԅ9@TT^ooF \]eI2ms 3] o`A8# dw6 lZGI%?'9[o.n_ކX40JD*bA/g,󆆹Nn{>n.{b$羖:?@3槥 {?.JggMЙcۂdCf{!sv~T|a>#(5a=\ ~vVt%7w΃,dɫKN ,hpK!#{>YXu,_(W2f OMp?OggSVLIgx- xa;9=<:OWn{fqNP`udYt6]؁ix??^ٯCi0~?@邵o)5s6FapSVwΒZ2?ƔC~&};zU%9t)KJx_J*HOtd@<;8h($ Fw4/ ToO;Snq^@ 3tǎI!dRKPi9UC5,8|sij8*@I:_Aj ,~zgKwր@e~`A K]@o t1ɖ , T`y ;0Wǻvd5k%Ipb-U8o@< QULdI>y+՟=wln\Lz)ˏw%䳁 ]d;Ȅ@۶¸l b-c͖9^?{f3o9|-|^L](*G.ǂa6hQ;;U^R-(gt5lXur5(|TQGcJ2cl@x*0uUE##!!p&"SQ߈^&q aI`T:խ7s34Qrˏ)+evvE>>sr΄Qt6~Uq%˷Tӝ[_YwkW/:C_YPuO\*A)XuE<.skkN8_wN?ftj[ t ZJ!X_-cޫ02Hӟbsw˟E0rRZY2esod*D"CdR8:_*K :Ú˪׃?kS3tmyÐR#ˋ̂]=l =LY۹9jךK޾^|z xzATy P5X6ةja=p^yDw1`YY[/>\{$7(d=PcGF*`I JXϩl9pǂ#c,<ԃpzkA{QTA2]r]{@Z,&?u"hak(njL!99xy'hLs7Qpoס !D˷@X4x@lT??c$ j3M%Vi9/]~i6;=щ=$Ȭ^ogy>p H ZlŇsЏxV gӸOgx/wq^s9L/; ]En O*ޟoOh<ɭ愿 q5̋~Lh0Sg6+lb?No3,Lkc~N\ͯoNg L)6G @7*0H`@aL@S6aB+EPn;8w@~ ],Y=M& ymb3~㝋~b<| Z,8` }v@|F;)polVˑOϞ++gPƥ$t@ar:߷N:앮@Z{|{V:{ϙԏ<H8Bn'K')ftQ{do]U`Tu# |Jfx @pz^|Zs߄?^beM0OwBkyLLf/ \?{ > *P@]|Fhނ$X'H6]N5 q{.jnwX .J`E4 1\5,@ruVS O9#v#w2aRdWvˤ4|{uoе'2>[?UG J'vBZΪXEQF\΃}N1ڵLg;fqn 6U Z @\+G|G 3כ7A31} P!bqMADFU?01sS2`8";л?Y@E@D)m֙r`zXGs"4 "r-]. y .JPb P{d*BWbWWws>6o0'&M}[|8{,#Os) ;-vyrMxS ~'}-+wci}=՝^|.y^mTT,ɗ, ?Ȫ$e[Ud^Oٳ%%[|J4Y/C~)͋I2>$z;qlZ#w53 .wohlm}htT&4FC0jD7=&jܸpC!_w0~Bʛ-ǀ/~פ䜳g{<ᄕa&23@{Lpʁ'{OBNj@?0, 4gm3=|& ^ޖ/C ɬ  OggSLIhsrfnE>k͜^_׋b^Ъ/huQrRڜzFeIoS˝W pR7 +a$aV|;[0o\_콙$ AARg`bv;ܧDrPAo:;gxwn ZHZt|r"j0/ɉyGx׏.= HzMS@ZS qM>̋Eei +[GY5kV#g+΋93+'}jQܙu@w^O%wVή咧zO} rxu}}>Dg,K IE;ʉEB ,- IwV0d˲_-ao>B%},͝e˲,[ȚWN9 ~$=lĞPUPܕqfhs!Iy9jxsF_DŐh 6P ߯6/Dfq>ta5oybQ᧨͛l7K^`t|uڹ)zbcx5ubHЭ <+yNjz_lwQ;y&agMqRlܭ,z̕X\[u6n{l ;?g߶Ѽv89QӜ)wxGgds_?Y]1ߨؙKs5ǟ"b35ZL/Pת9ݺI]L/w♜_ޫNo$ QZH@3,I-3x @ PLW۶_F?n-ϛ%` }fdd`˶me[cI¶FvwۦnIphlu? bd"UMU*Nw Nﺏ5] Kֳ}%k,K3i8^.éjft珰QZ.X*FyDK7O3X+? 1Җš7v̐ڶu >8T؄FP2=NռNJ0Xro5BZ3_}_8~PG £ğ|g%Y"0MΘs}1O+sR%>-%eEڴ,yv+i^Ⱦre9nNx?L.gfU>q^ȋ%E["6 {~×4-,D'"=Ui/<{WIkBD7SfRc8߃h/+ϟD5áׇom'eq[?=~[%$@Svl[ GQW~hzH #}?1`@?W6c! n} Rv<n| %B3 ݚhf[< 'cA}Gmp-ybpWuG%!8;0B'R]"?wZ\"ܾmn݇^Н., xBstw.< KE/3)9[?V ]N9G<@%o~iLVǡ~U)EJcCѕn%r_/ 2oK} %}>No-HQѓ d'Qg]Yg'ySV9G*U/4W~藏DX0B* VD>VP%-`pE^}"(F;`[*k@ ^p{";Rҡw(8.eV+{Ԟ4れ꙳_7sc@} ß?9<|\/~4#@?. !̿. 3ԅI48\'\}e;^;<wP.F= _`7F僙3qηdx2.䦷T*CFr~6Ůt3+z߶2 8wC=Ԝ8!DD&3 ,r^8hG~ע@58?'(^_IoHq .v2zھa#O}ʟ3!+:8* ;)L p9x6: EOno1X3ǟ0Ei)8ܩ)u/}-+t0I %(J{ ЖA_&g; \mF%e̸ŕO0xc;? n5X2%gQM`hC>v2γw'(l:/Cb (1@ޕ~Af'q_ ھxN$7k@6^p [Q2Q0G ]W|pv-rOaQ5] l9K^H %  K%]y$" @&Hܬ~>xW"xgeC0{PTmؤk|Z(@PE@zteM %!Wvwyr&atI⁙t8tʍ.;ٖPaA G7HQl>_"G:ЦXv>q`1Z3OggSLIio+5wxm]Xayrkad>W3/9ٵs*׈iQdd!p~mxv_;Kk.]. !ZŢ @Gr _hӧ ~G<@9,9;뢈u5ПKWLtw9DaL2LN @gY`?)".gcf;AvE[u!YM&@җ&Ԁ кikVC$]U̿gisD2\3N,"w'Z]Tz bEDD8* oX[)=E*<e4PU-~X Ӏ-Gݏ8AwQd M2g4'h>;,q:@L.a6Hk[ba|!8OtsA/gO)\rJh>s:0@}OEN sodd.'l|۱ o{S% v/i~\&2>1ƙa.7 !0KUO/o H-"(G>TEOFN@h*Ein.aA׫#\Iы;K0[3o@| ,B wB`l^=*YnS)ihn$jn0\O=:7, uu%jP T pSs%/o'ta3VfNvȜh R"JG8Ppl2@(e9MլJŽ?^*sa~2skSHX=fv(Ct=ݟ=zX,ivs/pO9jK0|)9 p@." `\!rG$@ z0z_$@ P (Fc X]GT-7:E%*D6'&w]G Sh֏΀cvw(ih@ @3}E[I@~g#&nR.B `\&~ ;"Kx_J^M2~Un!ݱAbGykTб\j9+9쫆oBЯ6K$<¿QRuP\\ȶ }t[Z_(&FR5;{m$@poS`^txѷ@k `F- l௕ELW@`Ym>cJ(MSC<S]kIZ*:=%%)"?ssE@쳦Oo/G~b_2{[%r"0O+޹c4xHp)t~I@Ӫ4S"du !A _jo՗U*۬F?V ڒ]֖^u='% rLu'T7%Pto~ 6 AhMDrXV,K@s˩`bpyIOF0c%X D@Ҩ}Nr\(ż (ÜZ@<8ux@t~{DkV4>dDMޱ}^V]%5w F6Q-%+ו>\6Y9$[-)E=B^~Coo]%/>fK.1+3N6oƐvΛ0~hXVM0Sz{.qnYYw-ʬ,hz-;sW3(?~ xg?@0xܭM]}Ȥ8>Q>0+÷@VC,0!@"ˍ0䳃21V Y0@>~]3!OX''w!$jb5Gb%=۫)@Ksr|T\y* qn-h?CĬ{ w_<0 {$Cn EZ'B}B몰J1vb>s=dp8wQwb ɃUS5@HqH˼?#֯ oY/Pyn=@UyGdl}zi @T_)< YYOF4gih8 ؿ1@BDg Џ} k#ZNB\BOFd4qTϾC㢃9\L~lX%h*#uSr. T1{:4?$@`$EȺ( =EWAJ/! ! Rͬ+|6Es:8:1{ȕ[3C?=b# ͢0~/O70H0@/ tu,@E-cIW0fX0ux gG N>!W*N"`4?G2Qr\.  `1*@ d`  h>~y5:2,8܉N2(bCtk4 p~\7 6RLqKѢ.1hKm`9>rn0pND'- 0gR k0ߛ81 (WX]n< l7 i-5ݍQF4=NA\"3_>@K =嵛60l5&`Em (w_!5E-_g`}_#0 2vvL{Z DqnWlghn@nxf{+o ѻWV?\W}NdL Zջ݈aR}u߁-WM-yO7 lG,] ]N&sm03͑C}ZͫH+7pNv{}>;Vnp.ZkYi\>ޑ6n*@42kT7)Qm~6  /v VOggS?LIjoēbRKKDi[[OV}Fi3+.Iy5M86;K/g_ ͞\>WxP#\{=ܽ\}o%rU$! }00諫j;pZ}&ht^9z 9uهІ;/Hw?xޤN'S8}RpѧNڎP GZ巇N]: *jňK?R* pIg8IAv)  `./_+PХh/|Q2|p3,",^ <`/FiD vR&Kf;ipЂٗ/a: `3iǍީz&NTD~A lu%l~NBƫo w@z;=^K*A{dUY3s=1߄avv]!d38O00~wr4 +UpI|%;3qUaZjϨ *^Fx:4eHT86@$JN}+ OzR!Bim$`۹TLh*?jE=5cأx0l_=߹8qR)A^A@~o~p|0> v(dfv w;uB ]n[7*_ 8"!aw:o/sBkWo+t^=2ar[ *b6PTPﯬ2*5 dHEhV;T |!g>`~@ˀ|e . B-,xA=gchu굉 cb;)3(rmُ V`sp'Teo(6H m']  ͙skw+҆IHR6{rxڃKn.XV`+S<4 B Dl^ˉWEmruaq?q^sGs`~rVaXbX}.]z4E84e%@ϯFmvXge@ZE` #@磦IX Q$A>ԁ$hun ZHe;sTx~^b/w 8"i0=T9=khu=mYzi%woйS]#p5NYrWG!9¯__uu:N@65Lz7zqY8{e$-MG~@Fӟ$1t"sd]p:xη z϶w$ GڒDp  =" $ c*(.pJ g(M暝1]{*/ު4oxF hh3GNHD}?۟Z>|& r.0zwh{%,>rEhKao+sS*ͺ ~vNsoh˞o_%7R`;|^DC`sΌ[tTx&_huԆ]4__ўne`g@AjYLnz,]+Y鹃̧P@Z@Co! ?d^@GőeY\@(HQdL`t8/О85^&!!2wOL2<~4;|lpRwUUe(Z'P.H Dhp ?FD!q[B ώ-Ȁ`rYkOc"ohJg0sun҈!jf꿕^:_+@Yp(OEڤ{FVzxjP߾`hI@ `ܐ5nѡ铥i2:YHdF@%Ǡ l@ I{/BOWG7X;~Y5 `'5Э%q$>9-ʥ%̓Dx}_]5y[lR D@$C _-}xѡ\9f@{ܱnyڞ6AŞ=AASuk{WfbQұ;vtA `ZSmNuϮL\/Tt,+/ϹF _5U40<_obwA}NJ`2$|ԷY`[~ ت-V@ dYc`PE_ "}Yn4ق`R@@~-(֑r,T&#wU*g?l!`? ԇ/mL;_XsR' md+0p:; ͂oߨ)@%2(T-<ފss֊U&T'IQBQ$G7$m(3[;2k19S<:2}p[rZ #a *Mŀz_Wdž: ^>2Oh(07>yExV=U_|~Wsj {o̪q ;Md : O, LcQ iTe!, ᭦g$`|? +7gn? X6U3t#P"sxM-ނ@~?Sso-NjƯ":(UP5I^oǟ=V랻w`*J-p3/۶c?0Rp84{44d)BV]Z4 n~w{`jLy)LMC~JW3K BsE9Rp7E =psA0tIj6b(|SXH<σ:v"Ch-PDd *HQ@$wM~ЯQTH21w+y0BC@tS@Ev_Rw[ L:ɳ(N0]r=c 'ֿ5wO~o3zq|F~ƁAaQ`|TBlNUk=kd;fs9鰌:%s ?ۘ'9|Nx)(n08yƼZ|%W*΂a-@@4tFciNR(@9񝽝/;:WgY;Y)YkRcTN _8x빿}qȽTͩ3]C'Uv>6Aj_*u i)PspɫrT`duק&|N27LIߛ\iOggS LIkJnJDRimXaLdRV]T-ק fs]8oI!|Qno.7(SbvO:c@ d( %")-c~m~Џ>aiتu-.p&[[o(5~ч5s$1ƫt>ޕL ij2Ś6Z ;74w[}vg0֗߿֞R|MTP{ ߓڴWg0|= V]ۤe zxՌ?ϣ*C pz~LU|3oCMxǼ(vT~ 0Z`,pdAh+HRU [{%Z ?ߊ"B?ID8mܜ"Nxu My? U)IE6 ޴x74M2{3ѭ{ Pc(vj.,5o`?&5vRvpL\ybCLQ:ʣ 4!"YivhĽM\j'wPٱ,oد[`$K"- 3ux.d=5)lfW@)M$ )VnͣXlC䔈SG;'i"G9|}$H  t 8]cxo.@wl)+[Sh7ѰɥkFfdq?>_]e AM10!/~U.x*j{=׳OD`9LsK H^GWiqO?-3OMP^WA}ދ?;M"w? }|,^za>1r{(/+<D yYPE჈Z 0 \g`>?@D-^Ҭj3Ѷ8UB}1Mvp̅gk@/W7j͙ ]]X'z5lP fdY9Q/^}쬼sթݰ~hǝ<#rڅj־7d|n_`cc)xo^?_j!j'۴_zsh3^]C ?GN5A;z9ki(Jp]:\C$/>kVhdMO27;Ҳoh` Pd~ \?,A6WB-@wq-? `k-q>ym3Dkom&x(ٯ5,~]o w{rx>E0BEXߕ \_rh7S xBz_#[)՟}JQ(x _O~ˉJ|ǓDFfOav`O,?|v`aߎ{_.6 r @}=G#Tc@pEއ #?}-< bx+\8fPϼj_\hi\:!<e5 <+\;h(&v"-O&a_&]";c<7F #H F;x~ǭ陈%W qx}̺̐ۋ2\N2rUWBǨ#y!Rv1<ӯoU2OMB?[$8ܡ&G kf%'j *:9U@ ^#I% XV EG֟WNe T_y|䓐 G O:} 6|}*QW-ܽieAĎe: 0|0O38Nk_7-Hj>4`_\A#/f[jN&<8:6/o`r)?nq1 ?! R6t- ` YBo  ~>t D>(>#5òGk /7k~f%wR;&U1ڽ^:Xld-9jnwjqC-!3ڮo(ZmiOii 7ϐ@A{f!9`pM9S|{Qq@8SWcq~TfO|o,@N2yx@(^N8xf;00ߠa`$/b0j>3@&?@H]y @ !}}n~-xM䥜VBu :r133U9t@c_鋭AdAZ4P+_hmxǧ2~\|:#Bֆ 쫠EOe)-X:jN4xw鍳P~|5<Ú|_8~9>~^%8#6fqV 5xJM|Nb:rrfK(w/=_ \󙬎|}/j9E]L> ۖmw,B1`DohQȟ8 O*aN@ zhED->Y4-a' LR#wiSf=ch=o̹r(e@"C2k[!'ѐŢ 3s2~u9s1'LcqԽ}Hw *]m]J?qOJe_ދy<{ f{aRܷb$>NbA3Ǻ)ρn)˹y?ÝS3 ~4d&ūf~LU D@P'gKwFe@F7d;4cZ(Z d4Y!?"#E%@ dD3J͙ \8XxsϾ!H^ xtGyWsLvL|WPvia~7wq&w5e?Xz 1wϳ#r'}=bw7ֱ܏c<遬dLӨMO 9*b_ UUU5ss_ǟ./is*dL= 040@j2Mffc=@#B%\7KފkBeBO(fv,D@}]x`I$G-EQ%_x&@- 'P] OggS8LIlȴ!>:>KOPGe^:89<anVs-As4U.ܩW~zّۿu*c@99IR}ʋm|lc`^a;םpL>ՑohE}tA*T"q$kvB"-U0 Sx{s '{V[}lsWM-l6AUZ CD߷<,1 isw?lrb^ ~9|7(Z muQ`"!F@.瓪4s޻~ k<ioG;ǃ^Nu"~. MH &?R :8U/.5^IG5l._5ncas_+eRY ֚ޅ-OΜ<37t%ߍ{KO~uf?}EFo+++osj8דuϡ4YkS>#Wϋ8ډ0XI)܆`:tGrJ_;O<_@ܕU߿_I90tw"6-g/ omaI}3t]P`1uF&6˶A-f|AUC16"* ^9eC[%ytNJ6 dMS>ov?w=k1m;b]dŪgԣR]#*s8z;HǷƲȦ?ûiyU2Ͽ5dZ8%6r&ԁ燘ﲭt--d,4HoYO# wAϫ[M0 ,cQQ1j%/q# K@EPѧ>Ox_G70M6^ie5m; z@Yz?; /6SuW* H=8E[Qe /3_;ӟa~T۹79UwYӷϝ&myKo^WҲ W?!hJ&߆CӹхG7sg-x exIzc%C>[ w7]k[,(܁w(($48.b7 E{O>fZW>~3jml-o& [Ͷ- ̶Ϝ!7૯XFId iMfG"2v$/ @s~maW& <<wo*Mt,mKGzR6MD(1Ag&am$w@`,** \`D8xmB 5Xo`r'lKk  5W>^_3~u.+O3SPϲqVoNuխmǸjg^[QA?U\A7Ýy%`@brs{aJiL )fqASG٣_U8^~?PzGH VEO>47m8}'иsfvjun?ɣjSOn6x{g-Pl`A W_CUJ*fNqfBQ:9.>8^(j}n3A n[P'ըy6穭)pr4 "jy\[%]6uUul82 [G(mVMʞ\_xOa~`f߃N˥՟Ѽ/d%/d\PjgYNٓ}ߔ}=nov6BOcw~oכww5_Ӽ몶F4'l)NG_[n.d<4(vwobq<1rBBRmF$-z zp@,f*-Iz,jd{Xؖ ? F"+\BKim9;AOgHQXptk}n$f&&l=]_~ʍ0Ep"V*.o/pm2~hj7t3w7|(\dew 9reGY @V$ Ḏw0H -̻QSU QM`mZ` dOggShLImvys|o{dWWWWQ]J^JN.iK {\_#n CR(|3?6kPy`n_^}BG)'xH*Bfmm~h|2@- o yߣ h~<keI]b{r'fh&bg/zt a`B<U5q*H/.@|8ϴY7'@ROnL[]/G O&_֓RZ9D}I2 b?@`>p $ HcȻ>%>Z.g%]b:N̜1KSK[3rk.eg| ~7PWn9#.=J]Q${Ry_>o/NI;k:U^Y,] 2@`˵^Afo qssEl( ,緐. s]~>՟SE)B|$l0! 9'8yg?ޭ) 2Ɏط)wc(rs %p.0JWE/"Pq_bT<Z.೘R]aV,UY!$Qz+y?O$^| 4=oRxW $"ZDJyiYyn;?<"w%#_.ͮ {dwQ<PƷ-ݮ'|`GW珵KgCd҈OSW;iyզ 38WU?bSɓ^rZ ϫ=qۻOr @(bwCBc$`2$x ZDx|  pI.W,,riw*G |T|H9I}_8pX~+p@.f^*EXިo7Atd6Ct yf+}2OOgg`?)\#닚/93_5s߽ҵuu㄃gRߜN=3$pJÚ,o~Z3^n&tٶ >p% J?/'Y@z!3vk\@uO@?{3=6@6!Ӂ :)wRl#p`,&`FWw0m@InĻ6#.)U]GǍx;j ֆEvWg?3178y?niq](x`_fo-/^}a$ 7Ʋ*sDQ JYYNgT3?|@Yh%7ܰ xN eZ |R(  @&npiYGGN{'塸xF= pf Jڿ2c[SW8xIpVY8:>Fڿ*Cz߇]\-x}"@Hȁ g2>2F'`$Ɨ r 0&X YĻ.5:qTB+,oa n_$lͳyȚ^S\ odW _X AP/*?%oض7 4o | {`b?*mǁ4I.Rw%8ǥI+ v>`bNchsj[Z)A9O Lшbt:L/ômYv:ٝaZf0&6*Wcpy-(w/n%jX?gAo.TW}M@O܇uX `.kI/ iܨXh#wYt@x $=@2 7 lkȂ`~)=S͕VA19vgz2s3fT5K?Cu6c}xDEpvǏaO+; ̌unC>bܬL{2wps Muv r 6LB2w@Jz<\/9 dW\5]gγgg'`@Um 8~f:YOHXArCfP0-tqZVOһjlc|72LBą' e0# OggSLIn{oAwpszmsagvcnpNOKކk(GsVLI8_Xh|b/нى}]E@@Pwg*oX_ 9HG)܅ ܙj~,+=OYէ=Lf9ٰgHnflEU팓s|'?o'8.4ɿo xC?| `qMgwD`W+ǿoaz55waٴ}&Qz;صMHi@޿qe-baJ8}!`@Li{"q! (nU0 ~ Vfg V2y'E8C.j,-ED- ׳txOC'mWXJ20r:ԍȾ:x% ~zY}C!CU-' P(U2)/#ŊypFlb;A{OmNfH2 9hk=}ܙY$޿g;Vh&p(1z8DA=:kyp:YYPsGVGo̬"_,}XC az>x!)j6F$pȆ l 0 ^٥sr(&q@>-F!X‹ 8ָx nz@^RU@@dFw5gt7{$䖋Ͼ,5B>b5 ^<@ JD/P\# >ן*E Af2Ay rO0vha7t9e,/;i@F$F*3t]ngpMY9[Pӕ5](?J,'dO!H_H/2v2I@Bhtv>&AbC  `FAQ޹5JJZsa"1_ӊL 3)3|~?\X4=?(n'tQ}hmhu>n+ Ё3#qyE*оC' ߆C/?ku3ƽwӀ&aOcJ{ c=}6NZ_k1o8ִ>_~SǺ//^j5^K@@DvI-aTD!0XVe( !j3-sO"\Ͽ=T3hOdzϷ~`}a/c!X*0?q,;Phh$O0vj7ٳ x xO_H?t> ߏ'ũȸ@1OO."Oj8[>s)&+7ESsS3͂F&gv!̕?o@?Y( ,#_2Y},7`%%W GV ep!)Qڭc',Eg(?? <J&@}O=[DѰhP$"i%>gQ&0v)U~I $/r:JS6oշAJӒv/~3rQ:w&[tYhQgpdsoP7@LsOm;a9|{HxOS' yns_2~|^O)Eeu&ȡHSӚg3 8E8P'*(w#J$=q4V)&<p^5c-39@-kvw1Eψ~7677o 4`r^@(v7C   @trrtC^4:v_r>7YB?\޾MS_Ta|iɖ7Nþ/ #oa(>ͩ9:}˗Ù'ܟO?'Nvja0/ N>h>x(Nn]|<`P_ J8O=  ض`n.G$Հ|0t` Pxwo^M5?'lpak:O I }osɝ-B7ĕvƪK nu݁Qgv7m *ArV]O2ȣM3AFgM%?,~гOR~ E#dyߛ̺<j@:9szT['+b@V<\|AC u>V]1ٷ _>~B'0l%*ڵ,Xo{C H/021(XH0` I @ڷ  }!) 0Gxg=8L^Mu_]9ghu?̞~˟` ⯷`לgpT0؜X6ޱ`g^V0oPQou'l93籠T&NK9)6΃l_ bl<㙡M&@?pؠ_*ߐ/ L+ !-,O! {{*Zl~{yD#TD!`V/`2'>s꭯@?5@r= (||SR -;X_ ?|%0ɕ|(oWeySCwɍ}43!Q(_قi ӭ1?涟~6'ܾ 1W~̊ЖB1W->·'ͥC%EK}bڌS ^Ġp3?agq&e =;uw/'hzf>̍77k>!xo3>r\k ,IeP.jHTo!z]$noan* sjsdx%.:jb)zNW%hMcI AX<ʄ qߩ( >l$>ҏUzG7 >Mm5@&촴b*eyS0"gK??^qCFx$]}-P)k./+'5!mlȞ;BU[z=ZlI(ޟǃ]bnV}9[DvgƆg)XVejʗMkLszg4緋|W`y Tgv> S_`m⽚ *ᢤ,Hq,چȢ(( ཈' ~#+ Y_S/7/ OggSLIo)e>@@A>C?R]TE^Mv8-!xGYOp79Pbxk>QNɘА<|9M}<8>sHj4Cy4=NCi7xfLAxi[߿Iڶe;dNpNU]N_Cf3gf^%GXQ49C6 ɿ؟gn.w|X@ӝ|w.fγ/B ,P`Ȇ `B {0(|wWD ~>Qcn$w[`@Ci;ָ-䙩 Nׅ[e2?W 1F*F?־[  ك"&gG QDP cIb\0\$>m<zbo63yrUAu'><^6y.2ڡt/n|Nz[0%.?>.^\a#;`@#dll@߫E@c_/-!_+b "»x5\ CjrSXi? ."L}ԓ S_5'&i[?? aw j 3MNݕ+sw0p%9:|9_!.<6q *}c3͵rjז6ըC;Yv{m'y]q5ve?.մn?y}h jzY"Q&>?`- H3p1W8ɬuvܬ.!FH^fs! k[?2e/iEvgǵ~󜚝sm^?f jKO;ӫ+|cL1e~QG[lYLS쇼 gg!ncM|M-vL.gpj@oi^?~8xp'}=cuV7M;W*Z{~߻l*>ttnXpds=sx})]Cך_ۯckϧ]b&ElbUm soOH<'[\# DcCݨn@fg}^}Q;b~Twߟak^9 !?<n#Q/+ᯮ8?_|ss;t0'?-&_|xnG^MZ'H6BET8ec `iP&ME .$b;=x}a_3=75:1 d'xJL ƉteL_x&JC^@K R>[Z@Aԭ2O׋ɥ°p'O4Ng:T{s@q\YgSͮԡ#_` Y<_:|fJmdٕϦ_<xx8Ps8?ߟ7bGGJ(=W|ȬݵO=rnT|+9x(⸒7v[泫}r(z`YNxjd}56JȔ 2RW/+@?f>X @?pq Nw n`ÚVp'BKn"\p| 0yI/x o~To5Oᢳh=JQTbfI]A)*! @.vۻ(ޣǮL:ߣ@Zw==N?Px?B?ncz{[\@;@uw~1R̟F0귘"! @mo' hro_m)×?#/h;/@?]<7TٵTVz"?+GJE@{mJN0B*j!! @^@KG[RHHMx@_2UmEr#;pJ2 e\w7?t75eOpGŞ, |Օ"0d!6 nv@9_0 p3 ނdsS 'j2b7 =!G-a￞! `3;6/XL'N(ׇ$vJ<͚  D=7 -M>~L^&=_jXz @ ԣL7`19XsNAᯥhCU'/[Ն *(w* %7{}R](,P$0 #U/+|Ä0ߧG6)}\mƂIk7 {?oi~X:i z=Iޔ(쏢txw% {9||3}#0DCoAb~ unpcPw Ӈ֭oVDO“Q,:.SGOtv}ҵ@7GQ@,s_O;u|d:aTn\TLp@@ϛܯ O? Cw6JD˿}豼`@zy_F@{`)>:Sq4 đp8%5phc.K%{X Gpc4/]oK>{o9w𾄻C_4r`%@5z?"SgQDPԏLO}eϪ[:jjFk^4M\@+Wd3Xq'y:ǿ`YWf!ɯ zǂxry8'uL^z,N8wW@!_%x>L#,HF#uY X$fN9 3*PUd|e>QU>B|0 *{1XBXE?  6+xumS}BC; ~6 Bԛ#.e5pw :6W%D1sji;~}G[18'f }$KgN?^NDxu ]TU:U_V>@}sfKq]y܏s*uJ#6Cgs2D^jgrv>Yyv] Y8l68?] ɲ*Pi z=n޶, * T,&E.[>=|>|{";w Ҥm8;KQTS=I In.mσ]}MXj?كP(\s^+=]"0jWy4M;ytL"'خ5-Qzٲ2) ӧ4ޝxx`u|toߧɫ@A<CPd(@ =PY1ܯI1G[Yi9d Q$_ <O@}}g7`v̂hZHu՟ PQw|  ~W0`m(_x5Ba~!- R1-1wcЁ^MvVL 0;}.n $GlGyFۡ"L$bƹiβ1&*!&vS%o5_?mF?@JG@Yڨ,[X]&Qn`Y{i>|Ӱy>;&z)@wC.zi8a^)k-: @? 0? Ic`髋G4aC60`gv T=R'O "BKAG|$#,5}hm;bvlSp(? mt vi>|/whh׶G͡ j~fsCp*4%*&lBhV1@/թr,(<?S[yP1@'~ɍtO&'`A嶒vz2;?'1# RHD\VޛLȁ@k}4RiEb6ާ7;,l7t;iW>=2L}m]8!՛)(Ou}zce埄Z+Ys oWqo'&^qͨ&7 S@m75zx277 tצ*=y/ Io X H(=RR> ; 22|Tި5vA. ^ˮd&\~kp>oꏝ[?t>"~ӳJFJN;*n<]m=_֕GJW}N`&C _,uNT>9.Y9k? Gױ c3cj.ޟhs @W  C5E6}3Gi (xS3Toݹ@Aowq+?XcZhza+,/ o6@cTG4@hp;{|Y,ܮ95]4 ě_%~0F\GKWcnF[p=7YPV}B jtw^@dU7T>sY|Nr8|ä|~9@ìtR!57xQ9UU!ѹt|ndUxLtrAo },_憎_@@c=&`K@P\`a@2` !Qf#i`$B`F߫.fS[@pJr;45\b2`ܓzڇm9XC'k|XG m_C ]J6gt\zrVl:^͕Q ˾|WB/ؿ{d4Gsz}eSºY{e45s)ܜN>.&}vsNm=>*s׷+/H}{AEoF0++n ,$l rdFX9,4Q``ÄO @'+- 8운EB0TnGzmHB-ZoЃxlE'&D2[nD1nd]aes~}}xt;:[g>5宔% H|//dF8bnWEFc}^hw\"~˄lTDC~N&|U<-n<4s9~ ӀU4/ o`,E0A"Ь{ߺHe$}7O?a-7B<hc$bY[ HM"]H]ˮNBp[e3|4PcYt"_YxHq.&l r7y'U!**bR{x4|oyitJU?aWsứE;9{sUR.ytAojaS`n}@UZӇya݁uLugwc!3#_`` R`r1<<" ;*DD?!afl6ח^T;u9c T莺}WZ7LžKZmt$J-ND,Z./ɇ>OTp^[eͷzNLy)U9W4'O mdFuX][\FLV;yN1o%Ӝoz[2!$tJm 1w$R _:AV4Cr")^?7 NndNuAvi|~?_sQŝҷNs\PCϏ³5)yٖ  L.Ձâdrz\yiw޹ǭ}:շ9._'>AoI/E7-  d:ek{sby_cPc@< `?'ebէW^.r}ߌG-Ip^ Q^% qyݶvQ}-qno~}젢#g^{]nY~n=t~vyOJD>~埿gUE:Z7)J)-,R$Aoy&#*"c>"`'c8X`Oͱ.hnWCÁ\.6"r?28W.VUo.dzOJJ4Q\?)g&b3!CjMn *QOCsi(8-#(Tvfy ~'NyޭC_mk+z+uoeV]iv,WݛWXvfD.wM+0>_=j_XR,> *b'LOFPQ DUeeICeW*y0l*+Djv6-OZ-Ǐ|妮iyzn? %q5f豤@^@~ W8|2:5A,n_yN]E/.@ Ew]t 00:^<i0>Nl}Y)%(P O8̮ʹWʲ=_,$zŻ,tq_9/utnGr  swU7]ĩWSnhڥyU:IcglG>I0 R~Ӌz8 T j|}X1g*P~үp+*b@vQ@ c$y-OggS"LIq`vxYa]i^sRZ[f:m<+FԽ^ʢWL AY;2_;]3Fk% U~]t B[`|X3;S7 Oہ; %E?4 ?pwI.kxI>0=39 s?^%_?'(t²d0 Li91oup0 dpc(3-bPB&Ķ s6Lyp!app혞 BS5 kv{}h_[)_6#S ֊WQ`>=>-[ӏOR ] Dpn7÷3|~ `Cgs1pT]F ] ds.D 1LԄO ²+~x0(9O֏=S&]D |G߀$o_1_ `B I X~(da>=s?E0߅Lʋ Ŀv%d?Vi x}d?1 Y}9U=\(i)79rs/X) MJGjf+ް#M9rWqHmL2$?SSo(& ڡ:9z+ &e'[/ pa % p UE0 U ~5*C 靕KEx-e~/%SwP o?a`4.8L.8>U1BH] kJ9'g I -[n;z|.C t-yqaL_{B*"/he1h^>nWl̆;$[=X]~e0+#K{6_]30. Kqg~0@C\F,UP6dAPujuD s>>U?e1@ oB3_l`cAw! QE{|tҪI) ۸4C׊: zczR;5y_q} `}=T0V cv3'^k_`?x~a&Oޜ-t/kd<@Z|=rF] @?t'xC> ፧AdmeJd Ad<7'3̻);~Br@ nW*~ ; 𵢪W" o@R&AXq  @3B=[V)'e)bZ7xN[G@b_^> p zHs;uQ*!"@뀟0w9.,V3 !x3@{RW{3O3?V췭nqp! :l^ ,kV?'>An@1$P OMyOCy&?E.GWrP|b[P ͈<磩C]hh4uh.h~Ro6$WdlOw& ? =|w6)A )gKtpZ+G{hN,A1/h,֎<tKhӭt R@&2j`돻ZW==O%>Ü-nݽBqrS24ڬWhÚ}ך8]_-e'_'mϰ@- k jD7ݏ?@4096@܆,ȝяA''H0pBlh `L ӵ ~3 [ 9|́gm6*INIQw'^CK`z.볮&f ;|} 'h;XKu5 ~`鄅JLMWc+s+Q8x_?q/UhvD᚜ՍAFsG1pUt R^nA&VkIIoǀyG*@N.h`AfHJ`OCh@)e-|<~'P !orn1J*/\ù&9pz,v@fOtKDBn),3@a@ m-% TR Y0/q 2l^^@G/<@.j'm_EDxPǗ uQvΞdUFtv[?]f& }c)IRŻӕuV#!{D&8|#2_Fw:#x Miv*@@!00ﻠp ͽV`03$ܟ>TW8~ ;QbxeH r */%@xL+OggSVLIri+=S\G]kJV@UR_Jv3fjv޹5lq)8 /snK%8Ƞj@H9^ ?ճ*>P+ 'x 9>S ТD"wN^ ,w`~ xU9~~l xBݤ8=zRxtҒ;3`BSI6 *2=9ٝ] ۴(uaP~N$vdixi@ -=3Zf*q~oεX]4ɵ>m_9 ѩ xWoXr`*PlJyͷ ,ixz L|s3a+՜ZZ:L?+g;03t5EߊW)Yz|/@&ze9">M ?QUߌB6@E$ꃨ`b .'Ӱ? Nީ-=()0ꝉgMDpzr :Cn<,ys`>~8kF(]KpMlV$* i{jv-g~xY>  PP_ X2oZ?;(շ @ymKC 33V%/C>%wZ>5/O_"@U-1]=BbjC]BC8Ӵ&b{E2hbP Pwak8 ȧ#l h! `2`T3H =|2&Q8 lȞܣleW0ݝ6%m y~94܇/؃_H^Q'V?3un~iҗ^ r:9_ 5X@2d2 }iQxLaBϞ&D| P4]^imܵE$;G+L8ޚֺJk%w= N!p}|d5U$aǎ[x"~i5}w%Ia6<ȓU3m?j^!2&d~wƥTyf&GƦ"I-CDV@cǬ DJw8y8"_ [}9VT*b齌vJ${=/ݟY`3d-oKKMڌz!p=x7.p &ޥS}4'[75 $ݛ~TΆ"(V,o@fC/f~gf9yfm0]^xNe@vp8@@@um2/]y^a`$`|)>=X3*2&@/n~2 ـ|Y^Ym$h|nWqha= 󁌺U֘{u;x_k?%4 ~Ne|F*D \>\3}`V7@)MۗBM%gPLɅ\&-9/Ulg JU -?K b~XY P/(`Xߙ;U'JvٰPQ:'qlt_fD|d )g 0@%^s%`3P1t=\oW( g1@{y%Kpl`A`~)`X@@6Z7 >YHY@;ۉZ'uw[ui{ 06G Ĺ(f%TB4D@Mǀ6:U~|e @ɫL9Tg|lˤib߱`ޢD E}SZ Er+]矽]cfPw8PY iyQ}Y)60_=mC P'</Tk d8X+ه]i)BaYZ S)P@5^(eMq[.O<@ͫ*>ܑΨ\̮Bu0'3law,W/@,0N->Q]1+A{qX7kL/C@ΐ}+.aE X`kc1ٯ,7l%h|sWR2{Q~\ۻ wt8oIC rYzٽ7(y."O*\|Šep\^fzw P.|x߁:9%Р! |e5_+2 a!P&)>[@A;,OggSLIs*bab)-XI 2.hilA%y /+W  mco"? d 5K]_[>\oR_p7l`*sJwT\q[ᤀ7h-3aM^5fF'' ^߼^&$.swan レaP=ʏNBF9IXu@Iӥ ~Թa=>Mכ\;Qתbr5 듙u0Nw14}  *yK^]OE4z+*zI/F@PPQ}/3!0og~9]6=b2kUՄ8[=N~sT>3i6Z$uS> yfoZ~r[Ȗ2 0· @}K:g׉1@Xҷ ]~UzV?I܋eGZq5E\lJP':@{Ρ$78g]DN K?Ij^&fW_-NxoO_O5QLbWgi\C1?/y}pR"o/7_Z8n}:a7L[@QZQ^}-wKY(D - 0/#H***0MCT}7?/@p@)h@w )t-Ziv(yXg~/i@cyN^x0`~o v|o0.!g'y*=`JpA 4-?#l{u]6Jy|TO=L^4FZrϭaF߼@W]馡?mL0vyX@c9d/M9@/~,G3T@-?Yz AR`" l څДDID"wa@H61CT>S.#}, !, DP> ,L3ڝ&!NC7he o?|81*`%~| <8Ko`ʏ9xBPaMlsPķA]8e>dsvu=vtrX[@ڿ{X> <auݻ7*"?Sq0uC wڝ%. R۽mB )#RW~`~b* ?O1Qn?K4 ?Ե}mGO.nf_NVnȓCwFN  (P \{ НJ&I5r|rf-Y%@AvwӵZo=QjdtfJ)>dQQ@5E~V/WeQ\ Gls34=O3Ckr:/ 8>;0Ծv|!L; Ȣ .6T|{`?}۳`P9лM>.D(G@?@S-+"P?RlV| pc|4v~.EOJ>М*sL"فFH޶X_` Ԫ3BVG/B?N7K͆_Pz˵d9N5Z`ٻo{5]<A68+@z^_ΩJ!G~@Oo0߾Xĸܵ#^4 LO@o?C/t:+ǂ߁[ 0c`dm+6_2ʿa-^ ˁn*@pKW]ci6ЃM%D搥|hb0QO^y5ط}M i m)- ܶ-{$ŏI7# @+ӹPm{-=НaYeXPQD8SN0 ;2Pa7 ~ pFECqpn«W"Z;DP;WG:&0 -Hhs gNA"}e\k|/p=".:|ҎD0 xeМ4t k gއڊr@h7o*5MA%RmC<`f,w#p| +tO6 ё#dY~ɍ`[ Mݛf(ɤoottߪV{ʜ(A$*zࡻ8eoC`m3]^L4M S&4z~pOqC.D|(*7V/ssk' PS tc˟wn/3U>,#C  C'nۧax ~,m}ˡy@@łkMJ Vw/\M}ō{ep\EU6]o=Zk _L@0d;5 {zsp>])*M紑c`WLqܯZPīi(^f`|/'9n1{]H `#(kQ^@-v`Id@lk ~I\5cK=/]cN%A Sǩˤ pmY05g_0҅.[M;~ ؝g[vVzO9׊ٻ`IY. Q@6X3=4Pflj9gq\^i\ +X = (oHis+}МT_@p__7aKf qIv6D@UDl<yhVi0L4 e,$ txX:~rClOggSLIt2dUirw>7INMU^YR uMȼN2; "{_ ջܷٚPv;G{=ts^g'\}y Ž_1ƴ`YTAW$L dܤj=hQ>-׏9ąj$uMC 8uo" ȼi{֚<8t`@\Mncg0Sfib0QpxBRMyrC |f`a昬5^;d콑  j@4.@Q9#(J [2{`6-_ ?A{݉5Jr:+ܖjaa޺vCQjl^saK÷1t蜓.. ]sag-_e=sZogqޕtNd`iIM㜣>•(vF!uY7nUɱL3/z5&1@"%t??T ';>HJ@v/+p:$7sljBl1 %@y%. ` 8|# ۝I[ D"BK[@@`,b% \)C"2 < &ovMs~)<Ytum 2c?_5|wlgw,.8cwIT̀^c:9«~OrKm4(2"xx`t9e}0M Ppů+'OOfvwj;9E`xS_D1'w,eѧ\shl"z9uXL?,̚q|4$5L@Pء͹ 0 ؁ͦ W&bGW^lhtNqb&>~FN ag03?֙1;u#Ʒn{J⯟tnmf"ؗvc԰`*f\n1/nzb\OWtICgS%^,/ȭwSȪ- ǡŸ\ CT>~Z{ [-0Wϝ,urdzwoкy$뗗A SM9e0{ZTL o6aP[?[ȃ?^#X0^1{kgDUWn L"@ xIpJlc Xm@_Za t.L$K,Z<7v B{9iTF7 %.K $_/F].AuU_c;[:j >nG~UI6.s&9w=70}j*LT7P7G)]f 5U$di z@'67*v}-@ `r܅D7~cuCa7kCPDe ,+ u> rnh˛ f,tH{m4X(f<^hȁ4 >i{ܸ L~ =˿ZRiUJTX{ }Y|) }?H0E'

    ;k՞iPX~Ѐ9XB qJj!L6OG`205k\tTAa*-P ( `, #.E^m෻ 0 "?dZ<PWsjcw4HN|vh(B# }QD7Wv]Y&Ϗ2?M5[ wC=ɠW)觮v[WT4[[9!zbڮ\^S|0s0/Ǩ/:7gZ|gkj U]i0/eyD%c|Yx]cspfzq+rl> Ɨp[u+ޭ)vn V-?4vE~`/ߏsؚ`P?;w<8vsW;-& 駚# S4`2?f fPPQ}gLPϝt E#?LΣ_}^R-{}|ipzKh_v4~HJ87#<Ԋfd ݳwVaמ-#홭HzgFkzd7O+A [Ǐ}h;m*5xH:x{HlK_:-9~&I]A0tOh,oi|7CˢX,؃8s8/߇Tð֩LL)lJP9#Lb.?:sNz˴ Ӆ5@T$\%zV^FUU!@X8x~,Ge_ݕ>^?awK֦Ƿ[y;Q>-ܙʚMJO귣3!gl*R8w/Ed\8~]u5˾xҠGzc p=w#| xTN h95wf) ؼ H%a_=># "2+ ~' 0a 5ƶQF~r؝=IZio>M[!8xp݊lZ(2wBfk(]U5d쌓ie@4P̙P:l mlk/*@ yw(Mye|Ap&@ǔ+@߅OggSLIu|)oAffOBZQ>-fYt\#T SAη^Y#'~8|a3?G@%87ikgԟ @dgZ!k"g ]kz5@zs%,gx za_} ^gׯq 0èDo&LO4@ ~TWa0wÙ@ߥGQP@cg:|-*bcĂQi7;Ku/=vϾ9J_.RZSd8׳],Q^nRSv1qeia@Pa vTy6@@yQ6Vl'ds5Pԅv~ 2nl@.[ UTFaJj|4w6@)@^~ڭcy&{ߙ{Ɠ$i_x)Q |Cw~wآEW[vQQ{o׃0ƹ2_ nf}4ܟgJ+$B6>xBMs&lK+a9&̺sv\grC}c5j!M֚=;`9 pQ5̹34 ֌յk]n~P:>J)@`t?g (y {1P4|i ΦYLhSBpɍHiz+dSYvX8w״5Ϡ2G$5깜@>;>a-HS-4hQT@`[ yr1?~@t( ` G]U,@پ^[s% pw<&7U?㼲{zг#|e2 پs5yT6Ona!r@y3W89Ϡ240=F_Z @-T@G%0wlKO5Al,9\zϟG*tg;p "@`w( y=  pЃD+>ʝ='0#l3]{Q&t*'?!#/polxC&opA"A p~\T~OxX\`( = |8FݡJ%Qbm)N;GoEDMГWL#G/Zzt=1?,lϾ6 sH)tJ_ (vw*pN V47d;mF:@|Q)+.q9y|r.dK\u_-W 41Xhџv 8ۮ--;\a)<R.[2ZϏ:r`;$$X T^O߃+@X}_'qria@@u,h q$%@NP|Gd~,XC^m-63qT2#w;8BzpB}D@ 0=V @<>/v^&ڳPϊ\犊sArC1E9z3h"9/Sg2q ph D1NVHi7Po_@?u?w,g-P|@sO?qB':N`2y@1B6 8!O)n,c-l#) H wlYK NVqmʽKlgOn6"sWOX~Ͽ,k@ >+/ A[1@E#g"%a䂿\03އ~U(y= g4Yh|Ìᰫ`8xWY7 *LZI0i(ɓoηN@* `_1M?hGf'X>  I]TN8 a8| 0 t>i' LfzQn}6 d~U'?ze3h8>ng?  /*U,GNobjR~+mvV)_:s:ٴ [ ^o|:<<>T\a `yYNr4jVb&pˣ 'fpOG}=uAkA &&~E_u V:01 P?qc#,d@!;CPWF@RtʰM>@G^hQݴTJLR[[У*U2|m?1@ }<|`}3`N~ToXXm&P--!B3z.ci8Pǁp:Wl kTb)r@>'&Ԃ[ P((.G͏ϲ  IjDd욡4 h Ud4LvX:NGk+O.mp/H,+ 蹳Qb-ȂF}s +ǹ2qϟ 6K35#!@NG @#4@U%QUoo$z2|Js4OggS LIv`UOWA\RKAOfwzh֙bG iĖLp\5/֏a5cϗ.?=KuwI @_'~fSkp D-1~ud_vs0x@ił@yłO 5 KmEpa󮔏N Z(PWq7l=$'/x3aPzUL@x/kFYͥ/p) `3ӼФ? /K 1J8@@EG`?4w'@>? *I=~^ l}#@>h3ͨuA#6۔&ǀvoWsE `=s]W_܀0@MvPhP( b|ȟt['{h-2FgS@7F ]A*>-+#o y}n&]z&o9ry! Eÿ\@N7 jw$@14HR\i:sl~4CLP@(n5U`3L1EFOX`8%mhYe@6(8e >6Xu,5ҵ,? 4KG/Z~xq)a8eyVNW4V0yQr 1m֭Ľi:x@ΗM!}ʨ˸zQ| hk[s#is :5+ f*ȝ;P_Y b$/ 0G1|(~"@uOμU$5+A!g"%2f77Y?|^ QS?єO|. m /KuS L|x  uZbًZ8\n=h&'h~/~}v19?1`}ל5@я9RV$w@9+^on%Kl!pT2@!gгRuuG?'u(ihdyST3橙I*X|?˭PgrYԩ {vh'cjݟrc|]>03dGs t{)YzZhf-t7p>tJ,Nҟҗ!-Y@tiZ E@xܽUƱDjh'Uqg=}3m=ϭjf5vQvq6=R}3ϯOvR+r-;e[II:=2y{cۋ(>\&S0Qd. WB ûvo|FD{'70XCf^k.5~^Upp0:VssNy. ī|gzhw+~Kٝ /? h>`B] . `YSW3 h-A[5Eɛ&LUyq@` @|n}8 $RrU1PP|oSOS0mx/RΙ{q>dÆʙZe@F|~\c _3O {'/9 X\n~oWҽiM +Tz_^&<5OМXP͙0-9`/7g5pBpi,FxAe<ǻZvn@\Q!$Rc`zrugd.{y ?Do\#]bӿS-o*m{͔ I>NīzRDwւ&K>AmtU-4áZ O?[ g*@@gA} Y0j1 8m4&7-&7M<>smY./y|\|~OD.rs^"Js`/ K6d@ $b@_~/qL[y P0@־!Oڽ485(KưGS,olƢ:B~k`#>icQy􁼸c=9x8Mb1,I^MG3 o|zuu2Bi5Ef3]fِDʄ•~>Zfx E]op8߾< g?GV3Bt7y>@ sTE.{nH J7"?ў_x ?qWi'X+Y^@_v2Fkk=kV $j.'F@PHHGJ>Jtx$-I y/ Xd`n!+`B,HdOggS9LIw9r`}fz(29 85pkmX)V;_ÁfzdoE[m9>X׸ݼiծcRih3{%ZqG0c#8I.b{Zy<:Ȁv7Os8Sm;{炦uqߔE539<2~T^s5K3Ӟ~TU+Lgtz É U޻^. D@ n *] heh޵W _da2 @b߰ Y1N^8uh r4TNXkҟx.Xc9舶ȇ1mS6> ce!d ogꔾ꾨7NqۂgfJNszs|nA9|InjX=~kMotQ$I?O~c8#u!9 87 k#sˣ4]sФ~y9:/s%7P$&ȯ߿a: (pM5;,#Ȁ[!|)Ԧ)2i*`c2 I 9_85ղa@ $1YZeG&tќBZ˲ƹ`u`}U3~E A1KH66YVIU(`W nNoa[>鼡N>3Uh;s)\s45kcR|=;hO9͞x4@줚}? ɚCU29Z/2V΋$_~yoij+2 .K_  qswH9 PE73GE Q*z"֒JO_ƿP@D""~1Ow][X0ǂ Jq`@~a x9_`s~ P\+ۨuo7r 0jvW&Y>J;e`P6c:VveSǏYg=5NM\E^ݟ{;7!uVN zgrE\re$Cܞh%N3x:M Jy=ZW˱>,a'4svfxwQ ?\\̚5ɬ@ejk&t/w_T =kt]l`1Tx%"GT8x $l,X|[ ,z#*AޣFa@` ex:l:BL&WzaFyl͢Q@ CZT5W,~ z*= |b)٣W1t,9OQ^n,GlhM0C]KCbeֺwV%@/(@?'; $={@L.;4ej^oUwǁ 9"v~%ó.k2frJ>\WBpoD@#ߓF'{,a#`[kU d20zC@@2P`H5৪D 4=Y-~`>:zR'b^^ 0YM“EM|zo溍G*<+=S-Kz]Jn&Sd(sa#&]ȇ\%9My; o]׬UoUaϚe)nԌs>;;kQǂԿyܩ\_?M>tOO`7ױ. ufNVHo]=\\0 `8@Q}_Z;4r@T+ :Y,D}`uG϶`RQQQHX O@nH,gLmfqә6AF r}>/7. AͽGL .YVjt-έx&ŽED ս5{>MLN=W0kG'O`v5io. qG"<ذyg#8ɇ㲯R1o{P_7pI,p".I,h|S$v2W0`̼ۧ Pft} "O?φs}v l`,`Yd soF1F>^OkA5I ["H4UTuDxá8rvz$|FG/.G:kU}._;_#8XޚN+β]/':|'ߕAbNk/RMNY{h}+uMt sk}T }!}ӕˋLw8fk=C_C6HCIT3S{<ο>lql9u*ϫ2X$e,ҾGU@L 6(D"`+ SG  PDIH%P~-!$p~eigjJj03}] 4./ըm ~Vjթ= ԍ9qBGֲ(붶+S2[Gj~- T:Ρ:'_7h?6Wst=kab:jc|xy='#u:E^{v4G;Eˠff皷ijAkX?}ɽ <{S0?g$+`@6o l,o@V `, AXe$!@': @t/H6@:Bxs;?M\=("~yĚhyM`N簙 )"5cu98mh]@XvOq97oai(z(SUkL+*&S:ӏfrxyrYa!5߇gE+*: !{C`{}uy]m_QI7OYGqp)~eQ㺭?^L'rP4_d6\r n+z eUِKav$ͮԹycy M=@,[p6٭ F@f/Wla,H@T>W$W% aL^:-|į(cy~^(}g~ߏ:oc;uX?2!WEl#\]b) y*/^gލgyw"L>Vfe,K<d͢j?ro$9wT"dX&5G:џCp:D^(Lϯ**ǹiŴuCQs9 x<_ m02l'v # 7Y^pN?[fS c[v%$!ӛ *juxMr"t:.8NhU5īm#_"2>-Kѭtw :w=4wQ#6l?jO:- j>6iȫao%ȐbCԩ`SSKkP|Ooo:&1k 0L\u,20~Xyy2Q>=b`'æ*HR؋%d $X`bʽ>6>6` 15܈!M3~} -3b:a2Jݒ^sΚs;E;-v5./b[;o6vz]8=|JsaAOur=k9ۗKE&AO%WI*Y/5Wr~\z<#׌uH&rTs.>:9S˵'{u+_LHTLqjQUCViH(\ YW겞;go~_ވ] Ÿ@yr} >jцw=2[X7B2  CB h#`,ݽy1j Ps#ZmQ4X  ǵ0A8(yFow6fy2,w3V{q%2$v!w+޻wɂ{$Ùt éO8k+_ƟHΙo B_G_5'!}}dBׯԯ橦e >^M >u7^fD$ $;N߬aAQ@rG 5/:(Xzv\~ۡI WUQf=TpYzLD ]yET|"0$`f!m`Ln(2F~,l by/fL%)V47#B7qY7wKTkV mK 6_.CþZ#<Vio^1epF^qr^Yy"Of!OtyBaËy&ZL\_q3srGH$dR*j)]/n9R߯^έ' 8z=]{a>&Eh >{g9$y:5{ xd蘸k" (@0|,?e[ 돺-J#E6@h`[8Kw .6}/]߁QP  tGYv'-FwL%h"@%ߏ99s?іH)o,@ohx5j/S%\39C$ʫ6h~༧#Lr"Ա[p;yrKs(e;j_\/I2w_n=Y낡Kc~*>(_RV2ty}.z5?OZ//9_^c_l|V0G5şjQ{3_-EO3upl+U}YyX*Ëy* Ȗ`%5V' 6_ƌN;:B 0>%{4F@c Q5=* 锰SG͈{Y 7@˙3dgBKU@'!}2Sr*닎oX]b-7o5?WԽ}SU3;뜮sΨt߻nsȭ{|_"5 _\ XO?y|1r{g(Լ]lh~6sű x?H-i^HehV@1n,_[ @uPQAѿL""OId9Y 6>s틚E?l?0\"C1#}4sn;TQjlX!B߃U|isC,脊[IV, YA" LJ䧓f;#ic^nc~y`KAC 3D6Y46Ykf8 xK{\?XG~|?g,icubCT.)%'H9"O۟3 0ی6_=__xpr>8^5$z-'~l>Q&eH[=~ݽw'͏ I:8[D/LEzɵ+/-KrUPv}yO?82{0Sc|\eF)@ r.{Ѓ}Ƭ1&8dx0ju0J=, އu"ABi;-[T`M L$^KGkm%I/:E5ArL`z8ֻ\bUC*!G+!S2l&U/սC6EY xjq)-:蟧`&^@#`%_Vf&`Bό'O|MśA2 (#B0;ŵՒO@B]`@H e2 VY%@FxOggSLIy(OK=nm[egptMl] ""_eT~F&Ő8{[{?{|5KpU^*57WvEm`{D5٬K)6rx|}N;w{:d`AIn]vww>5zM<Ǧ@Y`3l^ \08Fp4>>k**o@ yx^i`y'"}imPTg@ @@{_/-YW].b(3W)-A>5ߕi\Ɋ;}Tdƞ= gf shcr~ (Q1x=Oۿ:vA+WmT?+y؉ܟ~iE3<:_Eg-^?IڙƲ3H -8ky|p(ف,(@ >L㕹Yk;ȵ#oΜz9/H~_ҽl^IT : é8YCHx.ڰI:}'oB08 K$Pj/ Qv X`}K!cw -TX7 -Z;4QriRMKxG_ [?N~Ko? hsUV[3a얩˳xѝ՗Zyrozsp%s xO^o'Sj m /'塎|>lNu;+@ti!af[=fI)$b׼SmO=,9qV= &I[@>jx tSjwzׇҹ0'4c`Z,oHشʷ?| Gimd-Jx VK B$0|h01]5ҴɩͶap_>>o[6M @{c$6 \${<E{x*|{6g>>~'E]{Ļ?S+Gs&ќh3drҦSY^}EsvÕ x93̚z2YYT>^ors609㹼$T {}Ȫ$B0:8,d0˔oLΫ ޼ @_~s 6XvKiO~ Fp}<`h5>^lkN~&']bO/7ۨ~TUQ%p2x!^JϲCUP)͈5ݝ],:nM"|ɽ_Bb%~n 8N g~g5'YMuHʠa2c+n0VZj3g]orRr8gԕAG{IvG`h>cOQ!u:85ӦřF7,mK06 W/o Y6&# ڣEyWE ^:s̵(1ʭl{,$n{G庁>V[ح{V NDŽN-m^#s9GHejF]Γbd՚ثf9Cqp6l%i;VCjv3Y0?_.#h3UU? f}#Ȫ*^51I?ٵ9^M?|*9@L[03pwjQ<3>0w(Yc?jJ\*rRu@+I^ {^SޅX8:x |Gc0^-xL64Rt;kպCDAP|z|IC_nK |׹՘{aK ^W7 ]Ł"@r 鬽Q^l6Hv3I!`ms08x@n녥U=U̟ :ӗ׷:o? 00I+9N,&YeޙȂϯs3U쪼|0Z_" ?6 (Cd [!W4fS<45t;>XDeɳL8~9ӏ/khn.ʜZ8S&?cb>7$znD_)y5f[NmKb'L/MC٫xfgH _ ~QEV5X-7@o .=5 vo#6jL &Mo=})ɕJ(JnB'3ao(gTeݙYi߃x܇r \W\ (X@fnybG4y<dQ瓋)uO$uo=`-Xsh.ܻZK|liYN< @28I }?2we% `cY O Cmme@|X2'@~:mlOk썵YKPcpqye:* wgAR=‚]k޹d;ۻ{Ngr)C:>=_\3Qrj9]_C`_aKv׾ X 70gR ,?al G3 O6H̞4G3A9` ~JmlɍM&mz061DalFh .a}f|(\ɺQ}KqK~:o_Lzpڜ`O6>m$N߉H<>mH;8}6ނ8/_)"7^3 1i -D/5ҥi_v5>i;qK,jZ2WYj 2?;2i ޭbnewFo P-}=Z}Cן!c W do"x@WUJ@l (@w@ / ,OggSLIz}5k`OvsaWaDO>YlZ-gbHF}yHr~3-۞]C4/'n5RM*h0ji-vWH0Igy:3z~MC XmӇU8evUylW hPqc0n_*Q$$W+] ;IOVQ-AWCkL֦U&͞ܧC:zy_[csLUPgJ=d]Q誨χBid?M $ 2Ǐh3ɇ(TXW*  ղAYVd? ${:^1BdUS,Yxz?4;u 9y2@32k5/n!]#Z3S\gˢžwsCǾCt/Ў2OOLT_lcdЗ)jߡ&O8>>c̄n0#i( t_Io+y'u_]b uY5䓼_9y\:Nܣ?gs@{r{2Y@n88 f8ųګEP,do`0Pe)p%JO@*)0iV$d, >jLnPzMhݤ<۵{Enjz P tSM1T g]t&tV$aF,..ģkz. M\Y@.?_uS X@!=Y_9|- ԑd&03%%7ܝ"]n/nH -@dI߇aj|Ux-V91 5oX!a~dCMh z#6Z!EzRթS ^ay%p_z>M-Aj) =/;~XV}n;SځU7Ӳ؝?il @ͫ3"=-U@K۶P@~v9:ߋt?-h4@z0gM'lH?ێqrlݔ 45qOAhʗ.>74_벷˩*}u9@pY #|~ ~I=gƁ7搙U"^;"3;~= K4cPW_F.:\SNGpW=|mYv@2(}r&k>OqNކ j'#^~u1ms!y&% tБL.a/ljx Wі5dz8qj53z?(s;" W?g Plm|83$ ` "n[W@~H|@!Kq87bڰhty>Y4vj^Ȇ 6.I_ž.< ?o`ـ)¡\CֶiT* a :”tvDM7K< sa!CacR q́P2~̬ӎ;-Lܞ[w`d3?>w΂EDԠPtƾ;^$c4Fj= 2/4U{R{k `^D[w0tWjyASo^T%@xG s9,6P<:`.~+?s3<( <)=Dž~i&V~d@U`ij( @ 0h6$ &&"8:ծ' Shԫ-f -v><Ǣ.L=fbHPiexr<3Ýlnkf_νoj {j(Oy^6d`:N,-4n} xO&{+9Bf.C35@!tkTCZYOp]s+~]uj䰷uΩ/@},F0ePԇc+7<0@!$0 pؾ| f2 !W7@+,vn,%` +6޹6kZCQ*M۫еE rb*-UՇ7K / uHbBFI@f+wwM=G˟57xd/-aSuV q& Ϗ/x[_f5^ll5 ٖH].yeo=&_b yB4՟2xw"kGE}iƏ0˟.'wq?\Qeuoc/Utn3_Ukl`tzw Ϫ&zu@,7}~ v!!j;6g.X`jc `@%g,/ pg'`gZ 28K pzw:iIr=9o$"#Ǎ~˜󸍦i~ߓNg+{|VUEi0峆,ӭ5ɹq_wf@~gz_r8k|}c-_yN2?i4YH/ry~_%s5U@01tg`&|Kk}A枟_?y#Z!䵝CNUP9Áw~;Yn@ٝLomBB?|U,|4:l\ )7!~!> 01-M*b {|ux_Ʌ'=cO*6rۓmAq.?tf8 r^9d$nB_iѷKwҠx_}T]z2K~3CD jizy2 }! shԫ/h,6+\{"+aϧ8y&kݝK' ;CE `1,ؘ^N`y 'U8E\_X I 4~0Ѫ <|"p05@(XOggSLI{p{8Wsk;<@;?=NGcm~eUpzYՈv,lh|B{ckؠRH &JԾ|mLCzymf3in98ݤj^`34P\ˌ?mKb0_ ̷4 : ׬Gf}@JސgI>33mkfdan EY9 13@O,*wre&x#/lB@-0AFڠ*Ā>H`,*(h<z&(8r =4zj]ZvmX$NtI&g>5xjz_s1FN5g,ƂF} 6JD= ;e&H;xhr'cf3ԑy}W=LA~#~c`.4O5Z=fNMAk[E|U~*zA P{]+1kRo\'W#_Z+b1PSYf1\I`]yKV_@|Gd@U ETF| @]Rg{JAv3XD hf+CH7>uѺaNX# A$N=ri4y-E!Z܁`r fP/|ۼ{ eeܞ6YNJ Pzt8,aurS[@mǪ# Y|%l uɯXydj8m Fn>1q&43~"i;lz~A{yg'=?ԶGisl`IK|;ȏ4:@ ,AP$-Z@0w@*+#ȷ78\{y6j&N+]?;~^B6/ZgP,WfsѨE_دqϞ|2g}bzӇ;uiAiC%":Eh j Qg5W /ޕ_Wt!! P:\kTl(<8iڜԣv5_WWɝϯ2<(>+_xkPV ~}9e*(U6$Nv`-m`Fi@,- )HnE@GX)"^hX"*a,C`@6Q>3VytOt09S`pV 5G' c%ysggm8p:ئKO7y}k*k: 3u=S+`ܞ7qԜ@%uCgX! Կ Rɝulf&-ADIp߯*(]E/˒uRqLt4Sx s#\4xcl7vAm!,M+*==YA1(;\? )Nua4qZ%9qT0ߝgxsv9~)jEGR@+Jm ͥQsvjM`?|?{= qWbf;OhˡOx z / V <7O/ݓ \c0 %PD?Zm 3O`>ANƯ=PesLr׺YYoSϹ0>'4BDݡS-_N5 TN| e]}hYbA\}|9ƫjsFy}xfa-rbe`CUϗ>:poOgQ.ae+I/^L[N7L~ǻmsck۞|XPq8mEI?}Y}x Sя- u€g'pF۞0<35E4k^{5]W(R籿]`9;ҟOho' 52zAј 7.Cs+VXyy~H9l8 _R,o&bT6+F̽\d ʞO|6@WYkw~mJKֺW@辫z&g{~ڀϻ3߾ڦT93m$*" E%ܠZZC} ;wn?eWYS:ݑ[]?'p!`?rW~ou!tl=~ 0*;88ÿuN]%6i4< Ϸ ppEd}):ꋮ- =='v~/t#1A勈@|IUbd!V wdDZi ^!UTel 9|y#wE>(w|ʝm]1%^7z-Ku/fXwΌ 5nXkp#p4_^~ؚUtF|x_K@jqu ܮ@o;\*_c6 2?Dzܭ{oؕ9CrXʕ}<(\PK?5_y5l2(wO×vVv,K􈮛sG>oX7vϓV1kZ`ʃ橧%4kVY>G!<eg8 (-l Y7 $W/` pߺB˲EJ~Wx N ^]etI e' tw-X_^fFeVxu`|bsy?hw@?=h "t}RcmixCjW^ }1r})"Avp?[/OJ?!?si jQ+rC ~:=+<~C$v?4|N: wFq?rٿZ ?5*p{4fh 5kN*1 ӎ1d'˲>P`x!A'm@"keHf4u|)}d b  yd@٭ܣi-%Dc~_dAxü0ƾxp۷: 7\1)7maU[mKJn(S,/wPrh^HhgD>="moݵ,6~ZԾdg{i"-)ň?NTTPc`ȗ_.G0.$7 |lD&_gfg4] &*b/_x^$`:mY 6dZ,48{@+@QR?(iX{^b hX-P (.RNY* |h󯿄 N G<&gWR GDu`üzwML6F/^pCvOyZh8(-mC@ 3vy,s#ni5OtGHCîn<^z٣F?&yv ^z4uD,;3_/(ܭ<ȇe&j3(//9||]@ L &~hoٯ6b9&s#a>Wz'9bHZݡD~1l2/w~C57b$ }C57w4еc }vɹvsPjã?G@lR=ZvnuƁ\쏗qb cT3lHr#[(Nn_G49ГaӮX㊨e(`\ORjÈ0oxmc"b':%^#z 4b!{<#-`eݪ葊rq!ID滭K^ZlP#":}N&ߪ`7rNj~><>>FBAX j[`ac~0ܮuhW/NL}r-xq:Sڢ^7FHZvb5v|t9܅$˒婦֚ufUp-TGq " SsYMش{,v|h]MRZzmg7xR~@fo'9?ݔ1<4!3]8HԹ뿇 Vʅ-zbpW q *|xcU5e2v.#cYw`mV2zy*ft)֍[H;KT+ˠ$BRb,kӾW{yT8uLJ{=~~Rɻ؞ꧺxU=`*ϩe;._]A# z}]9i?'OaPS o#CЁ>5^m|̭988.a 2ԙoN2{[y6uݻ3<4nU tQ>P <{vbl"H@qe۶8&&T#C, 4|b7W@Yt@ˢ-6%]07uQn ^'eD">X>[FS#ߢ}6{m\)i-͌cSDXqo;k??w]Դś>W?~|xpq`Ά=ГYjfg*:~ 0BLeuR-g)ZwA[5W.(+e)Cp:~Z f57 |PM-n.̦&3kap@꒵6[~v ;w!{z\[ bAHl',ƛn,/;4>md! d.aG$iɛ1"o MlIQ'vdb\:1,7{.!DWklB5Bd!xfx4Wr7^O?^ِ;n4T#{rn|*a=&ҞSyև*OW1!a 7f,rC=O5Htb83/\Jg[?As9rvvp_γ;d_*wq3O7K塯< Qy{VpQI^:rΪr'A<;t 'cy?ssz숯}]g-Ӫӿt^ssvN}u1xS>=|j}Fv{V?̬jTJf`<^Z#GV pO'N<ٕ#no;l='úIn5,*vXc߫>b+.ZɣqvuELO_Ex4xAFۃQmb˅s?TM5M %s6MȾ |{,ONpcTk'*z]N9f<-\nu_Eu{ލ<>'ZOtFS1Yb t+8`@?3qlq_:WSl@*?bodK>9Y[Tɛ[{ny澳sk 7A/7z2=ɾ&/MC\z,WAOoP)NZ=ᯕ +ϴXTlṯG{\q歚W|h~4 %83Y=~7ݴ_lPQ9At6xtXo<oVs-9z+OP>̂^']_ AJ(T%O˵^O>OƔ\eMoFbl.s~ڕxp?Ghdũx4u_Z,m43PT/]SPkYJHhoiyv\6@|>MY\'/2| :ճy< Y]N΄8g5aǶdh#Z}O0_9?Zp`~7G^IxW^Tyd #;Bw"~ )tCF@ {Q;#p8[W莵,>G:.q@~2j|ߟ7Ahd*ek#Ep<*5 [(~'z䕲 >[<4oW]pmP ]ow<@ @Zd|YOvuwC#Bh,{ A؄iTo  +~?H;vvaC_uk3Hk@ĈL5_dQmE^ r‘jY ?WUo(4?~ @3oЂn? 0 (Z໽1,ģKj8iw¶MޣW^j<@S@w@#W54TQ"8A QM1~̵7]ޏ-N: x)b-Gy<_2CG.C76CYj6% [|uh=|O\dCF3JAڎaڽ}nȜtbW>bYb_Juz̵n!OA;VT%` Ta`PA嵥(`v% $ ;B:Y ~҅: fIoo Gs93#㫻%? =7E @@g*u>24M@d"-]p<Vɘg+:~/'LІzܶ#\(s]cg ypn%KzۙN m^=ug/]8XeZ3jpsVϾVEtY.yy ~ $dya1Є p%0z:WfW4 ~-wfvFvp=w*o7wրk>%^\|?`|GsP+`@ǥNwwody.!;(|x{ '@{ـX \qr&-_@hCcyq'W+v"C: 4 |[ ']?l,\4{~ 5Kk&Xt_oGE@gTB0]b$BJQ k4zÖ m#q,vm@d`~:3 o醴 Z cj5xx03[{#E Q"ӱ3曐h[ knxN%Ёs]Ԣf{կB 2ņP @%;1 /Vm*CTD}*˖_LgW&# Gt$m_>:E:`@1tVW-<25w`f zgP;rfW>*}M19i*!@-0\@adkW@ (xN⳩`avȌs{zЪahdGM+`;gl` s1(2ƫ~Rct?9gqzp(<9w E[Ŝ_۰(hXoj 4i]oڹPvt1h/AvpӾ*,͹@Y ԇr'f_}w ?XȬm~i?vGqwQdƯ,x.?3 YJ<8>|; JY-gucY.BԂW.EV4fӸ7 o?ww uV"$A$\xr^N] 3@y a !/g O H0  LY("ʮs=4F3r+囄WΆ!PlDѲ3֕yTzdܠ./{%A" ܝ 8d t|J7 m- (ݗ?2@dy}3JR(,ƟOϔ;dkC6w2]Ϯjy ;ns˚ÈlčNi7dB &`z@Պ &ghapilfq2U{0ui,/\|i"\20 fB2>B!o![8.5~ `jNi\[|7A M;% >.Wo l ~G?qN$$kUfd:4:w~0.? .w0~&Hp?DpsOZ#x{ 0e{Xk}LJ w;P sM0Ӆ$y\<Z5^R?{=dڇ2H`RrJs>8kzŵ?''|H̕uM{gMk50ML@krrfNAܗ@@`D.}`@;_[ `9\we ^Tx` < ~:{!5^-Lt2ZB?2wQs2yϗRtڋ]BGC~cdrϯtn°zcp 6af*g=k{"lX/FvnY"XYNpz8wn1Uf%w޽RD_+)oӷr;{oLOŏ n ǻSD[xCOj{w̲8>0-~db"/E,:*6h-Dan}ğ,mE ۗ 0,Ooyl5p8 CGv97i_ g]#/. `jޮ4h(@zgե遒Cd\LGYuOAP1Tg@]X0zZwؒCryhJ`1u6˿/9'24zRO)PܿcӀY Ydb郦jK=OL#GH-x%U&:ܳ966gBԖgnu,PD?OI4<8 !7O/.z?˓vY! Jf`f ]syӿCx |Ri2]BXrf ֑"mҴ-'%9.9O` ǟ@oAÎa m(7俰0]6+Pp;ܩp:@= Nhwװ[|}/8+ {@T= Z,oc682WpQ@ %؀19-zxK ǁ.aZ"c+0=nw0_@ÿ7wo[aixa$  9q9={ȋf1SLۿϏ'7gY}Pŕ@ V-Ō鄝/g#֪Ia^zo9 bAaeC.!粿4L1]l_1Q ׯ 7L'@|6{}7 P/Ra Ys ,~9a8x9` ;j@8-$pMP~7&:p) > .l3-w9[4m!HzxiOsou4ݠ[{>q-NzYf25hW$bd4˸ 'ks> lճUSPG7xeeҤOΕI7Z1as7WއP|Sg }y3EYv έ&~Kn7L&`z4nx{ g˿(Cj`.m#  YZPH|( a`]x C$Hf%\lp*h$N>R&LNjPyhh9<pe /[~֨4x$l !ʌޗhp녷lC{VCZ'd 7z?o 2U\^}BoWp&U9!k%2%չӢ*'瀥O13_|1U~N&-{<ڐ&JV8k;T@|TI=#*.q/egp(O.7L@O|h웧>|tw=6˟ ?&\خΙ#$m+:et72ØVͦ>21£d."@ :0,@އ;[MP [(B9;:IjO{`3~6xy{qg{xuP=S,, :; T\dq1 qh;pFAkR @_yP čMB m`2`09sHJ3Bӂ깏xvq<> X_BosX׾rH-T6puV9׮x~- 5*|toEWV)P5.c _uo:8;@ |3`,}8ﻛDN}H+ L2m ?] h1fj@x&?滫n&dX/.GonM 1@6&[)AIM!ͤKm KMoTaj g71P!dm}m.z2 ΄n{Yv߫o{w]ҿ><7N2z, 16ua awIjoh `q33)qЙ͡3("02܂{EWU05[\dk%(7teӰ;g1ϏG1l,Q/i4Pu!B@~O٧_!!cb6ټ_I$cuQ}|q T Q\QG /K*jI=XynxOD\4Cc?&YF|Tto8I+dh?w 5ܟ.@;प"%3\u; @^A}IKZ!3!/%hCjFqOggSLIkAZtW[9{st` jxrZ.\?D*/|n%~c[[wM`s/~?#GhHumi@hriBB-ǨB{c]:f1<a`hO ϥ"`Pp?6 &,\Nu~Yg`"~|^o~[yr Y|0;uW_ӏWm⦧xX01t4 O(|. *_}Xx|( *O "A'PQ, z h^ڝxqz#feBf uG,yn'@ߝܤ]HT =rD,0j_ݺCf ߭m7w 1^%(i3&߱ϩSM{?<\hl7pQ}%0dp$/ud^?Nr&yqQ ( 5EW_-X' ˻iEb{ϾE`ucl sta2?mTp4N`K eZ $Pmz@ 7;(X) CH>%f6=]SLl/鞠uR7e(aQ5fKmPQ 7z:؞ڠJzaSuB@V &uΓ{.z ~?yqHu?&%c w)ʪz}_$kup'dl?nlS}N|/5/8bH>k`],ȼaf|`#2`5{2 `q&O|pພn @HVVN@lI/ZWH]t=!Oq;`ifsmWkjZλе\adx6Q~9&XE3I>Dbv`xz8v/,^g>GH5W/ڛKwW;Kf-"(ߗsN^p6޺sLv0DN;" ۔?>7-}{`p gQ?buYYZar۽ﰽ;$yߎ_~Rz!=<܄TQcM&@P'@܆}䌺MN[P?² 1,ӱtuS^OFYoOp76r%0*`9e,?jv_N#&:/L3WŁ7y^zG]j7U;`T*3TO]WJM:>{Z MK6iI!l:3^HxgPv v#?j'5UH_AE̕wAU`Wf.ęfۯ_=VEMUgiϙlPK Ǒ;[9oG;WK <0}sSݜ=l^S"7VʘR} 7Rq~:_ǬՈ*Y[ 6iX|^n~Ţo@⯽HsՋg0?O4STA?~+z ɰ* M66N1LR?#5G0_hho~[}h$캬WZ\ 6}Ƿ長Uk^>No(t,n!%]'Owgӭbq|WNp7%~loz곻ơIQ^.@Tm "F;)x:3Eó4([vOXi xt-8h_p~jpXmQ$|}@=<:<O}y_?-yo:<^ AF:__^O`2}Hֿos0j9Ho ~i$XMgD^a j6nw'X8n'9N9;h&|JKg/`0A.>!]/H}|3'^.DBuX";8Z]}gF3}a7ʴ] B\ Q >8't/q0tg>4 zV&WݖUki'!ϳ@:^˩= ^5LGћKGNW41MwW q@pEsp^0 L8}U@+]PZ m~kC9W ]KuFs,=OUH#oV@}Y#I& OggSLI*\tQFAM:7?8p5_s3]Ԥ5N`f<%B!Ą )rIӎĥt#$q Sfivƺjf") MN6 +Iu>vAz:qv@M?Uz$yC/sF~fhjl.Z5Ŝ]t N~w4 LS<|(_@Wsg hbGȤwH. _ YMY'Ck fT,cp( .oBU@ [:dx򹉪?$ T~z`&?|PQ ^*`ۮu"HK˞ߐ ph7rܰGW|ߺ (XS]%{Z1t󉏯k֪SmwVTtfMM@A%\ !C;QnX!-\Jr@˭&@]>x0g/y ݰ5}wm`]Z o+,CsՓX?' Y8~yzX_|}o /_u f- z"bNmn g}((n'4.~y~DE~m 豨ؑ ^ O$1|}]b_>yc˵-ΦZ@0öizMDNqZ;eFbEh;U^Tߩ@}b.>,]y#> E6ufsg8+۪V['*7ӝ=lv 5"oضn4@P\ ns v߉y Le;`lWw IQ:rguO[zxoQa {'G?0xlx1D;,Y f^ : &eN]eArz=l;~Gk[ S- pO_匣u\':N"VH^@Z%ڹ"|?q?^|yKگZoOɚg)I$PXkIwע*c u oC&UoyV@/'+ p.t̺x~ $}hOx#8 _˲1~PQ@U&:^^ l00 ULAUT* UgUE~ c!lB>ʭ/&$k\3M(ڪ)rլxEkH 8FV ]XǐV<ޭ}BgLsm*gd妾̳r-`W0M/uͦgI*g;vNDH?M[rb/ԯfUN.$65/S@~? ~2wM^y/bOL֭i z''Uh ڻoe >Lf!;4 "_) ͜b V ~M&94 $33~9_ƥOX*жk֘9s>me٨;OX9F)SwD/u?>_(~`f: 8O~lvo|Jb4 d_,E}|(g8HV| l~|l `W쑲 `#w AQ-|"O5svG:Q Y=Sa~3!bFIuHnu7˥G0CoMW+^N!,In;$W=MIf@7 DK [/l$@@9?{&PG}-` 0Xd |@@N<5cGU@82% @vNvԿ!L3OnV^ %KdnK;B:l zw39E70)2v'n^HЫ\Xf/Zn?YWL_CwL_X$$~77a,cݕmWNBAL=>zg:?9^)ǐPBe,8{L;@e*О5yαO=[|ќ?_,`f-ڞٮ3;o`Վ7 J[c.V_l^{}8lv Y66UXQ tZ|igj!T hF,;g7 ~fǿ2xz֡ /b&[֏&v{_agN=l7g8J;e{{FD~ۭ3m\Ǭ>Z75c*&6V|? IK^|r)@ ě_?0 ė,qt*a>Zٙ+=9Xd=OÏ3fg8~<^=Ӥ|ͩ?4Os;њj ѫ:I%xSLp{(l:{}uT^yweLKL};y~ Rkqγ&Zc k>nD""yYH>=JEEDHB4yt&E UA S%,KeYie3Jxmp`8yE:jm[:,NXEwu'mf5:ѯ}?_e Һ@jt^|R;yw6{@ Pƾ 2Cە_l@+ \9j_Sbt<32@d¢0uzK3URSnmߣ2i[A`*߭еT 䔠mE 达/>KR_ "GO_G |\hzU>63WIdp^^@?TDx7+q3?iåij7wƞs7v u?՜ ɛtJFsTO (%k&㟘߳X@|т{aAjU(Є ?P+DD}~#' Dhdl`h<~%iY, \;93~u_@7 3\%?œ`/jd9NZHu!MZDΎv;fxU0@q$=s5 P CȅmT9'm)#u>zBM5HC3 {LC |黜4&prlW .;*xϋ;-Nv'8`Ҩx@ɻg( ]|@U`owhJȘłKQ - z=DP+rʑxPw WEF2E M`>ʢ`^1˙W`<~ (ޣn@a`{M~m~uƔ*crk;8t: C2[v@8zA_`h`=`*(x@^+f }z( ~0}SX>٫* YP~0ࡏBX?x >܁7@"Y *^}!3T6hug۩0>O7}VL|8gp`p7;%2tm)a ׷~>x"՝'(x+DJ7i0 ~ajgYOq˒lepo]8ˠ?^`jq⡿{wǁ>C <-wZ fի~4aYvsKp~m??~|0+4ľ 8t|t]0^!so5';.pG( @ ^u'Rt$gH?OoKP?7h Woy_ƏTEKuN^Qrə<޿> ^bqȹ`&o; -Y4հe{\5tӗNeg87-* S N#3qTu0)̽J88m;ٌC@빀3O:{ 1@6M<;z7 (kS0ST×M/@| P3P̂ad`NZ3Be!>u+"ӂ_O CosAQ|Ct/n=~@n| >36DQF+;ipBLA]~? d%GOLPho!p:z8|ӫo'LF_YݩWV>ögVI 4S? #lZh^>^$?}ELP]][㍣7k@y} Gfѵ2ߣl| N\@_ELw6)B n_0 Q` | ޹;a.n> z"NxƜov!uN Ym`>\8u`s|ܬjUVn |+{PZV - P %m3*,vj/rxO3 Kʝ%˴rp l.8Hg MPO`Ǫpb\ǿo - d~<^~~>E77@uEPcK`|; 4lmybS bF?> />mm0Jr5=qjQnpƟLJ0lG:oޏh#"D`@VaP;u2<ѿ,Æ/P$d@Ʌّ!xBqf<iw}O 0ȚNewf9gQ_lD'R 0l_6n7dk⦶L{{eH isҩbU=kQqj>N2Upo R ,| A0׆yY_@s $5'ooO_laƩ?7p;@t9&x\{/$HuU :|tۍox@DʖͨwE`]2^=ϔz<>uX4zy,Qk N#FVt$ |b^^ X' ~vS1!} &@łzH< >3ڂ=dVh N3prL놋 F_M`> v< z5!B@\T?_-5x!}*CԕGzcIj?=«I)[cێw3g?|or>=UR##Y&5@CY*)対'p@Lp}ysy7gZH7ϒ'\\tï0`7V~W TS-T 0~$I % F?J_`5-“aH21C8֛8!p/k F!;@V6*Z~77TT+WkOΚyK{FmgU M,ވAot^}}o93{p7HCǀ_dXTOdڠTs0Qkp{>Hr?7? ]2)~! ~ghyh;m Wo'@WRl s1:0?kA=}-ۈOggS5LIivxb|gbn{}^yu#( #'8`Xjz3:"Z0D%b}=[Ň5Dǁ@*Rhݽt3Xyw8Yz@ &.eÛPj5K,{Lg;%YQ.tL}eqyv||g߁o=|x!ao (@YjV6\P;yY\x |ɠ""(|Ed h` k< pMxe@π`aIsUֆ[ h5>4Z6ք&'H|X3 ֙x 떛DHp4$NOzY%͛l`ZȽl>-;9]&'O޻;5}-mNG= >syÈ`!sJ }pN圯|wΧq߿(,C67z큍u@&ϢpFh_o?ɒ}vH473~@CLiGL%z*3h7 oTpj0ioQ (K{ؗ/7R_ lu.c0t';Yso %+0@@zSfZQj(H,r֝z4쥙VH{W MC ~Je2gv8ϰmg2\6~t4`|z+bpcllꑤQS0YRn'47~ڄrt_MфC3[,Dӕ /XG- 4=w!`<pg•>I5#m Yf²$!H{'˿}ʋw_ZWwdTjĆ هpY )̝:'p/|_ZF \30Ϭu^"-*~4:-//f>|f<>xC~M߶ןozzՁ*i)VБS: bB@.>y s 0Hwl66؛wl@ < z<(\/|h;0fU>X-Kyƾ`T`dwV{!xa~̵ V6?|@ '3 zv2’DUo@9Z ށp,6eI0V WZ 8 B? AcV[V\$YMﭷ "O:䪜(ZOJϽn$wɜt />E1G x_ Pfjk;_uю:lo^ ujgicjws8@Grsd= z0^!]G4LD2?FD]|aĉi.+`ەK=-9j`p; 4}_*!>`y_,ko$@@?ZY# o%K1LkQ_n,Fe G0gƔhֵu7 G (6V|x7|uv}{<2Bl%`=M+x"VWm~x B9*>Zv'n @h9Un?*cC=r;LŲ%|-돫G>x΀R/O8Hݕ4G#LbsCE̚S|3_2Wo/3%yWs8䷋h{Cmj*Z&$X0u~+bx+|pcxłA  "DFG vсR K8L:@w (-QQd~=<~n57Ns0S@mU%T+ PoȺw__6 .;hT+! lrTe)V gЙ`=`3LB%ӏTS֦EϬVo 9dR#4Õ\OIǑGkA[%ix9@֦m>a*;Pf )#o-#Y Tk(z@8GQ5BeZ.聻[Hk1Wp`E$^uޮfo+[Ndw8Wy8c}lu_+/jQ~{M_=īmyVL!hSjd`90,vvb§124CprIuN })PۃP.4tVS@"\=nl'%Ly1W3!AWs6rhN4&934`ZObn LG j`]+clN 4 w>[P60ҷ8. De@EYY |[H,gC@O9$(uʥg8D^fK4_%aur$n;IF(^m1r:ݘ$]ysꭑ|aq^ET;Uƹ[J"]n{3gICJCUEG䟻\@LLhk"'O&bqJFT|YȬ?sf8ÒЎ3?:wjXՑn4M64>4#?!FTwI{F7x`%0!w ZDFp `740 dB(_0 ?%OX 27^[ XWyY`` ߛ^iqlgDur&7n8 ^jn_#h ib݆G[0ˊY#o;X]n $𘼇n }>[Ag-_,T'~> 9{ uNIi F0' @јɥBj0s֩@g;ع|]1du YQ[m`IBB|`~BPF)E0B#D~`(~@~-ETU@S}*@k(MQj듃ծY^֛g>"L4Ium3 UQh-0@J/)w t|/ uPޞb;t5SK~+-vnvtt{?2?]`2Su°U Jh8Oeς٨@M<33ڼϲ%{}*>Ih _=88g"bML>7 E No~qֵimGot7%o^GaJD0A)[  `$a~-Xm@;`l$aopdhU}nXLO,ɷHP 6> =!F.->mD?ˀsb̭E c@7WYrkB_^^.P|X# ;-0]GsSϩ4DÐG{'R>3 D-HPov/V.9f}#h,zM/r1OSzncULjagK T?>980Q/_ǐӏ{w쟝 H5cwkDNN08o1,AȊG>P%C ~K,D/(wHm|TU > 5HL%:~[Z,4|nUc Iܙ rӯUpwX+j+6,~՗͊qűg2H_dYffvиuY4hNH'>=gTEQN:'SD'7f#=2((jfNz_ϫws,Ӳ57Y[}VC=0S,LE^חbP1#Lay_4.zy`f*$yI]7@U+*8rUy'JV&YCn A( !7ɶˀBG ` sM v,ע3e0$o#p 0C(U0u>w;V$4y;Npv/4 k0KG.ؒ!S7wBL̜ΔDJ@XZV0|QP&4~jGw99G]6v=x_n6a@ޓe<6V skZ~m[yl6d>bw{Udd_?wݳlM=g(J6SVU$j6 5.:{KcB_̛׺C?n:u_k0~`6nm ngt ujܻ ߻tӿ7?ǖS\Y[z]-/Q7jqdyZeʘR&|C </i857p\TAl_v8c+@o6iծ+yx1?{vN<î[[YL,2TZ*Tj5ʵ gȗ/jNkqֵް+Ix>=/9MUݬюkL8\ǚ58Ⱥ,XmE4kaдQQT'0kռ7&5̭|2'Hof`M֬t>gĂ,XM<. [``/r-a;@`~yeYex{ʆL%d Z`N$F  ؈OWc_㏿ďu}F!L2OI*.C9E)T.HVR(mӬjvcBkb䝔4;>|}?ߜut>~=u핣,Cp976?E"*rÅ8 jj4~PR<]vл\]LL>\33Ƿf`9 SVn)h! h֥Jfi[L֬kd(\Qm>i$^<?q(؋ ,27(Dp,.R,lPdvA_pJVڏ/fVXbS؇IGTY*X͜!ajC54+Sd8}Z/3׺c~ >0'aT j ۰>DJ"d j$lju!k.Z급N?=nym7q+j G#}~Lqȹ^.PvtYӣԧ]d {P%Hö:[flT_e3[X_Dz[F8\1]o^r|} x.\d#?#տ|b>rmA~@h7Kkg_^/k* 4{QQ"K ˒Agh6P`bax%MI hɶՌn.͡*1j+wqƏg&NiMdS&6J'D.L)kS~9D@y%; }Y?'5\&O bXȁ[;fa DTGUn0qEWc;RP`+b*Cfs 0; 0A0z) OggSLI_^vgjj`a;899;LNK>YfFKl$őMcgg8l &ss\d*tc @^mۤ$E?JPh%gJ o_-k%Sn&7\_cvԯD1sTJ_V]{ S;.륦y94~,@.㲙{Im6^Xe}]yYwnWr ; w*7&/>?T\ԮkS YX@{뭨 H;@w%W{E`d  1wm$B8wl Mnd9-RNL&@䵒kmi]w0x)i?T.@oxN--bH(cNinn,.Ӊ>vS뫮+f{Y͠wqrQ3]#>?d[C9vU\NCϹ$3kp_켗Y^]Lw'{8(̦2lmzp8 }z1}gl{ATUhʎ=.3voQ8 *!x- 3{ K ǀR{i q2@fE# ؾd .!QS Qp)Mb/hKl^+8&KH3C 1g4hsy[d~=m˴-mnL_oY;:rPy4ur]/럿noW|^ _{=9 r!n93HTֿ ]HΩ(Τ.CAgojuX)0M3gn}Z@/_[u_pY?_2IfUqMv||2z|X=@+pJ@_l(ܥ f0j])g(c6 p==Vs_mXǶ(Օ/S@83u E1{J.ӹT{Lh9$YKvGz3Μ:rY~]hX,m>ɞ+!?}}1=} :`Z_̛ @Ha{6NɸB?E_|pϺw3h ky.%PWTlY-xTAJqɣº[X0Wy$ -,; q\R+[$7 3gtv9K2Wy3fWRT"*D'1m`wgv?5)ϝ~zßFRӟ]{Xe|}byGb J'k} OP\'<8J!a 55<~-Am6@]-")+Ouv 倹s [j[(psxeFnວhHCm0:ו.{|@!KO gnjkT1 \Y1 D_(W9xQKB1đ.v͉dPg4yWGSϳ\!i[ڈ3TsF<qdzS%Ns-83cw_b;j_ u(!Mޟ%2}P?^%x} upSΙK1WCWV~{gxy|oD%6JL ^ r"B/L :t 3s@B[X6Gul@u L@_lpG_|э<q!> Q>@H , _! w?,x/˄u0 L,2e &-J+7E-6wA˗ oL6y7t29>[ݕ/ l%?O[-2aiAyh y-Nq! K:`f( , Gc8>\M~b;^/,(Tۼy@:Yw+ ,Oq/,PN< d|^\'뉹U>;S pb@7Ɩe n7cCL}%oXyK bЯl*c qOfטnȱ*`(պO#nfmfc|j. M\2cT'vd y)499|%J d2b}:T6`vOgks~Mt&hN2h`*t.s s{0tΊW몴ugIï]uߊ:TxH#A D2ҷ6SdLO\SwN~mg}fx \:m=Fb*uS}Y"`|xk#=r {7<Ǿ/UZ4}#$d–ǂ]^vbSNO>lXyh3+ǝ|Zi~1_-Hi7(̆⮎1f 0R@/菼]s [Ma uk}BIv&,_>eOggSLI#RMaZc|e=>ESxSex v/yKMC挋|<l|)w7#4P+Ѣ_)+l< +T{a)o9MKJ@XM>6˥_?ܶΣ>X^GS&WCb;{5-3E:_4? ܞ_sFO3ocC6]\MXs>&%cm[zw8l3}-ma0 _T0osdY'Le9ºr</U,ss$98q~q =']8TJ瓾3 uj2LJi4@_Kt#ۿ0bj^ :@760X,x$ LGH/Hq<רS-uŷ1Q|73)_^7Ɨ4ޣ".\_uO[$&sGRH_j:ق{ِt~f oi[v(eo[^@D`g\zyh}DxAwOG6lR!^3S4k/^E1, ͯ>?t/ZO.p5yI4ʢ/9@PǬz@U?ZY@=9`iz@ջ9J"@ _`ė'f>`a)[\^ p7 ~ݖgD L7Tp6oYov9~W[@/ pL:[*R"0"|nxvov7f b&~9{1di DF]╻`{0P Χx -*NBf&G+*q{q`3죐; LY.;hur=Z7>QL?ƉP ٝJH7 @@X}~~j@"*8% @M d AWue>m>3aCw/i >sb;ӸP2o^y:e Mox \,v/Ng 6615/g=_Cs5 e9c.t3I^x27+yx,YZ8[2ɼa4u쌊@{_ә`#6XY꫎ɛk$T7bG40_3{iz5͈1>8sQ|3[7X@B<о@@1 *HtA V`0 @x@ d @V:3*YC1 kip->tt_[hTU1lZDHK`{Sm?H"cHu0yGAP呖\c.O0)&~'^lvUNtfZO.he!e~;x0~x~NM9-|U^IpK:_ E@\@M4 :L_tA:nzoeL/MV0pp>pr(Dm 0M_ 8X>B |߰`pcx0}<5~aۘ k֌o1gQ[pח+kekH_L!c׌O6fZѨ9Ж;|;j?S^+4D^D}%܂9^51>|o$AJo\Zׯ%m_A$Zt.Kd]0Ey){ ܊iRwoU"-&{ J-kLn?|)V9 ×]$`k0!ZF-auwa}M{/ .p~[?\t_$SV ʬ`'lrj>7S>zy?mIϼYb%}ʏ{ppkVQw!D Xv>w{68|LQ=넚z@~fe#&3 {u5J#]u$\wţy%IpRhj== ?bƶFP@YD - PJ#.Kɽ9LeYu|=k g;z,Q(]zG2\ohq^M*"zD)Ϗυě"YsL2WIJֵ88?:~=ר&YD(D@ݟ膆&SBqoah }hڅa $䖼"xLDAw=?)fA AC7N1)%#c!o]=}C  -в`} V,=`[#@7v+3red _  pMw|5UB8z9;NJ<t,,)Yw+x_Ӄ5 ャF -]閹o.|sZB(/wMǘ|g #L5p6/<㮙E(yu_[*Zl-Č35'/WnFEB7Q@]@tV&LC0K6##+;`oSpͯ9 (fϢjCPaGo(p|/`ad5P@x)0@?KUG--^lF"!מ&1Eܣ߮!o fyl w,Ԁ}Bcw]t \-mAC@<'L ]O\/mG&6 7x*/ҵŁc֯]hh!Oʿp{ =ߤE'.1VLuZ ' p.8G'1_2PotVF3g 7|[J|g@֏b&rg0(_qoA#`PyxkH$p#-Nr'{4D,s;E$*m)OړA~`?4Cn_>@?>m_r#?ь(;~ /jmNYv]@ s r?Уrc@Й-;=8i R8vm) vV <&@8b,n[y;o>\GW@ z|;ol"MF8#PG JCH/E`>Q@<< #1lh‡CS$OggSLIy+ZYh\bTLT:9:87;9;9LAS- MEdaY## `+"D׳{;5?a`pّy30~nO,-H'mQ u͞MhYs{~ H̼Wdۛ~)7(Whۉ/tcnrRi9[ϩt!@pHo]T}p!#)T>"; t*n , $^mᎋa>F^ efU\[I2л?a,Dɒ\?3Zb`k5REBc8OaO qX n-y>͵A@K4xRJ'K_đ:PB|fp@t8Q|kW".ƶwf2t7;":%Pq1 *hJ Wj&j1_ 0^]NVg\3_~\5A;z@~|w+R¶&&,pA :=dGhm3^jN6@ P9 <4܍ m-8K_2@\#m_$ Q i,Z6~#尟"=3҃us  ;'~fopZN(%D1vWl0M3}fׄ) HSJp=@d^6d")U[@?.=@Hzqg~z;.^`&vc@ݽ0ټqpp0<- @oU+BN|.{$χf>Ei?`_cGE[wØ(*+ 0< -7Y,l^ӌ1iwK uv^{ eʫ,v̧#ܨ.{gxE~3*˯5 }7%0Зc >8n{Yp`)'2p-W 9f4'Ъ)~cW`$ 2[?D@?oj-?` ?(ot04G^z5ҝ;ڌBJ|/{D!r_nO0jPπXfHHn0F$tSN/uaV+ _~):_ %>at!Yr&1#2u[uj>W\20<Ԧ89}I2 UUU^^]{fi@ P&d̼5r$(੡ jPl0lkI `0u2)Qlԑ`(K x % T Vjܫ鑔YGdf~&4h3ܜt@W |8@J9@nӦǯ;⌭+gg/E n|}׍}WJC`>X'-}0NG|k1cGs>YtIiux{$Gcͽ0hYչ|ڜQ3`Й~}lƌOˀf zY3z@Td̬E6Va]Nn75/.$|guIFCu9SBi bHQ 1Xy#:Sڭ3BtUg>dNެaj{i} hpq]j]S1Ų*+Pؽ8 5魙:gE95h5˞9Mv8cy뻲` >a47X53zaUWENCqnMrz(( ۞{}15Mo?@i6|Oέ} 4sCލE"=9F%@Hbmp?h~$F^d/'θ'n:׺Z X.wS+,̊Y]nIVYa4α t4 qlZ? /ѭƪM%Z_7kXXcKy-|pr͟>5 cwg _\~ p>!t·؋{F"L^ψo0L% Swƹ::^UK}3Zi^^"{'Η 3sj.џS]9O&B*FZt9c4ߧ,S:fPNYOۯ:^.صn:Q,̘i+re7d;y:s9w[z{KWݯ|srj7_UWJ!.U}§vjF/mk)[߲eu%4āѮ#LQoZ9f6Xc7b"J#JJܠBfm&Ϊ5oZ?øߎCƸa7[5:)nxj|Odbz Z2Vri<(^R?DeAuQg~{05]\?eXJ"o]Xbzj<ݞNgsv9o3r}[VwL,6.#y%6Ȳ5fd!˂a`7Lo`Yx |oÓOggS?LIo_NHqfWQoqu^> T&KjXv>?ț N>M]nhoO"#N1 `j7PP8X~!anp͂ *c5xhB0p <(`^GT8< +bV$VZO6yן4/|y?ki3~Հ5^UPψ(cenmHH4-k&٘ʼtyil4@={0 vsvh{?\ 6dsK=37G?n&ewo7C PpNnȢwuH* E",1Bf h'yB-^BZt#$B ]#D21b'~Ɩ1v Tmgh57~`:/N,K$T^X?LsOX;B|8Z=\S_s@NKЯ9e}<Ȝ_N}r Okv)2 GA,d( ̯kf{i .`{oNetRqT/Vr> ֔ 8nSQdbAEY^ [iЃ#=3& LpZ )p~ |_j_j^BP5_>;ϕtGhXN1Tfrٶg{8_]$b{v ɔï9׏_HR?/ˁuO0>?Ȑv L tk{7_0a&yr[йLH2k+4pyMWC=^50`5_}b2nAF6E X+KS@ aJ!4 +5'C7oX~#2۽W$ʄ48< 5g(CM~ t be=S}h@;(gKHZ~Y&8/O.Uv?˧>Q[Hy0뀻GU5/_,Ȱ-y9n75\/|mGw8wxu6CI`!j`iU(:sr[';4\z H%*  WBR΀3 "2Vx\ gW@p} = m>x^bWt&zN#iThݣ?a:X|uDŸ߷T GPt  I@}k  <5l3:S[SBE i8@9bSk^gmX)ލV29S@t)4g(+x,V0= jrIf j2^f3Rao4G=qOoo~KSIs k;6.$K+6 v< /F&l gX ۽Wd76|Tj/|xi~8{V`oVU*~e߼YnfhulSg}wwkwU@GnsM-쿎"k%HPd ]\t68k^֚P9WwZRpɬX\k~}Rb>U/WyB@X~<V7懛3HO`_'ri9~( 0yøaYdC `?y NIKAЉаԂk>]g  3ro3 pHٻ.^^ '[b "Y QD/-Gii/ [Lg%(?n9xԵٷ \Ȁ#2?Not˻4C{Ž<فGF/.LijI`]ߚKײ, cjC_|Xj=O~8m_9{DV~`4pVL p~wQ9u˳m`$lD89f ty \,G@~ @t2v1"/z=v&ۃ#Z:k_+rq ?9WUL:!.0tj{ pg W5r+yq(-W6bUeV]g% R.Ux ۫^yNRpw&q+Lݙb zr;-E7NjA $q6 KET< `r dz0\``Go,6U5Ҝph/X4U,E ;~@? M- "W" liv ͂6|@D`zKnW=Ah~׆_Jtop_Ӡ?5o"O0r7˩ci#Ah=[¤|-(6-'~9 {St3}U y.r)s>lJK yCСk̿(<[}}RŸdX͏Hw?ofb,(sxb{||E|w6wמJd8^|}0y?6$cseyl:cD"(  ,BHHwh|1O`~? g/@ȡ@ oD!6im `ێљPĻşZp{<ʩ ' <3.wA ~`cM\Jq_kNW8zqݿzxS%s2+$ s޲kzǧ {EC;4 QY 0t a>t A=yy}4R0?`8u{iaLPՊ̏^C#8?~쥎EE:! --fA$dրc,0['R?DomBK`@ (>|J❉nV?UXA\@-n mנokO\_onґyIQ$tgN;lv8g:d>[ ga &@yrv/m䀘Sy-HD3юf\F/o"YLs3ɩ-yF5; Y=MQF]'غ qR/ӝF8K=>x,NjOggSFLI? AAOM7<<;79LObdc_Mj[|&I5jJ{yj*=/1<̘a'Mc*B7uc. ەgC0^m(uL߾NzlNHxV}詘su=ZӇwwxYs$ř0G[pcgW߀OuOSV?΍']ʯ.UwQ)e}mk/fem$}W#${}m ,2ضhDGȵ͝HHx_V*PuHz7mr!R*`ȟŇ _yX*' CE 7/yyUf~o5s :gض$lbՎl#').p! ~$${ Õ&"1 ?I7LONf G uqgF Pp;9- %=1j7'W:<1&Z<'?͖ k׀`3N佻 <|>s(vLlN;blTjW:(݌1w<Ϲ/ўT PC:[CLjk&UZ{65]=Ģ6![gͮ_OdC)<컡2?ib6ĺJ86~]3Wؕp8sT#^cv%Wb|*GjLƋnP];5Ȧ F>v=U{[~i[$6FE+6 |VɊ5m317 oM} =w||\K?ݺ&l^EzyWAQE,ZuGԲө&}?vG%ssI5ʿ/WTDU/z ڙ)It;k [Y||8p5v5ISLH1@B)s$$b.ǮNn,@ ׉ڞkjg,{W|FGP\qzySS (+QA#b {D#E"p|T,K懿UpKC}=Og[[$H*hqXǦԽz6ѱ7TmwkkW?KI|55 9 *7Eaqdf#(J*a wdf^ E?<3 ;f@7IDj>o.^m̱m:P12ٺ6Ojmok  H/wNuE ldTѯ#x"Bo%?c7}Vq!`qy9|~zKjB3LT"j 7ꏕ\m5Yr/h(M(ތgƻznw+맭o T|DLsaG|~^əՕ2n>4P**= `Z:&t"d x7z]=$6a5{g"xcD#!ϲj.4wq;`:ㅹVh< @f^ 6}|qx%c;n_3uv_d$Nc;м0?y 8τ5~0_+`zZ8yGsݯx[u˵m}kQ o5Y̤$8$~Nv `)< ^(/^RQc\IX q yCNC}79H Y 1z5-fOqvgPA.NAzZoܲن~ ?b PQk hFTaȸNm(w]b!z!^b경OJŏerBy򪩴htk05ެԪģ_H<k@xO$ i]r{Up#sL?p%+s7SQ42xQER=iD ? QE%%@* $ЫEXoΗ^R p_`l}HoXIp<0Lo 1@e1YZDe0DqOsyw07XsHkωw[3D r7HɭLs:~gΩyVc~f@rXFsW9a~5L %iΗ>1d|hۯV8 <5 # `Cq/@1n,E`w$Y~0`?}1[584rd^C OggSvLIvnnYQnvqtY]3%83]6'Ȧ5atb07[ 5н뿖:őFxm-m3oe_>o 'kz1 +x <;,n327וXyIݫT|5=l,O>!9@D!w;8 i! dJ*fz g( Yp'UZaolZ9*wQp~ 1@᯲E@UhT8+FM@(EXdXVT4CE_j <^#BkePSH1^z݊m`Q.)??a?i5^#up*WNvY< ^'k'`Ϭ.R%`9U~C =,H?̇1v80 `}]f9 _I=zzw6: [a;1:@~y'l׮!C D K*ɦݙ`grho6̳rȺ~p^-Hp}H Џ8;+O+`1+ &0TC7F!L">J#RCb"3=%pf}T|9hI \j U,=Ő(҂ {F뾓,a&m(n$v5 t]/y`[NjP򧙞}5`?6a; 4Ք{y?h|_?04ENezZK:d= vG`sS(b8R/ӨS|3@]_T9P>̓@Q8zkծ",-%J^K 6`}V`FEty2`j$[~F^J=R0u&]yLU_s>Oa~~*.M7[|J~'+0W_껛g^ݵ'{ZZzD|/+r UԡO{&ntACȑ{x~Q59Is]Lc TTNӣ\Nܛǥm.3j uϡL"Wj9j@dyR[; u®C07rFWknH~'yׯ]Xs+EzjL/&;iWQbN>Vz~Mv {]y,/y&5 j3l8$ciyzy9u Jss<.ǣ`\Zky|KB<sHrae < Xؠ a4 $`O7ll K]ƗSLЪ#n0,ĚI$6NwyF=Y'Й/O4?|gu68yѶ$&Q/}^CL7N{O?LeBLZ|xft QGZN!F r7#24BF sk^Mq[F4f}Ud_ g ;;UU}K]tT/&f^~nZ#5z /36TOp^{+qn(@ _+"@\,'a  $|ٲ"/[Z,ږk߄ ` PA("J6 DOO7 <A0* <!TXWS1 Z[ZyT04"n ׻ھ̠e糩u;7<7'tAR")='sZk>pSnLSg9آoݡgm7ԑ\9NGM>{]$oUSY3d:xv2WMΌ#9+>)WE5eUΉU*7cOm!w;e\ݑdHJo~~+a~ؖ%dY萏G#%`Y֍WJ\ǘo/UQQk`YW(EG I83ީ5eeatpMYz2[Fwmmo"o/@alO;Rc wP/D6Drm x\12鱨Y%Bf ?LW|΢5{fjjpm?:VWG>wjE`x$yOJ4<f|58ܜg B @ܕX`? "D``(`ٍ۞& j;>62IT|wP?[I|kC_>y\|hL`R KR@=y7Xn~5jV v U[X#q;lN[\'artH۾i\0j~è%wNUw2 8tѿ#]}M {'~Re߇^a1'_]/oPWܵ7EܛY5\kuȷEZ}?Wmɭ.%sshkk|5 }z `?k嚾_-HQj;ٜI4*T,/@<E~޸PZGw̨mpoyj @p[3~b|yg%=ە]{%Wۆtuu߷OwQO[Sϻx|~ujr糂 E Tp`.6|^werzy8,3Yk\C)i?q1sf$zk&WX, 0? Ӱ.D0B"@^e@ c!}ȿ elS@kA@/{!sFj eV["v_~00>}kIB(;v_5 \m7W逽@ lUcoh(јfTuՇvG/9Z͓ x_\:oyt{e9R@ېUtO+*g{3/PaA\|9mkf>??}/3kǢf^B$]. j* g_ni Uuj\W8')Ǟ xޯ3KX $VU w   P^zW[_2A^(̺OggSLIgZur|lq^zms^{T:3zFM~ bS_sl gOהעfb%b3g_8xr XҿǖQ}}|.%WFŋAt1h!鳆+~TpMf7kp_ꭆ vp]W_E 5 6 Ԃ9PIO̜O0goD@XJWcv(p(]WSk@޻  `2z=ݣ`UU^#),_;sǟlwx^\   7GxYDb}w]']wǸ!8[M+/'IctJ%P W.0Z( {*/'<YZV<<ɇnbU-!ݼ _/7wwtf>꺊j ;ٞ,XW獙!}K{~}MEs d뇟1S>Ug$Z-p >mn TO @, H `#˨#~8Y J(r !a"S[^LF90j/A*lmq~3^ln^̢DVOk7ql*g`hCry n].]d#>C۾ Z;N\$0l8hk{qǿ$k0\Of@.C'W ޝ=.`W 5sfjLU{'ur"kF=.t5kJlP^$~&^ιh@PdПY>"14"ddAE ^(0*(f p7`kTSQE>Zݲmd%f/s 4FFlͳW|rH|ͭ[y鬢~xgleiQkRW @eo!Kgx(݄U3ȏ8Aַ9ȓt/s%p *K qO1>U(8ÙE5,_v[+>sd$rM0)@ٜρk@ӢLଐ# Oc`-{o`$vJ:}KCK7kQ@ HZ/dagT[6IF؄a`BS tw)(>Z% =ezmL$ 2g֩z|oxl콜U.ffbArQԂ`xmBx|l@ye 7 ]Ӳ|XROg.[]Ujo7ZE s4 ^B⧀/lis>sk*˨yٵ̩*M'V\Io߆}ȊY}yo:탟E&sW;k/9PP>:_keU~(f W@ӻ޿n7M& ` G7ol!aI "Y d/0rc/@&V(ȡlɠ@U:B-K 9]-T5RtG⒑=J/\_aU^PƠe2:X A4xJM^d =_~>Lx@DL: [MQlK3:,U7tmhhed9E5ljzy0ڂOZ}տwu/o$9_p˯u5+hgߦ] $9Po/i5ʧ1 {PkI@jL!Q; p0ؿߌ> 7`.4`]>e;lx}Z@> } fa 9%@hМ+Xu[?=^^srqVaH3x_L$j6'l~V{!_Bx>[nE;RA)@%,š\eɾ='jEτǠB\/+)x x3ϙG^%Y@jN(r6K̞{_r>0.&5qN G1yz圪`8;wIu>@exav0Fy$ d{5A@x,eȆ_G|vU7@,WI#ޒhփ 0`U:YJfKg.A 9e#'ߞo@NZnĉzs ^a.ٵ no^{.=+ N(ťy5K yߠ9>6|<^{f?9ݑUGqG`v>>/3sf' о9@)>OoNrgc 64@2trhT#)!BZL@*@GqP4@A% ?c @ j}9=^*@DFﯚ<׭/88Kb lrFkFc[NP͘verl՗@;y,\:0 }wsh{?(/PΎR87Udz@~͵*o2= ~`?#RmGԛkȁ\'j~{KÒ7C`<(r2W/Qky944@>@R'V?O3CW/| UOGq4(@T|}>&bs0ĮAi2@ qw ~Vdt} ; _OggSLIm<[fcoo~^9]=QI^"fHHVp|^u˯5 ?UyPhF adꋹ#?6ZQ.rs7p.ͷt3R&5iEY<]Bt\VhP9z[~etA՛>< `@q_΁4t=_`,6G 67\6lf6 \\! T%0 d=  2 J7UT8~ISAZ`=3j#T"?% ?hoMz /[sU/*+Ov:~S=bga޹G[%vX! "Ͽ6}"i rvgŢ y X4m* gBW3k87͜ o~ٴ'Й%·LܽkbrJZYx{s|eZ!`Tl`wiI83oOg,vXZy6e"&|MX f]@~6z WPWYo6 ds@/?‚ ~]-݆`fL"qx{F >c9fb{p .1. y'v 3leNWЦ3y5/oku<@;.38P ./bފ%塮Ë/7Un\u|޹N3 jB P>XƵެEe.Wש*皹GQeEh9_jxkG s!JOݟa4%zHuU[9?HjGއk`CA$jvoX|?k9㔀 Y3,X@,@JRt%27-o=c8R@GO<˼; B,> UVuplg;6fIDvZN gs$vwC>O&2V( :9hk؇jk-j;ך`Ss;L^kUϻ/45eـ ` $ ;`IojRME_kZ/P<؝YJiN$>hEy@ .>јvN~#Y~nUp-6 {5`56&O l\!gP9\qS\dssԪ%p,۫tCt8$2|pWLX6Gx;>T"[Ua*lK U3 }PMU=d@%z%׵qz(%|(¾e0W=}eL0/O@? 0C/nkl%b6߀~,)-3S_^``1n _oۯPң ks]S@F-TvjVFi52䣏Z׹`g6s" E)GD2hAa{Y<bqH< oܥj*ud\GjG93'$ v)sLD+A+Pϸ;&=.zSNR~ g s4oI Sp,Y2 @`*_ I/ l1ן ЄA~KV?+` ~ATT6 NVW}I@Q+@%5K#47گkںd "M oY]ԁwPɦknlN/_B$oZyjgL^C5CzU>6ݿ6̛Mp)Iq4?opao qγ `e\)^/ݻs631wW~ta@;ZΰϻaROX{*B{YdOk8+xb7 ~a_hw݈و/ w%H@ T^#:(X3tVwpM RK1q:B I2@1Fy}r߮ ?]ڥ"NK΋2W(%MA [ 3$/喆3 * pgl sZf~oi}hE`!:kA$sCw2~|xl`G_33׶3v|2ٶ#I @ }Ḍ*`m߬xx@B RuHc@AL\IUD'k 80#FDeѼ0ُ }[9ڀRwS Χn7'Z1c3`%и Z\b4M2. e}+knarc~i<ڲ1vy< nߝ.kJgRz@n'3X^ewh`wo1L}Q/4h_>$_fY_I0 @,]9:J,.^O F *314Dx;=*}NLXfCsm+Ӽ~&Ҭ!yK,(@*|폇 &{OarO-_mZ\_c5G@212d{`?<:+U@ب+` 3XEH> P(")=oJD%Bb "8 n\n { ހq$Ey׊s-$]`\&{錇7~\S6uNf/$Դ3Q)K 2.wL_T*d+X uS^ۅ}~fm9;1iN{y?5P x|>@?9bx^g*xlC"'.&TU<@&p3.v@O7/+:z;f  @/d*( Px /l `*|ŗp+K*YG_E}}7K~s ˯~|$YV%Hmkw.9"ٞrBO0H9j6p8>LY'b x5>, ̞IιX}l[OUZdxb^ƒBCqd$#|{p0a?BG< ZJe$-$Z4MbW媝P\ErG|N@Vy?ч3S.g'}\[ꓼ5Y:i]Ӭ8}s/ф빖zgp/߇bGSi_gLj͢Qͪe`/_M$JӼUtmjsv }Lx? D daȐ#=2dd!"cp`C qk`@8n ^l ~B 1X)).IK)k\ L 1ymЏ(C @ؤNS]?[=,wrNwSEng6S)ye=C~[ޙ)$NLyr0 >|{I|A6|!9Yus_WLe~ ,I#Hp=>'yM`]XY6?MX65O{kmgW0j8ղM,dp dt `'p36#Q(oD l*ġel? _,| @(WyJ >7IeR]F1k\SŴ!ڭ;W_?|ݰ^x )g=3¼r3.yXLWZB=~\ٽ\+x]3il>T5kA{b^>Sg]Qkaj` k$[Y@퓧&/ǂՑzC0_rN ERwFJ1_.SSX=va>١lRV0xMC`nH[rW'VFr"o2O!蘇 I-!c\@ @!>D9^Y @^\M$D{Ws>WH{hn5H 9ow2wB`&SݖQbGFX= <"?׺HUp"&\__vYR8׺+/3?Źfw=UO__oo!z<ݝ@/*:Žyf}\р7CXd|uU&>afo46HH`7:P?tg>PxAIhm *( 1@2CW!"gI&^fMu̍Ǚ ( C ֪UU\-R)1'Ela6ec-6x/Iu9NPux/L;Iyj@r]/g8l&;^+90=D#3;ۇاw%ݟh`HFWx9CX$;:FV,blϲ_d$`6k`6 _l.{d;( uYd @`yq,}0>ټ%x$y2:I7@ywK2unXxc۽?1f7&hq{%o7_Dzݼ/RHB˻hY6RkG>z4h>fe1O,C|ɼd>z2 ){|m M?>93?>^A 7 @zVJ`R #ދz T'QK/ Fv7Y6A~C\5"p@?\Oa4/O=JM2icGPa>И?.-ߺA}{,6^mK|kqYatN&''DZzO8>vE񙹋{y%/]8.2d";~:/(#G Y =G/v$<8SMtdV]e6tB_PqtvB vMHHҗ]a-87`!6J6Oȡ2@,?;Q\jHAx<!J$Ȍ*ܵ8lab̗11}ybOucQ.ӯg.vZ%qWh¯^gZz=6۵go2N_&~u7~Պ?Ũ~wt}hbn+e^/7=zB_^|u**d8?&ׁuWqbB0\pl@ @)0`ΗDAL|`I`r_z-l ~(PcXl#iBdmEOsۘ_1ƬlEhh sמo+39_I!amo 8*i/Nݳ@Dza8!r;ʽ 4;k .=o B!~F@>BH,);`#}`t-: c~TKо,,N$OggS(LI?eiooaklABYRTTYegވ\`7O]!7@# ᎵjxFE5"Ѵ x0: {FWSm-g!pa/K7?U;\=)r!6;')ȀZ?x6兞qg>ߞav+o%z=UMkَ9ᾙ>v2~Y\˙<` D[_q @P(@!`kQ2/~'!IX|ySoQ(o&ɫ BI_v", ,dOv7,S/X\Mhh,ɰ ?N Fk<U.b2~FTm&V}r1lA^'h&[)Y^9;]9(۵^?'zwϩГ>gr(GyE(:$?YN33Grų[nȆ=MM|f9u" >};d]w&Ss_fdfn}=^&uh#phC=Tn5nx  `jfi[`m`ajCk=8'雍B`ZO\2 _ H1XC6LgMqG`78/DmbtD Po 8([9W|T@A@ȑb7p=;ormvy"ǜ.ϸ6x7xM+.|!yG۝ǟ5vwmd/ Y z8S=uI2l8:3U8~X}+ \Q_(\_ _5}}`jup&Y 知/ps:Ǒ |mǗ=])AeaGlaX&Nm%9'lx4!sv W@3D }7 S{N 6!z0v}u^w:q>|'j"b$&9 Q,;@j m'LtrRw7ίlablKAWB;vDB/qbr>Z O8v3T.3\2iVx|M+\/9W__<< $@~P務s˝V|O[ͼ^?om/un=O._]ٖBa"st5%7*bkt'5+b˃brۣ\ (_筻|˹|9|_V QC\.ZG%M*D|yaou>]_;˞{^p/~_x LJ>]A,XIm Q9~aS(<|k69JVyR/&m.᯼⪯7:cj06]GsN ZiӱSR$bHM϶__p>緂1 c6a˝l iAE6]PIH9ߠbAM0ELCOggSRLIIC6tcxyڈVqKXEOOWV>V3GWw?|~_?y8h`C#G'|hwM"c_ n 5osW{deu⪏>: (w!E߼^BI˯xV8bOw㻌[_>İ\ iovB̽j/:~8iz]uN 9zzq~j>mﷅW)9h걠yVuC%fc!nYu|46^3] ^{~?4<ͮ-Gf}ߤʂu;vlU@/oAͽzwf|.pFOE[G&7%q0oL8}}6uq`id,dJ/ӽi 7߶y|0 * dP]syWw13?MAPFs;O s7WF;Wn3=qU o5S@Tt6Tc"r2iw]I.tiYpϺ'U.,ak 8_ 'X [g-%QQ >u+*, p[W>f, ',@w(4"7,HY<p?H! % i\B t` !E1xq~k.4\ϹӛL>V! oxMi@rvu icYC0ZA*ּ!`>Jç'BF%N;Y,<@z2!Lz[}Ά3Snp/V Cf}60Af[9g\ÝO' B3F>P*pk@qG  X#K`͂x#oFQJ{޵wgOpm _\o +4B:nd"2R+# \-n/o` V@w3qIlqv}:Mɣj=yy\ fV3}|j}pSiFƔ0 m"6x(3eYJyq 3@|}ߓ7b-8cMIANؙٮǯ\s-ph^@Oe@P=OT#@w(c  @мQe`4;D2+ ; o>X}ȩ"&}E@ w%5ޞow_)!_h2 zCe@);f>;Hj(tR(*G:c 8 N8*֧ ` mm SdNjyU@'06SP@$R@DTOz?O$ ` Lq6n?I^ [X>3^=q_!F7XU;,? lO | 7ݑX&[Vp O. oqX=RHFED4$SH޾-'0'jARhPg zxeг0| ~ɕrTAHY\"\Ŝ U #vtm;cs$#pd \_pRs0)@?H$ +߀w+@SP]x,{-,hڤW ɏOo7`qw7P(3ƻ^7 P X#SiE 9 %h9$<тs]VuO˔C(1Dwry[v:'vPJ.@'=*0wڲv5h2(wwZ;Ljk,0GA8?=q).? ?p @v;h_~a /];MЪ@'"0J@+F /Us1y4ol^V@e' WUɣfg vu -Y6?*YX I@ժyLS]!#- 0C~rY+ @}z *3P4 ,Ơ ?߾X/Ddi Yޙ{{brD#L"PUd23k8랍ӄ>1,t;}@twE,/>ǿ29-gb.-4JdyzdT /f7?2,i3wۖV $ADN  @"nl*W@5D @m Tch0t@OggSLIY/eA>?B<@MFj@_X^a[WNL4G\}¬I휗oͅaUh屄}ׅ7gf.V)۲{^X=v-m9@MwU#> |,?ThǼK(N]E\lTOY-VOOVD'YܔvxŠ-e%pLG(grghW0;}Xa|$&D)۩&;?WCer>]d5uIdY42HUQ+07! ٭c^D$fnN}oj@X\]Б<4=6ߌyX'(=}DmwbkYțǷ?"!׬`K;gy, ' |Q BLtyQQPYM "kTU8_0(jwg~Q15~WJB1[jT?GeMWW ws,8/c.d4@ HxJ" u 'n.>~e tٚ+nwpt0)HP;h: 03'Gד))6l v3r Xno'U S dw48h'hTV~}; p0b@KE^SDE϶(0ԸJ@'`7x^/ .ɏ)_0 j9G.Qp΄#0ս`: }xcC' `; 49PB,zDEU1eSyѷh0'q =GgSN@Ⱦz<;C \o M >PN&w"=yT!?m>ƷҾ\T|˭!] c` He W x1>5KE,GV O; fhGPUoŪ# "~oU?hO )x<y_.tk}@7~Uot\%ߜ7, $Ф@?McW惕F@i3:󟇼A@!i͡r 3G >pV?Ht9)*Eaub XMÃ; 9p, 6myB7 < @@6X-$ )PXf Gj! |5ǁ<wJ8Hr#Lb\lیQWcWqW6f^|GН}Vr,4TpY`][BK_׷kœsW|P׋}h+*kR2}YhO3(l'S<JÜ3o%CWZr@uWp޷O>qj;h3ĵFZWOq ̀88N @iPq `o|:i鄤;Ŗ:x^~\5sNXxV~_<exȺ଼}TH-[ѳ8$j2Q%fu-BcgA_1˖ (cY| h\Z% g YXl >XU[7Pwzf1G9|~0~|e F|Xx+`8HsīEncamgcûZ`6o:E(6^]NE`Ж|Mrl>{g_*4rw,-qLX%{<א6TO ]@o {Sdѥ^T#8NY#8`Y ~*a$N?Aqk,!>$6;}qp6pTKRg] }4}7m=~6g.jrI kOKvfלsg(AUd*uIKYң%-@vj3_\<=]tW""*?jaia`&y9kVF q-y9;Z@s4GuADtW=0:sҎX- VoGlKU>$ H%7C .!p -\ ?wGUU 7*,Ȅ(:w\΅LCvGUi8 smb7ؒq/'PGLQRF5<ջzJeXebs87k?ٺ(2[ÏTإ\:ו4=m/ƳV ?>(^?ʵrA\\_e+p1?)G * ʧt}>`Qi~UzxyqiEPWiWJˤI+Zquğ$uM}}K3[MTkhTt%}3Z~/Tn`KG0Y49{P 4ө ZuZP/K2aG?0tlvls5 EImǓ$a*`ZOV[7`n<^'x?e;Ϗ-+;OggSLI!68;89EHRl\POJ8:899CEXV%`V}gJk6&}8fC>p17*,"d|҈@,ގU00Tu6RW]tGtvP&e,,i,B+UT&^W_Owee0p:+K BDs'a  J4BfkɜLSE s NଟJE;N{:CdN =Q "~&e- ( )V|/MSX3#CVjrEp$ Smb:N.;3^L}grezMqvnNSq|kP+^л:ֱͦD!}w9qwfp6?y<JorjF⁘3to V%=W1׭sZQZw*ᤣ6ov>Z?xCɅx&}A t#%|?;F<\DD?SD:.o%"Կ>ڍ uj](r8 qG@ZֺCm\ǻ-~wx |yW@NeeN~@[\.~.VEA^h]`ī3U.gд`|ok-z׵mk@;>^?nZA3=S8?UKXg{4V)rhu W:Or«i2+q;QM}= c k/@ÒD7¼/es`7BYߵH,t\mDQ49SE7?eP "ȡߞڽ~9&=]`0xԚM9c%_/0cd́F/\+\E+R@s= U$5~ g* x9U4|iQ_>0yVkv H_ YJ#̺-ltΞQVz_^_Lօkus862Qa)]} $蹫aG%i t`KQ; #0] %xNkϖ%("J`I 7@T4w?=?*@{Y; ~)Y6Wo>][q`h%c^~S@T\/%n H5E B\uzɶ EOjMp`?\p n|)-M"86|t_%_T?8zޛɎ!$l 2{XEq/&YY^pV_>0 LvYdp0۞~@P.;[@L@`yB> *Dz x F^mJe њi&zϖ\ =hv6|ŗOuǓ|~RH! g d$hqb)EiE?`GC0{π5@.3t201@ہ\/lNsӟ3itBp섡̳8osJs+毭UбvRoס&$bgʽHqr6'( '?`o,z|c}2[(?b}6o`-~(ia-tY%$8 b9e[)v#$)Îҗ/p d$# Y4F!UAXv}~NGimjǯšvd\ p;>=81zcA&EN(ȁ1y > pXz?Vp0Θ2v5>g3 Jnj 瘔:̭:@n9D0w JpOJ(Ǡ  6&1ϛ+i+AGb;px㳿qwjp /7p5r\|G'qX488ߥ#?rmh[;K!gB7CBص%tޣ@)@_-\vkw_fn!(.WpmI@YDSQ{)`Lp A J[^} 4 D<oA>Z y7@U,Nh/'dT* *1H҈H?"|{Ua,zG' N:ި2\֥_b'7m)O΂b.;0ZF5uLrM nfV%m]T!w¨IPΜ[Tӿ㛖ƽ6DdnM/ɦ'$hً(ƖB7s|03~1p{pE`gФ\ne`ky2^E+;bH/=Sj_ qw%9{B ϠTf=@SoeGĥtߍb0,%#PF㎧#dfjMMBS`GuJu<}-w[x]GCzj򫸰HLo(/o-# LNM. 6;Tc 0 90*%' 癰9+_OL >xK]ُ'azeO'{&6@ٱۓb9yz@̈́ԷY ]j4 z܁FHT?|*F?K@ed(,\y d[p( ~xE0[+mSpg (ovjr17s@?tkAu^B?@"8@2;H!䠁8OvNjk @BPfEefp @;9h? _ .u.%>*VT|dAk6:惞saId0 TXD~P CB5@ xy3d ΛOG@XNTZ.G@EyЕ'Q43jMi:X (OggSLI ab\p_X76:8=6AH[JF@FG;>h%x, DT jb,oBز `h*x#XzW_6i$@A%!"CK0O\m镞xPk!p_3 -2"P>BvBCxzb% M@rWY͕Q+M3#R0 C.v:݀t9 3 d0yW.A`-C,8 е1,_v/(_1>Ct8B'@2P1_e .D>+UDAW[=k#I8Q 2^HEeC d+q8%34:ޔ+wpv vm[1׿93TM &e&)/?uWv%$=E2W[nBю {vh3K=:G(^[NyF:˹* U%DT(9:j^: *+ \ߍ8c ?sv؟9hoB*\ h`ֱz,E@oG9t26)ЏgE@:ڈ6"COULr F0H!Hvv;8bGU_UI ja-3[EA|$Q ׺&h\_ŗO`S D-ig&ˤ<5P֨g9!`Z_ 3iGȃd| N.[L݊{>Sj -ԗ5m+RNۥS9&3T!zV{ߞc$ɏ>QYP2޷/&70ϧ(@L|;i ^ʧLL͹5 TE5e+ԏ4#˿2F@XzlpO40r$v6hE#~N\S 2vhӭvG.gJ7cp_/~ (%5djP^}P,]a Yݛ xMzmwҤdܨ,-=:' ( =?#t&$)7J`80 G~2Iu.R!Vip4uYݕm |\=a z[,&Ԁ>WT}CifTAl]@bKBoF XU o &!Yw@E@/'Pdpvba1pkHC&79{Ftxpc\ͲU TE)oMG_#춳/Hxb(r4@GSq;G^rzsN@[<+*}OuqN%7GW?s!#ن ߾ٗ3]: v r4tS RT>Y8Zxv5LRgW48<Mg3 ʍY4-(I6Zk@Xߘ9l}\ //kv J{T JMybW*qyP Ō7ް|oܮoj5\[r\x~KB)EM+ q{o1q'`M7_HdyO[|Ι^K%>_Es #r!yt>[~7|BM9;w%1Qq` 1߲[ ncy!㠃>,Q *Zy=Q\oTV-椄X,V47#kqGOo/g35@nll"YL(/s-SǑZksm5S EЗ? GQ2= ɩQ#q 4S AoX**bٲ7XO@7\۱ħ}? =~*}|GTB-fBX&-[xH9NN gL+4ϗg~H:I2Tۦ& 'ͽS7z}W' S_[o'pʯt$@DH\f`>Vn0Zߜ^7|aU) I磪J 0 (Ԇݠoy`ݿI%W.{i,x?W Wz:!GMVP+0aؿ7F*]V<W|xvYs~M3 2/sBZKYr _%v>@!lqpwuU$ꈗ"]SA߽q S;X]%3f# d I /B,A&"+8:, VNO@xNi*OggSLIM&.(28I4)DNr$<ngtҢP$59+GSaċ3zmmoR!*$.l؝$l5jOKOg+#_f<oYD%m/Lug?a8'wabwAy0~]K$ ̕;3b<?ioVjx*od'ߋ _'BQ +o6l8elL8 @-^`HFpnɱf*"{"}z]4<\ߌ}+/4@:GfFߠ"AyOW?W]eP"Dݩr#UOBL5 %˪ 8>7C\P(eV419y|/  rG%@P"*>r]q T8(( gc%\m~'-+m5.L Q$@qis$KO `Hob-.]Tl+49jH5/`Π'LJv8Amr%\V_\g+IX*W/e2@p}5^dxLg}Rm5Qd#wf7cN  xnn ^gCi>qB=7ܟ; a#z-€e P*X:i2_)"[Ck ;X^{v{kyL<0ߧJX?ë[X‹QxlU4DbuHt`jӋ=Wj!~qTj.J׍2&#\o?_~%\G5(]0S 3 @V 蘧P<2;@K#?n`Ï+{vF n9%dK&@f)w>YC'~H 'F~h•.S6gY烌eW@I@<ۼ(w>mC1 C+v m>}Cƻ]JT;Jl1.Acvf4[lΦw4x=c>ۧǟue/gۙZL*~,#I7fX뗘ldj~zkf[Oy5L22q}>/ai45Þ$LI"̀F5j>TnؼA*f06ȑž!zSS@DD? CENȞwaQ4 }pNYepMX5uvzuĚ[ =+(!=|rsw@љ>g=òQQ !9Û{WvϠ}Z%bVfFixr:̥܁8_3TcБ`$)S%ꤟgYz?Kd?Yj$n5v_' W]ْ L*rI|%ߖ7 w?~:dёћZN@p# ^_4K/p/7 -@H-#P)"pW@9CK.5}ی xY,?.Ջު<އ2>5}k \fZzȀWVmݛ%߄ל|އH=LD;2MLQUOL>O3T_ y|bgu}C{HGzr*RoբTɵi%ȟkK  wUTQT6DEEtSQx`A8SDw[w]f :2I<$kz @#+C pss8C87/xF˒Ӄ/,(A"O Ĝ|gS{VmneD $ 8dY<H9 ?y"Qտ9g`AO9?{'UD#ٜɦ3R_ijo2]a\@FOPDDDaP>9_ pOggS@LI Ǻwz{k`NN/b+}>OYIzw<%υC㡾PBxJts›l,[~ʀH}.K9qtnV|pJc& '[\:A4v}ѱtٰϓB`>;fy`y.s-j­qP}f k7 k o|aXW (F0p 0@ 280Ljh|^5&4BIyL?a[;=1nHo>;zsq\sм47 EC%J{,/uH F`6Me]%wgp,wٗ&ȵjPmKn(:n?K}[\zDϊe A#@^. z͊ݴ!,tw2' 4iO3 o;6T5]>*`Z&|_?}Uc[p ޞ=q"`Jh#(,UU( R,3tYhDIψ1^p0~dxo@Xz?'Àw`57bu?'łgր[mkҫw@r Y //7,B_u;F!p. 73(fXpoo XxwK <Ok1` xȱKpg ?<|]' qo<}Aȶ]~ 廓h=yrPmE t %ʟ*PȜ=yo 2b̗--m^n6Q8N!:W0>i77T U@=9P%`8ouٗk&W3z;`F?{ IEo*@ lˏz cAd?OF-8>GјA(8<(UxF#ʞ HnH`Vh8 p%dY*򼃾ʄ7|v=r~d|^wpgӕtX\6Q@U(}SkB @ 9cc>}<Vە{O= U\9%Ι̴levM vR _IS 51%/r5LJH4.g>N$HT 9Nȵ#o@7:x:fn{{<ཟ-[V_e/BldM>6xծǻe :=EEN8_ O[r@w*5Wt:j͒Ib[_yW, wF?kN@0]5+aާ^s;;8~ȺyFX2< @7lP,+\a"&#`h xh~)QFvUW #rOl?Q}l__' W яS`rEb `Gg9e]z9wpgB(%lϼ 몳zx;͟L \uܗK)vJhpc߷3OJ}g^=gZc!\3L2}NXwqNl@z*T<0>>}-k*x^x{k3YS,4 oɾN1FxZISWxɔk'4ng0|yO.v{Q}|3M[;ؿZ^*B7n5]O*O_[s&Xsÿtu>Rg9^A,׿UI@ֻHo~^of~6j`1z8g؅a~gl6{:2fg&9G4+(ɐ'od? X#B-d+Id6dI3嬪8FJRZd"̾ d0cV@#0ߜ0V~:ʢ=XyfQKnd/+d_S{vϳ5 j}>r$O_]VJ쯜) *jg$Bi\ü w#}1?1>:"ulAlEXc{ [wEyڧ^)1EkYHt? CF@_a(je~)3i"jaS\ tQR]/A}}y;sV7'IP0@4nLF'-.B8GqڶL_3>~ ߤ,.숚1d).>}41uj'췾NwzbZZ]6G\Co /0y_|0Uy-QOggShLIt@UNQKKO(h*`D4KNba(11(/^}v3 ;}_@ ]db/Tu=7/c: 8G5/w4=>4 &}96i}䰘Nd.d]W-FլS\Jv{@ʾˮo,,|݋+œrn?Q7Tz@8cPU Ne=y_j]U~&,ok^5o{%VrՏ6E#B ߭@DȲODd.ƜT\51rFU^moY=/tC'~[*/͵SEx.ap aD;έ|ݙ5 \_1MO}_Y~d~i={?wp7 :ZV1LJ6F QB0<0vg$o=ӯg,N6mɘ#a?{E+ >zrzd])> VyJp ۼbl+!|L#7)@?<%CLLzoJ+ܝ(#}B;~C$߿8ߚÿާr߷ j}vCXxwzzsonyq&iIɖJZo֬` hb93fYȹbLp/v֔){vs֢̐g5)J 9ŗ2w5?M(sιoτ5W7ӻ 5 d>=R_y!M @r^ V$WeISi(csDD~L}xRޞ`5s9v=p湪y3|TV2 Ǚd'G꣏ngV^>0T\/eD([yeY"?.)2kY(+@XV<,q)/(`3\  ̣ZޣPK2(jɽFs7;Ь,4x\J>^A^_?_tv8 GR߂o|u?Kπ^wgQ@O 2zCaeAA_vD|oOv.@^zc~ ]QΚ.q&f?bvC.8lQvfPs=_p3ʻH(^3_/LY W+`n& @E3 Z zɛFT }PW yl (Qq~?h "z ˗ZeFֶNv9TYɸC5xܕX 80÷^p: '`\wn @/>H?ݹI; h߂˧0+p7ȟ] v} .kv dNO!F ^Ѝ)lThNT.˱wu}7>,3#1+cαpyOr pS~84[S704O{D) Po>Ipa9m1 iI ~ $fT [lḑ/ח@ 9>1TTT7Cx)C#.^+k> ܓOW8ZV~9&G(WSKT7:fYLKzX=0q> Pw~29h\nKg/c8&Rc;o\qgE>н?{Ξ3-6V%  Wg{me'ܨׁA `aw2#8/ 0\P2>Ú|xz-ܟ ]{d؛*~|M}u@ɵPm ΍;**5ޯkT8n@_/DSt  O_=_ V)&W+dI/4,ȏF[g3픈)o >R!_p7rpfDh__G) kcU@?o 0RpF8`-ś(Nj_!@ɿD1~w{fǿufy e@e/|&gįz@/K $ɐxtzP֟=>)X_=rRy%/2Z} fՇc|: /[) Hl*3G /j n׿ 9Iw}.Q"Z~&2gy\ƳL1TsA['#>?`7`<{ x΅{bAE ֋KWf'"g ep m_!/,θ̐o<XCv=( Ҷmu[אIK^/8\iiAFd7=w3-_8P]+7)+0wzIR!ҥ;x1C.{د#ׂ|;d<x~ ~Rd}Yo[p#jȎU@ 6φE~-z !|PX Q) C( e&ي:;ίgt ϒ%x׍,@72S9O8ϴOJ!LjЃ"e6>B||/Fw#tE1Wo9]_g`[^]-9Zϟ$Xqe]E5ph:r~.V?ge]Q[yawzMHWswփrT~DyWx]EEyģ'`+[V;?ۍ@J(#&'ốC ܭRGIw@tzHpWTTP,^,wOggSLIlATFkZWWXLPdb`^Si1  .`='.-VU/Qںޱ~[(lN/Y}zv;@i;cU}B =qy;3~ւɛ}w ZgjWi.Lԕgs^u>/kNxatnb7'..)vkU?~l,Kd2L¸wf2 sv$TuLۖv7B4 UW6SH*}ʙɭSL#e0S@j?{y3W=M9M#"8FloFnfn_8x2 SsrQ) ޴(`^ EKtc a9$)8>.5=1?bg[6>4pMGsfyJr?ݺa+ؐ_}_|Y(=hI2DRu`,M \&S'K>;O8Ba-@}7_Xe`bAEL(#@C$xoJ~+PP56f.0ᢜ)SU00D׷vݻѷ}~^fi[bDCKmsOo᧺9Gߴz4,òG!ĜC xA@f z:7tXco0!3&\wo nC]F_h!.}枿B6TjvkY O|[@NBStx`CcAH`xjxH|c kU`Ҽ h^>l^)r oFI8p<8~"26[OW\(B09;DQ) fɉyᢑܭ~*o~6Wx/3_N+OP?\J\[℄W_2XBj+:;E'9g(BWπl""Ǣ $h}{$0Cf|߆޴Ⱦoz;[ 0wAZNy>-+]Ys& '?=e_½>\Z8#իF $p=ϻ{Z+n5u#Jk}F?sւPk__}]20Ik}\ p߿?U( k*Y}b  _ *@ ~TϯX\PSM= fIPpQheijt}"(H޲H^ ?a5)\owps ШNP8w5XxVB5)0O=5kvݵVݰU@D4}<Ie6AJh /Se=ʓn M(3WbU{ZTP?W!R|)B~WDݧ&v ȅ Y*s͟`oɧp%6YAPx -&88+;h֗<n G*U~m)@Ց``(I?mRFg>+W1`䝽囕M _h4#Nb"zϼE<^(P|ZYmXT) =ry♐C8j9^*X? a n(?.tf rw@S@6_: h!dNX|_SQ9~g(׏`Һ ^ "@% >>`;1(M< xR01dM/x2 .\$ƼpvOݟM?/kl+ݹ9QKQ! u^{Nn\ ~9`l'ڮ'2wG0͉c΄f#M~gUcȼG8JHڳzB^ztpPw Hg\{)phM%Y 89?SZLµy2٭(J_,`qdKƀȠ@dx& Q f:aY ~zm윂R#=ːeimӸ&yԏ?+#*1S/  ޻0ŻR3쏆ɀD@QQWo0/ ?q60 '= ުmކhP]}*M6 NSy?k(֚~O_,p=>taqj@=mzCꔎZބ\t1Z<ӽ>MqPOy@0~LE7 pQpzl=I_:,އ{%>w|mn7W @|`b;ys?ꓯ*`|{vC R Zft 4MQq8,`ed.᷇ ֪2pQ3]!KX*wﲫ3(JYL   ?c5/uD QeKb;9 g-j/fHo\„CB/ߕ킀B4G%@p`HN-f蝏FnX p 1ME__}5(| mEf~&o͈JDY^>b?ϋf3Ӛ `)? yp h 1 5-n] 0%~mNJU,rg,Fa xg}s<!qCtWL!Р"M l?W;;(!x=v䃍vՏ DwZ(|R;y,u_@VE3`&I'6W#G&^^ny9َSlr];0Iҿ}WMR&~<_UTn7 phgV NVఛ4W#[M4]Q/K }i!va;ы2yXp~~9yDS_`SK{ Lk.w`="]V2M| <ٚ1珂h{L6(,'iƤ'j F;B> =_`@SB< 2kOggSLIO]h@OnN_c`۪(&)J)wצl1hW#Cw_u_4qT{->黑僶o2]aşee|~]Z]6xi0˼_yׁ: 0{C= PU2z(进|]\iFpޏV=kH]2WB0-Ygg ;ͪ7Q,^ZntuEf@ym/w ?l^9o y6oV/ %Β+"'6<m p=H 0=(Yp)y{-8,a.2uj$=RwӲy0r/o}hu{5% X}4AQ9.g]g|YxRJ^@>Z)*R 3gr»SQAuτ]w/8 zX]Tˣ[{$Y:A|\J<k`3d@ׅd @57[?) ]@ nV??צ0$u@C@&0}?U+4I`R`Pճ{| o|~]i##C~6ǚcf=`l"?zݿc< xOp~w.&!P{~U;y?Iϟ/<}b0\< aq\w|̍((5]wU=@Of8n8>>jiuV*`\(w+1 mݿ|h} \}o1 9gY0C5 c׀ /Oo^YMXC-I]m@n ?֎ j- _ ނ[39qc[hPKZ8*,7^}}|X?J)Y,Q!Ms6w d9"L~!(>'_Z]`Z!BhږO1y&`6+ &lD4ݩp@2H5@(㿯$.&8:tq$n~]P50nO8/Gp>Pe\`0 !i-oׯPWo ~ Ru9['6K*p70 % 7.yZ%@0 yo9 k3v|~Fg۷B\DrP?!G:K(KₓO:`p: F0-NAuT@ӱ [Yuk$Lb{pQ8<N0 Mr%M8Zqݺ'O| K|D_6 ?`I ; je@3{Pu1@b7@ >\I?o43lbOlwzrS P p,&pZW΢HP1umO1{?Tu e*`e_!ђ WeɀZs4C3~f@nk!ӂc~o[V._Ll| 6#8ͧgf`+%3&{3{sֿ Pg{*/*|w( pe|-0_N`2 )/opU@Z| |g/= 1mR~٫iAQ,l= 'Ė7pnҏT[DbD@8nwÃ;nToPDiI/B!q RnM'wퟷ)j$]`(#?:zlҾ/Ј U%ߗ_,9wFmHnp`2 =^v3_֞7fn޳[?6/WZڟQz(PU%?o_K|uÛw7} 4"khEلE_GaUݝ}~XWkx,@hI#^\w?/I._sEWܒ38Eݽw~$\̔h7 4YcEtw_ tiA@vTp _D _[cc @Q嫯P @TUD "@`~:|K~<붙iჭSe_b~F(;7ؗ,_vp.~_F+TK4:e^hI`\>%'.=.%E(io~CTob)N5}n r[^D?TTHDWlR\bZlx[gv:;+09~Ɵ~(̗07,Sp/|o4 FD?_KōǜRwp Rq~q%bI}ڜgy9kX{_@\Sr0l~AyY*:wVk@LQ7h&@cL5,#t

    ]([}pr^4N}xKqaA,6XN adH4F lw>{{rmkG^>hO/Qr5UT{Z?q6"9Ӥ D=iLͻ9:<-O:\NKW-tlO WH۱WuPI|h pxZl@^fE!* 1!ZD%M,fm~h}xFMˏxزhz5{,;=]<wP|dWp@G|hpW9e/}f#h~@n~l,+EG(@Ґg&4)W[0^MZKm<'Meٰb}1z|GCb~]/xĢM팺Fm{}t;31w+@7ڱ_ ]b;'~}u$ @!OZ/ 兺W,:l6߯Ov@ J;di{3o< , @5saW5C,K= _76GlvJd}`'f+]^m%ugw|z5{GӅpuXRamC]As@^X  0 njW"N]0<,x4 ~mKX ۴OP?7_x?9hDxș`m -!C$ c+@!-wt@. ..w99=txύ`)=jNė62)Vku:lW}UeAPι7G|}a"~Q]VE|Qaۊnpal/ijaHn'\<' 7+0-L:>VTYP 1M rr4"r}t 0]"pc צ#I`[ \*` ޢW&U8ݨu( Zh2~ %A,3t}4)S6Ivu][s=z2@5&gWj3qn.\gZDŽ[K\٣6#-ʋ OuU+މ풘auZi;?4lj.a,s7t>;r#Pڇ/V:7y٨EqΡ"sygzGϩ}KJ h0 U ns 6~ \7pT@D,  7  c-a"%l0{m#a=-ͪ&FBOhY I?_8}ۗ(T-%6kIѷG q 9{:ϺS۶d S#׺ՆKpr5\w ,G`7>rÿk^ۗ bd(12ON(ɩ/Eq@o_yWde ?`T~6V0,@CTU(UGǶ m @ ◂U7;o`tm%E!MFxJv|xY?ѠThQg{~ m˟gpKCogXǯק 7,P8~s}o.66{8sVb}͒h95 99{G9볤=+AxsXZP|9 rg:]7+dfB_}fpU|k{Cu_i $pϰe%Vve5y]Y[ߥꁷ!rBrqx"w\zvzikةc4MiGSEtp!k)Ԗ*raOW ūCP^&iZ1bUMw<u1|gC7_T__nEK!2ykNq0/ڨުOG$qT0J_ֈWb VbE&ּcenxRH~=}.4bnKTo)t 9/ٸezW뮣uzmn[lfn:~{qɣ#@{=nVz3:Ùř?C$ <Ub6\dJz?^GL]P|rz΍SYzu8/* !7 ZՠĈCA| ]"iԥpJȸ[K,Oo{-bV~"%@"xηB ~.󍿜wwx&C ӌxsު@(>!$Ү(5OxسnRƉس9svM3 p FSs(H/~$nGa?򭷿á~@Px, (xI]cϯdQى-@4,*A"蚜 <~Yo*:hW"&q:`[# Xr `bIm;v/Ьh=JDFAOH$WC79;ؓm{_ *ׯ7w+\zy\7|b_ޑOe`]/MT6wyk7F - +\q0j Io@?@#L_|G ٝqJ[qiuWAl@_G.'Lߊ#S^ i6hH6_ W;&͡30.G׻FP"nRx^u#OH(Pb~Ͽ=ܙ6dm5s7ED+'aЌm?5OzOji==VNrz}6uk}7Y| ?A12 OaC.f:4?L&}15p};ժ氯kcU>U-fk׎O>Q^m}XPaN  UuԾ6 ~mH1&Ƕ x$@VP1Ac~ rQw ~ ~/D~ZsLZa`n>JW+3~N6ETxu3fk:ϣvfmQ}9;냗߭~Ffx5\ (}S};cc`J(0@ YjJ8@T4^ [:k/zdn722k( "zAm˒d22 K[~ ,QETA)fJMz&Jdž\=r]h5kx ];v!$u|_ǡǑ :?N<ƒ 3C~ Kg,k  hND 㤥tl1;vکxxUphpá7p!a.RqQy~m;>3 Jx|v@![G-B3GfRB  e.9`6Pc&6/r_GY_tdK=s==7@ ^">VQxT Soѫ@ xIA~? 7+@oH `Ch2+]˛VU qYҟ]V}K|]8SWxtn^4Sps<ymc"HZ,޳7Yt2nrbm< w!,"Ȕ9U ? {5g{ ӃJa t'n. ~C%' qB'>#m-@8 8R*{_*E8@ *\_w3 )@yWB@U9ZYk([3|3BwΛh x>M,ì52MIWOSlA&oW7{4 7  pmoWxy !p fs K5WZו.h@ NjMB} ܻ,e- p+7 HH AxUr<  nc)cOkǢhdFRM a]4,+ʵ71 YY4v;eYyLtSPPrv=XIzICcGyf*l$z;Tī{u:{ zw{">lzryOO&jh éӯ/8]R;yqbń9|L!ֶ&Tu~5MI-y,6rMlmPq* Xrl&o~U/"k ŎkG_ԭz 3V+ZS8yvn^9Λɏ{̓CGxOa~:EZ zbbI^k_19;zr<ƙZ ?;sZ BS̏elYp{{zEo1gmĚ qV~OI[m!9U16DJPq .|p1p{~vN@@"1 "!>7 o1"wYyXٚE9 Lg d~\M!|mjw@UZT㦳5kD~?,qbNriqOotG8izIW@6 ڗ CO&gBEɁh.k֦,/*=|xߞKdwUb..pp7s3O՛.W<,,`גЯ`e<LJk )y_əFj hh]H%LlxSMAe]>Y_ƾ, TTo~OggS?YLIrj^WeOA95jXi^:95tr[mQ&ocBd] P@f ؞AI 7_ֹl^Zp]/@P:}sPT u)>@^sA35xT0}(DWg9Ώx<_Y;i|UsJVߩ+Q_? %M'>(k޹uZeGRs=A$^7|uk/}@2NZDC8?|{[N\pjN Hl^_ ZOWWST`G@q^TP/~L)">*:IUК%W 0tf x%MZ 0. !g1)|( ŝ>1_bAKNl%ΩwPQyC Wpt. `߫u}W X"8|~C2N4Beva{6 f*XRE8LS&\l >hp(J9n*m7t7U ~?I8& ..ff|*<ȧir8 0tlݣ(٘/l#@)lB@e)XyX@\SQJ=U4H&!^evLhf#f,6峗~\%H*61ɈX*]g^w^AnxkgK[1{zx뵧T{7ov,٭3|9/W/GX3JS`?YL (`~iӂ,y_E3o7L?/Kh./oKR֢(V ^C:x473pY #9^jfo33Ypd.wi-@.NN E]ڤ[@i߀Dm۫m=&*_}zȿ L)ݸl `O~t3@ ]6A/oH\*!{39`F.8XY_*+i}Jpl} @,@7?`Q  hF8# Xƫ_@@ɕ# p:.#B:h6<U?mJthh4T c'ڽ[.a~p{*k9b٬jn? w\2Iÿ.,YhrNӵjb-xot9/yk%h 7z*Hvt=^"*H2Cw]~,Z2AL?AYlͽ_d~ae CW&0h n  [?d rAe %֣$@ 0|@XdafiLފպ詙uћ%Jz۽|Qt=W17Fqz=NN*S%6muOv$ (Jʞߥ%[OggS?LIkx"789;:LGq::9:ʍ7,tTqCSq0hMRL\}ksqnї7"-:X5pwp#Pyr85ܞvD @X<˜3]{ۼpIvS׾kgUhCj+vb=tAoVwge+/_n\ 60Ϸ >Să/DgpZ٨ |Z(`z0 Ojxz#V_prXM .؊jmx> l,xv#IET@Jo=嬷;KziX%n dw7 |%%^(ꖁ-dfuߵR_ܺPV.gCrȌJbfOS i*@212,ͷm ȔhߥZ^b?;sԥ*ҏLS_`nٰHMg$̼83MPD狶3@X4Qa (+*y/}][Uڑc `؊ bx\`ˊ gZ)W't98I_R umpMFsݭgzi!Ҍr0vu;=%:w{u]ӏ"g)r*k_٩,,@K b>3b]ڷvU=NΜ,.mf*.sדu̷/o3U!VrxwZa*zWYLN]:?krMyFuȤ~t: .#6K^t@>nLS3RI&Rl^'cAO){{:U9Jۆ~M"Ukuͷ=NUB*6"nK+Ik}N rU'oe`ב|^97}uk.MS^6oy ~,U f>MT6M'H^ob_;~y+# OGPB;G^&cDTM"gxdzF7NP+J.T)b A #+mhEPo~ ȋ-FMe$ DET"T@z,{lx p#}_BE4هb{ViπE"J_/d󉿟xZ=}sA'6NB`Ce —T t߽ Qޫ@;Sg΁tGpafh @48M~XH(=3@^_y @VםS}wTDr` |^+ ۛ ^ !zr{k@Xީ`藁~[(F|TLc.1gXio = *PI|(POuM<+@ n5l:ktj}jϒĥo#d"t(Ю??a6b5@CMo0ooθG6}GgFb@+[pg96б/xϢiey߫V  -peZ B!xo-ЁDcgqߟiiI8ߵ8.'o]]l~I & )~kQ%?# v7UP.?@}^QG *hLA\h7BIɕ3ғ+8l `5avڌ̳Y?z&G/( { qB\Th sjxY׏ζy+5UUIx/<U>k%Ki%ݿۮ]}m{4 B#``(Wp9-H1jaq|teq@7 AH)קN>Ky_@O`jLVM܈ @?&5Vmkp=2z< c|~ԑ<ʮI;8/\ _&YUC?buDv]fw}Snz\3pM?9&ov3^Y㩷Zzt-S$_^07Y:hu OggSLIzIIBmc[USkNfyWvyѫx_v}Mepf G>U#sR?z7%[newe^n'1dzp\E!g1vv4ϭws\/߳{ƠOoKǖ-Jɕϗ8 {J3g|\L:(]],ꅭǸPX =L[Z=ٙB ޿>]ү5B ݤH+]J[Uʒ<ߗG+5@T@2nz w:fN~|4[,ޯt- Jץ\g2NDX8l6O1O=Ӝ@ :' G?BA<~%d`@U/T7*jgMfƖafa~=Wݣ/oYM=6J'45]b}.ΰԸX^K8V`xK4 EeR#0@R}vvu{Gs2~ ABn!yvG91o+.d}؅Նa|~{F}vo;`LNtreSPָW1Wk'bӐ:Dwp}M_o`[4=ylCtWMeQ?y_o7w\I xy/Edy7 ((y7 [TMd +7@ $ph`_dGVֱ0`os4zElHgu7PpLel7^HQ׈22<&dc̛/.˰oe_̠7,z)춐bsư@vŬA$꽫 >/oCvPNÿB@E<@@?WUo~zq!ڔ {@<۷oOљ5<pP0?t,V|o~XV, ޥ(Ȳ = @r,/ Hhx#;O`5wp(p rύ@PL^ ?a ȟ~䟴v# /ш-4̭A\DHɷ' r~͜8ijf3o'W.PƝT;2?-rtjo> H"׵c= bwF%hPȁWt\)@[@]s?vp8}ۿ:_'@ɟ>t_#Ë# "*mKv/g]8d ghpyPMkLVô3*.dЀ7EvU|c9K_{h@o )` o"__ԧNI0DO,6yOџ5³20k|sL'sn[_k @7yKKIQ>flC}v/āBɯE.} jzd:J sp3GPl{!O4 @]'Ïhuk[M o0 | t^WD  8@5GkX]ZL!4\l`:|a385:ŁxW-=GoE/W_?+UM("PuP8њ'n \`<9 JZ)7L鮛Xdm=~Z8glW  [T _58B(O|PA Sy}%Ax"uo mcIi(nO@Z@|Iv Udl>fL ZW rwMG0'Ѻ0MLò?{}E/,075FZQB[H=8YC.;f a^u3!VǵwB=>xJrHL<>3|X['(ǽ`a\;8+ZcXc.PW/xܭOpM_\~:7V lH 3IKQ"fY`p,>0oM@}))hmR pwhD!>5GZ,0 vwܬX0Qfj.l>vwc|Xo o4 nK̩*!"1y ]۔ۥ3T{y0Вr @2r?-B۩f@qSS mqe ?`; {W, /8|3nO'ҟ..O/aš;s]PUGZx/f@[;PF\o ?$a@7-x(D [kL,#2@0~ɭ,as [|{LV^pNț@s5_`ߛ9H4;)Xr*Zw4x?Ygȹ3kyW4( Ѝs<޻OJ !P6 Нڟ=?jn&߽WqB|dvL?`qp y{Y.6>3@ٟI'(t>3@PpX?\ ( {0|? 7@hf_> M K|6?0jXB)uGy<]&ޞHjmFјAnp})ED[Fć+%z0Nچo;1Wea9 yo%Sqѓos@8y|>?Xƿ.p,syQg DoJ9M#sn7j?"J~@ad//ă}:xXT_ n֐!@s|*Mo MZ6pJFP~""@h 4lxOggSLIտz:7@;8FKNyR9_N#K\aA9wZ PpYvA@7Dj@_}]H.)G8޸*t^efX!l[OajC5UB ڶ$o{ NH|t\mbI xL W`191@`8ҭp{|sHh*C-,<FnU_I,#,ͦTx[wAν~Ӌ;<)e9!#"m$Q˯Y@p>~sP%6`+*zBD$*z.DTVSߪ @P=Oi'^ ZTQ?%ȷ2 6\ vE^,*_~8$jC?ՃЛ{4\ tt)I=lFYX xm e`/ п,@ (`T; o [VU+ȗ F9cΆ<8rϐ5sQ5k%Jt~>AaZ0?Wz/?sQk42c j<㐍ZCh=M'Nz:׬6@ '^̽y52u׵8/sBOqA6a^Ox /z  ˣ(\ax%Y/ϟǹe&;nJń$t,\G%V>S 4ykCɚnߊ>VFǫGJQ5hݭfm|Dڬ Vx}}@"HNH^S|<'ŔuZ۔/*uul|uIpwnw=GcUg=V5;4|>M1SYۤn_^}vid1 +̯75uS8=}K2 ^^+ɵ3DBzCFx>lgWxb DDQ1%rpn6PG̈́3~x>v̒[i]tU cOkQ />ycOx]mѾ2ϪGCxt>#yy0Gwz>r3@8 [0C}bsnKEՇi##2!OQ_\w 5t̮*\s?b ד3m.$YYz@@(`zt / @D=1އK`Pxg943`TL՟i`@\{0e9 2<54 nWE, w h׍ pE)$"-AO`qJ :r\`ϱ}oǷg۟niL 0%MI4"wuId( E._2@PUNE@Te)g6/]nzk{Q}C8<@:7|˥t!uRߡ9x%^ V>  k1h j,0@;E᣼ ͏b;-?2y$W{4̃f۝a3]'???Jh^@7pmHHjQ%F/f6!@u{*ּ@ے}%zn_jI<%xJsؾ9o<h 0nGL:%Ɂ]7i勜398N4_瞽a7bgUET\e,phM @*hFtPMN2M?\[K7/ Vsc&XTLеA4o`:;h}sse> }^}34٤" @1F`m϶2tW /CW~|aٺCf2550?[8Y @f87?U@YrQ{b nMPN<=Wx-!{UG%5@3}~46*;r@}ׄY @vX.pK5_}F=s CN~e-+* ͯkW @$߾/!", K[@SAu]  @ٕ9jaUB(JojX_ߘVoaހͱH?FPӳtIA 2+wZ*<2L_V]P3;T(x!DXd\dGsx ϯpXߛ'g55 3?ks*A-oN@v5 a͜5<׶s}~ #ty񙐙Gߟ`5{Q_ypL\ػJ& MLJ)M* Yg_ 9}[ p+JjZOggS LIoaSZ\kitd;=B?==CKTT~yC'+WdZ ~4oEs+QwW݁}ۻc0@(FW- WWQS-\;5={ G0v{/aઅr)\ס0u_k]׍"6Ƶ|o4}wdd9*Wg&3~>]~!)?' < SρҸuyׁ]W3aKn;#p.p XUj8ph`S߼xz0 Y>Wȓ%%EcwU\j'AEkD||Xc/ IC `}L ?uM{1 BPQ tK:\zz+k320ZҜ8C>i 5p*b '{l~oz~mB.ܕv "9Ȥ>cWt$9 AƷ+:zUŁW[Ư͠p ?ЪW8A3lj( ^WW4e\N \XCW\lܬ9^:xp>9mM |C"3żQQGDRfj#_A~?6ܕtܼ`Xi n ٥(a:ר.R]!pY¨S]_^.3}jfؤÆ\#N9yx3_^{A)G/͕w/&x#xU 7= O=Tiv_Qk6?c>`T\Eq䮫^̿MpAOgd|~J*`Oo9X \~z3dLUu@@Q E PK @`_F@ ` _ 0r@ ɕE#I+i|<*T%P4*{įo!A+W1Qr zѾkeP^BY/e}_>谴yas]\|[=o׮}5+k뼤ky-̺\BT@_yԿb-wS|>{x/0{5ߎJ0\>1ҝX |} ` Ĝ|a4_"*o@^(c]!Bz }U [$@k Q8䭝IS4TzyonOKˆf P- <hq p l8OPRb}8vfSopCgNHw-79 ߸_Z 佡ƟC+F>|R'ο̨UQgGι6^Xf:? H.@q_Մ+7s;C||W~9*Ϧ#O\߱qd/ܴA,*P.uƋA#&@`o1m d A0 /WQ@"p`x2P(hO;u-/a)Pu<=V?C@Wx۹/K Ni44%$ 0nwz#I,3ƏP<{\sW#pϒiؾrMi#}<lU6ުr9ϦGyP}0G8`a><n?nߊ5/pI +"@tdZz:H&I@ U/W_Ӱ![ hZ^PECU@l '}Dz}/Gؒl@G7 (@FN:i8)2؀HlwX{>[gcŭQY"~\Gg9.?},Mfٖj#-@2D(}Rn-N<`QW8N%|Gt0ϧsռ=}Ժ]wc#g(ׇ~Ͽ aӞCt/ ^HJ-g%ruŲ _2}\?˳*pX40*ַ_Spgz86u8PLXAnP@vXƈ 0@ ? 0.f-0[?aha4{Zt ZD}P@@橂$`hVFx.?>BS 3oN],fہW~:^FȯE_]ȿIB6?̍{T/ߏO>ׯ ,sf׷ru"hz3f#]6s?>idsb]YUlxLzAϋ)Jũ?m^.v:Yn[}G"g~>߻8fmro5f@\"1W1:` \ٝtқNdW1XdoU9qVeLx\TTJAUHk?w*F~`~ΩۨOUU}fA(,[}MtRm M4{pd  ϵ$3_)u;0 >H߲$_j݌_ j+7Vs|!} @ (w?F kn*P'K<\8mUU"1_k~Cp-MEFū͞(n[ܾHmbTB%We4 _stŇyM}# V P\gR>[*sբA3_ Rt7LGڙZW%>kɩOY%3_ɮ&hϭ{UX|NN񴺺é)10ER@ +}4aV aΗ1d9}셠"*_kQDԒ%b 8_,2xG?#f7ki~\Ae}}$0cW ~Jf{2XMlnVp?M3~ׂEl=>`<7nrv D"00.}WޕB? ~]9wK,f YPy*37 `mN/%5;r +'ji%NU.#gR< v N>㙭KxZ)sl:39ru0㐮A4[ IC}).1Z.l6]hwˆfP>@@4 l⛱bA|wg OggS:LIf-!{lzFN|]]oarZT(ᡸӴ^bUh'tApKo?xhY?;p㡩>5ic^>;vF7*:j$t~"9 bw}'1֧yRo1 * ϲݿddF[z?_Gzp)* @9z64Uȫ3jy~ |``<_ q46]MCmEJ.=!9㩳>@欰A aI\!?9h@IZ{.^/8=+vfه8_n 8RSMI ʷ\:lAKw##x>4DZ@S^zcZ8Y&X@w|`h6K2_  I@qtH؏V@y/\ 0¨/,5@_@^z6״aaOiδ ~Mk anë>пp<7  x_{˦+R-VyFԠ41|i󜘣51~SOu^7>0Bwi/b s~*ڌ?~=^d`$z@~k(A(!tX-O~,!iwrNP@~|{*(A} .?$Y%@$S!O|HYS@]W-f d[kxw1/w@ >  =TD'*p 4 >OyvTB*d=\}?i Nt9\v= 'F&5_d ɘx `i+=9'cs/ P3a; dsj#3;I(i*@Hm, y&TM<7o .,n~'!6{33_܏ i0@p 9L ?_Cxdz쾣.\*8hhHl!7zGXpY-luۢ ?/ᓀ%o7 nzwYV}oW!pemf6Nل4?x >4Z}ip`w3?I xtjp#zG:AАy,8|AG(?!N2L Zw/ :us*K 9wѫ[^T@@A@ ѐ- ixE*DjOm.vFt3h~j՞%<@^o}\ @< f*HF! ~˺#8X~e>E]=fɞ)/k3ж(\wç[؛\:3 l}Ƶ^C`868gn=+{y8-DQ/+]6|ܟsZB%;j(V--8Ns s4Z4h3 /?Q4J`E3| !9YMi/ v;,-?f[{bi~x8&'W h}o< \$9r4Ȼw=簯Yg9\_J/x5Gf|Y<o"Gf$Cr@y߷ ֚sd<3+qR(8VY* LkXa2{DzR`rg:gdb+MqT+}:iZ3]\Eb\q~d/G0h^\ x8,x+|BOk\̔BiCX!.|@PE(RF)6]B\β_mR$0?buxlyps@ɌFZ$6v';f>A+<#+ 3W^%@ `DҵȞ%۟|0Wn m@¨Clk>' g: ~|8zĕ 8`_`<"'m 'O0EQ˿'q|r34Y-)'J>:4^,G6 x/xV\R jU,כ@ {'ޟ4qxV@F%S?}EQjNm6-B Uo%W&h{ԝBW+)IǾ)$X tWW?eHm[49 pBa`z{T|Lsc~Mw1us~/&}X :sg@ s`$o}@ $FpP~?d g! OW0 ߰!8WoE\ eWc@ s= SOΗ\ԗR/4ȇz'z3 :m_WVƑ\F߮}fDwv3mH *0lj{۷ٺ*vb(cGq<5'u9<^.us8oS.DG4}a䅄ٽPϖ4bh z PѯDH0y8$08 ~eݭm1G:滌ۼf6Lpr69'4] *EHjQWq>@[ 9Tv=PLv*܅dg'xF}JHu`k?{ {aOΖ?ϞH?Vq_>~&f3j @UlQ P˯b(`@Of# ߅לyU 56Nńc۰`@dd,IBm|OggSdLIϡ+%A<=<:IEJB7;KKمءQ$<*w;wfWƠ}xՉv Zg*19Hrs/VloLڭ Ʀ=e=iw:rACT 4"Y͟W+[9HMXv$bf_l}{g#v=$ÐMd"BD; Ӷmς-3!G8*G"4l6[S:~We($<,iZszhs3@QmS@Dmc9Me6@  I nm ѧ+c A v)`gPAy䙏*ŀlC8: ȒDn:U'}lf;+v/#? v3pftk?0+~W_/YTVd Xץ&kz;ֽxw{}9 pS~"IM_'gQ)8"j~e?JiMMlgf+1XV/F02Cܽ?y3ĕZN~׷N,t]jq]&etFViW.s;;YY- G|f_Ԃ<^S<XWU-^~wkc2ūobxI̒?bvʛ+6 7rV`˙x_b}>5{rf<#Uwe1g9}`0|bkkWj5{nz=’[)XvO5 y{oAdl,FȠD:ٵg2n4DŽ1ygɏhfhl(}`xENYJ@*N[g0b\E #}ߛc k%!4{|o BKC䒃f9ZU z7iYOPr{LQUK6QNUc\OnrUJ `qrQyg?\6JӅ޾._d KdBFn"4^/`bB@h >ϭis6dUd@R›b~>|u|+zk e__(r)V-/ ,w8d{{AYfڿzj\4Q~u1YZeaX{M‡i:Æ?Co4[p/[ p4 bAQTv7v;-m^Fnw?0:3dag!C Я/@nǽ w@x(9 JxR5_H)L)/|@G a P zlm)L"@0\Fe{^sBs3i_) ^/ݍ_=>K6j?v ۑ(Tz l[%ӗkd3ٵN8PgMz}[[|[L}Ǎf7I84ba!x8g_{clĿm[d52 m +]dl] LpWp, S#JM/`bj6|co# 4l $s)FHU2|~^0ܛdP{;C״'n~%o{pOQK."IOv9%W)?g9@-_eǺ }UumlNO~s4@Hh]o{Ą` W /uHH $Fn|@O8Ј_^,l|X?ƨO_\Xk^J]8 r m±m(@ ?i _4|tC? ݯ _<^@7@$Td8 Hq)㰛m$ a:J; `@&lz@9 ɗ}z!:?/K6w+!._>nb'sqvvΑ'N: O<+&p'`]:Zv uN=nmAOi@ۃ{B hO@"@VH$ 1TvMHel2Ø~4(=\60^n4/`=݀fgwtpcĪoozL { 0rGyQSi |V{XiXm:+_Cfqeį?I2u閕娌\E@9.س}h*`M+".Vd swxlQO!!Ѐm` iOP2FQNE N4O[?U(`B>@ P'v tR@[,`aj)buu,7{fe*_W >L޻aCѥo3a9(jc_ ]2xO -D/?>R׀CjMq1W.?oT_f:V 엞bmg?O"@aIɟeoE2t^m"Y4 rrazϻ\ͥs /u/Tmz,k9d!=_Uk|>4G]N9f9aV.?dvsP0x5PSI]i%CNkݟ?XLiu:LQ7t~߁Wp,%Xi%0O%H!9#"0}f+x~vˆ?&ڕCVx/@`;-=ؘ2GMy|҈ tDнZHϞ N$6`{QPJΞvXYc/`ȵ8usQ2sW*Nw  B3Gо BXdbˢ+KM??2^%9itv 3a)}% 2E.<x9g4!:kp~8տn81`K-UTHyύsj~qwv^:e{Wwg{  oɯm]hpdaPJ׋d2(?kx%%W~TN2̯_@Gw^QCnW:R[ۍW1pa=\ E}ۧa}D @FXa?h ܏~BUchQ|D7hyax>1@m{|>|7K#y+bu~|:#9xBy|!oG$d zwf _j*//V Nm~0`S\f TO}.?w&)pGZkgw]5vՙ3 Y NC\ t1(8^rm StȈRoL۸hVr 0Ij n' z:ލ a6XGpO+ΦR@Fw$ZO$$X0Nιn!7-~E`ʥd/em.Sx X~ LJC}kAĪ*;H2 p=kڻv[Bʯ,Yk'+PJדƖ1\WdlHd)u+;j*o1SNb7 &*'mz_:%O_>z FnA?}t"a YveC . 4VۧK Q,3\K&oXϿcF♙lG>2;<U/(>HYM`^ 7| N~zcX_\n`Aq寖}4}I(ftqv%Y:|Suc[/[𿚆tEJJO'}ծג:-m%ޭ=j̹\(4yS|عtg^/g~ ֿ3a˯*+$5oUI]9@&T{/HwtWjQ T;o,[ |3?@R(}M8O52@pDިҺ(G(6NѷYE!;H?ksK?pm_O4`?\h:D഻Sm 2og}ķ@˿#Kɭgd' j@f tPݙteSo:cƗq7z̹7ӳm{^QTD@QR:߬Tq2Pt/ βjau}nL!~vT9~s7kK8zR C) *ÓfKpa.pHqFF okS kw(X`X'GP ȑp@j6e\*ᤠ ,X?>k/\a;xH )-P]x=ã.5^q,) u$M dx61R2@Su!(+̍CG;̓m^K_27&]ycA:"n~P0P]۵7@Nݙʕ snݫ+TYñUy&w8 fsET$9$qj0\M@N/ >*e}5E__' 8 TP! pՏl0 Hzf-V+2o-߽ ;o͋}xc|Mx'<7%f.`&ɳz( 6&K<5@xҘ}S|RuMWky7\F*i_ *`@ #X;ЎHk} __Ԙ ^OM~ @e(j&?s"wɅSMO5O x7.QayP||.~fB8־xMr wҙfv%ym@54m{jbo4`xr1 *PԠV,}ޫ"5 `(9 t|eTD}^T9ҌRy矩CQv宼WQP`R%ђ%F,{+!ARW㫇{hNd,Ը^7 מo@ i!B HBE-6wSF?!}@}ta톪ٮ@Qai-L8=mSBh"]9dqԣ=5-!C&8a򍆹0k sC ds|O2 MtY N}Q J.o_++&F.q,Ȋ?wd ^$6qOF{4CPd?}!bbMNF"Tm/v:y ARKڄH3>gRz#e"'.]bneߵsr @~5o(Pݯ//GUa;h|r39 @7s33&l;pt ͨ`?Q^^{f-0g@cgv>}q؇l`Iz *LmEe㞚fh hVOggSLI^)7:89:?GEcja8:96888>>E+"%4845664AZ,}\.կfmz8v[sG&:%r6iR'Zd8H2Qamq/:Y8JWiJ@tF5ToӬ\CcO{5 Z٧S E= R=*gOF9&j9b* ?mo޿f p /7N(,o"Og ^97b\; aZc 6o0?VRK慾Ղj%?K1v梊bV{~&~\u9yJƍI:dQoZ e=Repպ5*^ުcݎ\Mk ;H~ׇ~g}Y\]s-o>h'ߋ{nzV.L( ZV3~kz貦RUU0f&@.=?W7qsA p` y6xkFrsQjq^@С'іy//Ua>/8L3?Ɵ5_<~9ey>[Io=ʵӐga OX !Uɲ^穘E)/ _O>Ceezƈ "VEKB 2Ap!L ^m P֪N'`8, e@?v2rgp @~V8N# 7amsy9fvM3֩h7`-^m٦(j p,@'o'qמPh(pAǶ- {@VG`R쒊@(-@7Gù@@Ͽ>o kS'@[+ Wʊ P#[ڍk\])^=lo-ѷ]y>x8 h@@ս-(FVw|NOpJb .1RTym\~??xh{ՏןG\i o4~z#NͶAV Ň,}Y6 mtݶЊE]6@2sw 0e1t2h{"z/š6~WDhst޽>ʁ @,q.y' e[X:p)M/tZou>ŏ_/ 6'~-v\^oR'@߮#j+˻`h.ݣ֯/_&<@)T+_:Fc!xȡ:BWP9gKs~Ϻ#Bφ.<(з9f{qX̻{|x _xY6:2{5S+䫫o6Tٟ]C68 D ""?&88PG@,y7|RQwj{&$+C+!h>7l?,j=;欶^0˲\5vƪRuE/l+iӬ-^8>m.a jd]1r<,)y~HvUj0Kf]8{BqhTѯv/tLzx>%q.ӣf[pVq ( vzDI3)B֐5p(^~FvVA+${2cXF}\[]3H,+3G]_;DArTfq>(|bUгX:xc{(:?;jټV,CkU|YH4tr*$4%&V Ϳp~GN*n S^jftb=8}wاy'Ik]0a.xȁ&[ǧvZM q6rF; bMqqB.gamW$sW}6JP;꟥: MdMȓaSI4<ۖgv1B 1 X<a^:ڲ^oǘ%^`ںO4 P#}"(pˣ/ȱe=;"GsF O᱾Mߘ@@Pk4Qp/fVk\Pr:Y10@yy`<q#PPSm?ry`lr8pJ`oI\Y}<c@@x̯@Ԭ,˲,?_?jمܒ3"#Z;1˥@ e b q`T*ahUU1Y{ңpƴWz?W|Ԇ:ӍBPr-o}==~5}Rfm/Mk|a* 矨q>az? `{?;7fEA·iuw];PٙS}>\Y]Rjx B'a~6DKH%MhNK62#s[L2 @Bľߥt[esϙiQ<2.ϥK_?|>`4K8&)X@=x[yq @r7K>@VΦ 7g|q& G+jKYsV6HEy|̀) 9rbMP08]X ɕd-}Ipey`bG̪z[@{,a~޲ IS@x{vH)f7e}w;TU F>ת>.yy ϲOo~w;H\lp_GN[rc~F n>H7W{_9ͬ:"3)Orݧ`^ 9)NFlӓ=P iUpLpmY~q=bx\mإ,e"WAbOSz~b6{?g{P^\RGeE ?I Wퟄz[ySU\Sx6 ƒ]I el< cjQ^VpICJ`CWŔWÜ_1PZ[#۝9n\w5\r7qgΒ£?qI~8<:QāYj'Kr٭XcQq4(&(𜿦!b&]emp) j#I9r]Ljw K/ߖ`'9HC_Բ!rV킇YVKŞ/\K6|>x4m]&H0QHۿOggSLI$@<#;88NaEGGv2ʝVL;ؽ)Mq[jw9fqc|0(.cFhm|˱^YTć"Zܺ#@'b @?-!e f#ǂ @2""$-;ahvvW:zPBB`c="J5ëN6'F/4kcd,@9gQyWAٚ?$ \54]h5a|DL7@& 4QԼr<0g ZjaPo kP(Y)sJ߿F8DR Ȫ΁ 7V8yь,,߿ZjY5X0š~'HvU~GbȢq |SE;4Υ_ ܃XF8_*"pKB[IXO& v8cCBAl؍䢞t,(|!kJ:Zh`EUO Ru\[0` G|5?=m $ hdĽNg suxO17x( I( @ 4eRȫ`|[NAX4ۅ8Wz#c8͸ݺM~ |[/},pԵdHF jd#+Jص%P=[Of{Ktw*ex6:2mCiR JG:r!p0`ז>/;Lۋm V=$I/~8_zrlM.Us$GO'Ow?]Y%10 W #@YУ>[XjYM!WW8e1DV{o__5pn4,}gE_WHУl`uC۬ 9,n +p={@eI~ rJY g jQ `_[/_ PH=L |?D/߻Py 7K[:U$dfzL0w*P_lqW[8g WJ;qA&%8.iئj̞ c [Pxhpjz5j 8;1L ̞Ug./{U0Bs?Psh\]1G88׶*c`t**fJhN%LSAӑ;{-HQZdKe|]. kDi8Oj~Os9\nO& C20@ 8?4k&ґ*P&Ǭ\smĈNpaQHj6ވU-)-b#ߟ^3=RVsafiN܏#s@Zfś#!)о?y,N%~ ̉=  jdD7|߮8à13_M>pip9\'@6ME1}6kŷ[Ukut]V=s}t@9{i[kpέ뛘O( ~D"B_ݝs/蒗884iTYM@1^׵'^ڑ?Ǚ<+ PfZO.?N5mGK~,7@wj+@ IXP2 0 `Y~0aPN 3݃RZJ+y20J/' 43-uVseooY59ݴHZ1`6=4sCw|!9*(j iK2k K:vѯv"~Zt?ј>3tU#k#dE=M=3Mor-AP~ %{W7=~d~s97/$1 fh C(pZl  @l  - VNɰfr<|a?vo}4ۗ@Y,\%HI`\4yMLY-wcU,IwJI݋k,Pk58*5󫪎#k1wj5əv{gs@圣w5p9lx5p= f&_ì^9T[xy,} 柷َ p¬*(<@02:'ph+8$D,`ZrA Y3緡w0*bU f5 ?F g+B#QIbc~ n7I*zpuZN񥟁2=assRsyP66Dp贈l_HMSw~Gu,Y/a {+ Y?) ?YEK/&GaO HMPH( 4yUVD(wJ8)5_o.XgoҏFM@~JwMd՛ngdJWzY˶ڵa}w|S]N 2Z8C:]dpЙҁf}F! u.=KcP2<ūzhMp8#sPppM ,\V?bS5qqW|p8|șm!>@@,^ jcxD?zl~V4ZBW} {dҫ3!oD_RJ̷jSŗ)n/gh=4p]|;33Q`R>̰8zсtRm|_߿7i^dInkSg݆Tb;eۙ5r?)Suzrx↚0?"sWu32b+*Vonz'˜{vf~6-arrħ&Ug+:5(vm? Ɨͧ%|߹^?_k='jmuET ksL jh27tqmg̑9sr?㝽z%!;<,؋U4>+vN嚘NЭɣЮaVSR|k~/c?B(G1aTwQtBY .1>NS3†Vhi0<]_o祇#~:ZVQIۍl_70b2K_@g*վ8l>MϼZf!ElG^uˏp=g a6ͣnȾzZ%–0?C08,LM߭ww6×} n+gm&qg;C.M^-p_NgW< /ǜ(g)b4D1y״b1e>44ȩ4U˯^|u+N^P0,k[oCuNiXJ۟o3b=e]JQ@z3&+BK:ˁlGKȲeI!ޅo|֘J#6e`5{PbB:?ˇSgk|b~>\l ?^w@X2b'³֯?4ъ# Uh'q|s" ^ZGyשw~в d[MW H{()Hɭio9rW f{?-@X" {+@Eu}^oe}=)"J@7$@P0=S5@ @@zmx&(M"" @څ[`8|3eY_Kh L:VF7 >6Rm +ȥ`=60: ?5݊|J> lM{xsĘ?\[?j\`G'z8)x${[$ ͅqHyKcrp~ ]8~lZNeeNX3G|n9{Vh]mE t\xyQQE;H|㵵Db4uɫnx3RpSݲPD*Wja,pcS;MY' =~O-~T,YnW4$>yK x@HJ?2-!EUȋcw ,0D- O_ ,>5MN 6) ;i CIXuS;1Z_n>VoHӛ9`b <38ӀjPz6!|R%$my7!t}i3<|n9f_AO ~Iq#WY/u\̒!dO.ٻ[Bbv=֗OG?\vxF>بETmOzr*/88^B |В=`S&T64;Rݝ#ͺ<c{>{ !3CRwN($E l`ؾFBuT7JcictU/I (O ^5==5=6-JnpbEh.YxInƇuyDl'f(0D.u/e<=eRlq[忽^ot>%lT=_g]xvo:LM=9錫}+j#w ya3!w>P(_v=W3ه P#G 0C ꠾Sby8o XkQxw}Lﮛ:,0O3t]Ug3`8HSYvo1d[r]r7euؔǮ."qvw eȞG5+mH4b:~eOKߏ`_7}~q1?h8`;8CMy.0SFT?9˴_q|Vbcw+SCrAt/ 5~cS1wpO)hO,g-@\@EQZe # v @z$:mzl`?۶/,^hqOt~SQWsF[A@/eh?c>|\AхXCO}B` *^`@<|8}g_PI!յR8ہ`:wxEF^=]V.{Ss|sTA @b2>ٻo^>_h߹h @.2 ;&tn)_i]S5gJY8$ǵ?e}࿙>;`ٟ8-׏k*wZ;  0׮6%w *VT9G'lÈXBcI6@}OggSMLI[tePh~>Wqp]p 1ǜ/G s㟊o @' i @ R"" c3Be_6L'{!v~@W6q=P' ;vRXimʥ=Λg8}@@Z]6ϱ{>cRx"̐γNC; `8o/xm/30aԭ`iʟYtBKUEKKHke3Ah H&| ΃-v?*  ,lb>Qm#d(>:=|3tݣ='_W[Ckd y_m#Ь:w<;}k3 8]xmˇ$EXpy3pg>Ln5~ Ko rI-ж tq4_˔\!66Gv7o; ~/[oV&n Aѓv( \2p_2L+~\wٟh&lAĢߚ~9r*^}HT7 0Lv[)`ӿ`~R a5?/#@4Lf獑G;x$Z@7b[>} ,O Z0@>Gz$'Q2s ?7~}gh:i4|æwd ȟJ“'@-#0؎c̊uF-D2k`,QM9n^l?&~_n[R5_-[|}LSR"v!#kaul] ==bR$C>kyszzu5j x:C{_ݹ;|˰hhgi`Esm ]z9ᘸ*V?{L_3IU%mhLg'%G{7ED ՌTn]wU_ Nnxd.<P539,"|.o,4Y׭kru}uf[ );'ux߇m^9S0aE-ɬfH=\b@wcct!xP Km  JTQ:@kmלufDJbubRn)J"$@4]S%CKCo`j/R%]Xec{^ꘔ-W(NNvcNW;e 9zy5<y7x͚È'UO{gٹt ,6*{\ԝ;R ס?Y5R@c<z\9H;'ƃ2]1=\ǵSs';g̬?fB]z&3S6B-q@h^& d@Z&FFSS0Ֆq`o6( Ȗ*k9 =Ns: "R2?~/ơ/yz&`O@cT7[Eq4RN?}."7۽P*J2^թjEI {RŶ;#͔O/JWz=XEΗCzR\|#g{9𫹀d֪<(Mmo[TgjHGm6쒳F0<>o PdʯhѵR1VN||};s8aqlzSm>!쥴م_~n~w,^yI%- M(vF~,߽`3ҧ/ 捏je~/84d&=M;]\鼻69ɉjiLxBh`f{y3&}>pvJ-.ٷ/x%7=\ H+ m } /d, zKHN 6*JuuKQ:5Yyq*>55dIl/!4eaJrIqaE0v?_E[圶4F(Sj FWtydI)oR ӡ_к_?|ֵ*>u~Ne"M^=Cys?u{c<_igt+ k,h}؎],˲Kgfft] 33)UϏ AHau^DZNECx!!~?hODADD|vm%FX! xMe[e`C.o$MV +Iƶ,ٶmO ~G$BWstxN˜8 >n^ ᇽVcľ'ot}:8:Sr8۰5)_}6c@gV_C_N߿[N#gZ9?M7PժXS||zB\Uۗli~5Ɉȝyq B~tErNI/"ϳU#sc\{3nə{sf-8r~WcAuIK6Ts |<#=٣SJR_/92i MMeXc$oçSY迉* XQQTV]b 1k~7/uGx?7v`K$c,#vH+i{}.}V T> ! 2#1^@1,2ψd+3 /xqX;ސ ?6@g&@Eyh< ts4J@JvG~CwwPOx;ae=CZʙysz/hd΅SLKQCQϳW^>v3>*nF2C$}OBRiԯf;Ŭa OHYXs {oQ)Yz_/C5_V~S4O+ywj{qy޼'fM)PeoF孨gFTV4;c=9K,ZeA^l[>BߞsPNOggSyLI<}n~V@5sK#.^`28"ZEQCQ(? :3hO, *jK W B|>%4@\܃,iȁ?+;Xp O:x@CÜO/'`޴_+8$TѺ"0@kpg;z*!f(qyח;@Ks%2-: O/Ɋׂ 3<w;o۳GS-TC VVurݗ*!S}Pr_q̟[j'p7tx(q fL_U<+M߭Y }7U3T@@* 0<K PɊ,*v PG?RToDw p`dt~e%nYD[C EDBbƿxHrpqrX.^pN3y{?1x2򒃫^Mg:mU@Tk~y'FaAMq](Yn2.}ޘw,x_t?!SYڭm cjlX*]4Su'[5dPT|P2Ϳe=6$.ok>gϖr8Puwin@j;>qok(;a>* Pm ⛿ \ȐЯEElo\Ҥ`n_ٲ$9WS*lWh޹6 j82) d?9o\U!7vlm ڌYQ+ p(/:$9et^>Ѥ 0~y{0P-mRBK]l%0}̏|D^q{wz5Ӗ`Z:]b}tmy&Azdpth L% C>HNɟٛ j-nH ؽqxs<ۀeZ.T?>9<@Lt@ ..K7 !T! ۛ p? I/6EF6e#m$ z76mMǒ ݯ#]"8EFnalxbG~RT#ɢTG `m~H+5+=}Xgt~f/kg/;\]KҲ,+ u+6k[X9zaVDE?O,ݨʓ0X;JXF1q`!>?-?* p0>#bIʮ idC?6]8Р'O.?)`3ayA  Cκvxґ#2 yպ}bKt V&_at >x:RۻJ.@hO O >`$DOGQϫ) }v!j48<|ig9OW/΅!Y,uZ_'+1/V2f }־$K2'j$u)o,Jwf\)tBH€Q'?}+dOX["@Q, _/"B8V2^-66!J3%13]$!P1?{p5幷>}a.o{8ilCmq_XhX* s4l1ķ}_ %^gB:y?Fy؆ DO..o .w[|ʎ vÆhj"旯>.xzlv"Klˇd]{?;&K'˟pp @ķD$W^גl@B,|e `MR5Pod+0+g.M09l`-:(٭5-h8 KĎf'vOnb_vƞ 8GëE&}j@KkZ1|?:Iak Clx'+:: x5}%FLE@쨎FnQXf`=Kڧ=an=6ᛯ(9l3< u’BhۢM'_@)`rMg;tO3ίBC?1:I9$C>jʟT^Kx0!`7  U  L- ]"H=G"~cq;f+۲pbg`s4ܟOV%_mEpqӄ-љ0F kh(MN4mcs+0Řaݨ'l֬\&oܟP @(E O!';;XE3T~@Lu$? >Dw=Q:$X `c 3@߮-˲d$pŜ}>&~ou^!m"A bK\fok RQV1OggSLID~dX44pR}tPu53'T ʭ?]AB{|l}|,?8x~  E6(A?/Fy ~B!08dMZr02<.E[^_S5 /@. S%I_@{?%Cn]0zŬE @@uH}ƼwVj6>wą {7amg GL a0`u_m )vz 5//Hvm PV\`!n5" X, t .@c>B/~|6;zX `@I ֺ)5tcjm:~ ~B21ͳ ^}QFpxJ~tz`\v 3&:C}U b2f3C.!{oU.+8*W"ؤH7B+C/-eXukd%@d%jf <0$0h? J?SGQ0_.e@¡hSZ @A(6+X@߀,` 4O hthȜBbܦL:8/,7 N.:K4t1Ӊ.`jZh;F 2R3x7ԇꮍ7<:rCw]k_(%z*Yr[9dªGdd]S4ƤȦo>34{@tmsZ sˮIyS3uC/Fo^:?׿qWs j<㭅7 Q0D 4€$`0߲ҏf@pHc#`l&K@ _I_*j#N7G%@xڂZ"Th2i0>w3E7ouؘQUߔ `n#.w"y.2&CKޝNdsw}B[2:祔\JvUp ;Dc!v~tt9r TǺ5o_l ׂ U"S7g OQ Ef=mb5g?_;$ @=uUsǾvan.@O3?rF"<je=vq{qZ }ޞ`^YJ".'Py"=`>ir,[A̰i1"10ɺ J[KH&;Ӫ!Q(". 4v#/I6L m _e$?3[Ǣ[ϵ5kXؕye۫sS>SeDZMfjϬg΁x`uܑ EKdE3 H$"">> lko2BP"?[6>į6"EFcyק56}Kk'm\sԨ 5If tg]\47T% !](TH\vo7}ݒexӛ]a'YG<Z+ e\wcL=}_lOE2+1݌2M M@X+ATDQ!LmY}x<2`}`U7$ 0(fd.c@fq>Bkwf_%$ WMEhc5WeyK_xϏ`1荦"+!y14Pm迯Qʶ|XOoV>X=!ws;+L+ <)P=2pzU]ҵ䰨v2`Xݰ_X$|/N xYy|>~cZHuELCLP^D/_Tlab*s[BߟД:Z0ڿG#XN#7@`dY6yXXb`,PZ@O>G:ijl y?zf曉/Kx}xay| v:oc$I@e$Ds̥%{G}e2P|fK}.sQϲ4eÛط `~v!H6$Tá6\ݕvx84@W?:~{ޛ3@+)h /;84K$~&``<:k K%RQd²WDTG[%D[$avXĻ?`r\b>#A#"`Hn#%t>c㞏n۾;; kP 2,'D @7H)׶G>C}ŝߤ kg "a-,^xǥ @hOW`)rfX jC8UǗ%IR1+N=ӒbT毎vz'oxμ$/[fJ`|d`t55ۇ**@_E X2PF@l߼PaFye ja$$.b69Ki WЊ^6-!#iy=^&N#0p7/nPs%nwH`t`ϰn\3ܾo-nWǗ |A, {PG[^ϔ`47E$ I |&.'#C9\~#t]ܛed>w@^@S%{}l.wжL.9XY3IGн u3F^8l詫맿V^ Yj4uf_]7d@]s^ߨ;gh^df+<T!Xw$6] 8rѭS^GI`=.6 eT{kmUFuMK{'-Ki~`.SLEێ\/A3Lv h)~!eB}OL۶{YCk[<(Tr;`Lji 0Es}7ɟ3*?wu̼):Ba?'"$08Z OB-VD~(L%}X֟0As@j(bA*BV~ @+y~+>`81H k@8p|>t` 8OggSLI upvn{^szBBBFCNR\Ui=SlOD<#/.LvV('w;DYV-'ߗO@QV <p<}dpD(D۵ S**?ۢ(Dp B# X60>s~Y5]B;A}7 t)r% WF5ۮ8#IP J YANIPC]8_(>C̲ڟ9tP˜ѹIU:|;K_(P:Q{Vhc~x`r2{~yM j8:ewlyER\D@D+}^XP|}$` W>L`LXgЍ:ed>0_E? "X$6ZovD+@Am7`Z/LY=N =%Aabp @L82xM=DԵ~G]S$|HP-~EKEf! `N ;xxy7$;ZY)W>t:J!_,M@Nu?'Inr|?z|4 D2>] >9.櫀.."C9@ƢTμuj9 =6@liXeEEc~-=@ޔ[ OJ5 T);AMmT?L|/Q{ j<\QT >&==Z?7U ӹ]!'4+W _-C🭍Km[:й^ݛQ.Q792@VN'dgloiN(Ls~k=P0?s0s7} >R&x Mk( $'3ٓY6FZd!K ~]nu&w.[A/4iħ2T@#-<`*dF]=ៗ ٠+s&X=tvU49?'W#>>0Sm7+% /wk^ ;jKMw/1w(q'jՇ37v^'ĉc{Dþ>3;&6P) ;lJExxW ~ +gzׄS:p~:Q^wO`א=2Ukfҝ \&S{ٲxY$M(+VWdBN3bvnQ;QTkH&oAEU J}y]ޣ"Kݼ'͓1fzq( ߦ2P2iߩŔDʡf'|O K]˴MǼ\Kz?&+嫟QΠ {yn26r{!F1/[ݶύC9!LmGqA$ww).;|ԟ Cy'4T菍~%G,XCb=h,*Mn[Mk9w-C|\VCdQgXޓB_SEW; _fUaڻG)&Gmŀobv?j5*Q`% n~_8cs ⫿h8# myh~@x$cVXOvFߍ3MSt=`cWj] E&<L-8qM|( s}ߋ56J/29y8?ߋ ^>ϙ*z* Y)gfnasoI=Szk^y{\>+KU 9:vL(*K%6O*a~iQQC_w5**@(Z?_L¼2@xفll%e} s}󳟟}ۯe^ ,PF >(js=|PeMΗW (`R^>͋Rםx5i9gΥs"7h](`,SN}A@ִa\*#hk}v[Y֓3g-= S1+.R8+ #ep.p~ >pr2&AD#n+T{ձ wXGy)x$Շ߫ #^,^5˼zF1]3 ׭;.Žő Wk|4/ __8p?! A!Hũ-(זѭ펇z1NG8f?4r2xVh4`߭x_HNa~o'0w_|+eKCpԏDÜQ?8UYQۡ=c:&' yV] 'jlB.S 4[!`bH_<ftAlvU9@;- 'hżC`;_(@~], `)YQe??V @vhn*"R 6g;wGfW;wPyDn(4\h@y/|XG_~8NU 8 H! u'DO~Ҋ:2^'ʃS@ŏ\c|/*o P~c6(Qh3F7! FjA' P_;ex#sƵbE6,5=d~rޓ[ sNζ*@$C{vk8`?4긘sf׵w țJ NUGPl*dXH >e-EW|sƒu5|mB +\_%8 bnꀓoޑB<hHCԌij8@YJKj'_y . 3oK8XoVG.dPz{O2lqa[ʄ./;/40?D,X @a('#-ad@0(7^wG)ٕ-k<ñ磓#m*ldq>x@1h7$ :8\` 8yl-!Ei Umf_'ј>wvyP;Dgu;(eBm)`~I9wξaB66t:'\wnz#ʣuW=yhdhZzr@BBU/͐򬝎FNCVM7o:u]u+n?N* wBO yܛ@˿<у-.6| CDطXރ=2m;(.&NP'p  a&h "PSjkG饯!Ѵc] 3'?mY,!(j4gwM:$ܾM^_Aӑ" w,d>j_'rWu&UxpnAy].RC.Vѐ\6=;q9 s X,ޞ IU/7 &:ju<}Oy;n\vwZN4@ԘO_.d*2۞s:s>V#!!aI#jH|[,hlX Gn')R [_If|#~= Vf*`D4ʅ^) s2NKg˳Xo fdU#Udf(77$K&!x,/?h3]k_ 9Rr%8mm.ON}8YZye6l;Ӟ]T'Ѻgo3dfw7&8!G73^ x{WLN7SLS=Ӷ7WMqs:!N@Qi;M._jo3y604i|[l~ UJ'C[%so^jE+1 E0U^ Eai<0)-c~x;~qp7n^x`}ݏ9ьtw/'Vj"r@}98!y4Oiw]^QW>?.\JY=+n$|/jRR<+@fPԪjG9CfUN-5[[Nvpџ=k( g";vI6gTׯׂ(" z 42k@_~F6o/Z*ֻUPTeq۲,K )F2@{n#>dEE` VHvqH.gQ3l-|]qw|^90ƾI׋Uнj VaB(K|l(O%2U2P2N=%y?9_{޵{gm&? t >4S>:g g~LwɉaAÜGGew15΀u{fT˜0fP@;?3 ĢWZ}/?pѥ٩Ja@,w "c@k~6KX 0c6#J 5bm,3^}@^/P8|x[x&Oyg+b |痩"4Bbkީ, Pk^yT˜~4p ݲ+0~- ۱GK{ckjȞi^Xiڡj6\r/+m?/C-ەqlZn%fN;> Y8?"57 ptY?PӾ]@8j[ Cq @~H?B०0D <[L`U60nփ z )0OggS-LI1?_`8;T;9:9HJI\EQLA5aA[=N}p$9ǰm= ?4p0'/Nz?WQ#e~f|@gʩ [oڅV^qO䵤eJ r^ ς+8:ys{ە:U<"_(Ɗ@t'd6rsU,lz @·f&pW\:;J2 )pD]q~'P0~$yW [UDO -L#Z>9 DTh%(xCy ^55'`5ݤlY3y/r3f8?j & 0G5t~GDz>M;ow>`tx)JOHwv(֘fqdBo楻AU)?}3oAimB&ukv[zםkvtM"@Tm1΁yN15N)&/rR|zS$@woZՓomdXY8:Fw TZ7mǶm0 `UPyswjc[В)l2U`VGMFj@S^R%ZH ţ7{|twP)6CM"]6ªW&7D@IlH/?z <<}5KN6_:4@1ѻQB ̂s`&sr AMaꠙw%#}80`WJ vSbPu ޙMt=$@Gft/nEC 𗸒H8Jc2?N3ZŊ3F/P4mD>yʛ ȼzHI،2qDHkpp^mA'(Л7 m=ᾣ&Hz;Y\h'dh@U->-YELR7}kKry! |&y D>ԴŏjC hze+*h&=YyԀoաiб8}W>w(+]@K6pJo'5j5 dvt-u쾥!mEG @'l.nY6[80_xS%5bL,Zډ+UaH@:(z6}c 88hvx VbFbO\Sbz[]/-BmEO.WH~YV(%CÊqnΜ+ȺTG_Lsщw|U'N7==wPwdݡrN__-t ,0 2 313P GYEMCN͕0k{ 0Try^6ML8't=46}^5ó90Mt{v/3g )lW C@HuuK3CAr=ӻ1m DV9-+IDB ~/K!ήkk+Ux|=]Kd@1|yǤIlG\Vy FVE,®,~Lr }aW~;W./x5  |14lAlNIgDRBnsn<7w9kI.x k^ORa10Zwx_ǧy4:[a+£1߆>OЈl@'RWjq[,][;h52z1tw- )iŲ .n|]_=flE&;qDz>HXl$` !,4sctXO>p~K`x3y&ݝf>t憑Z1XG;:{zƶV"&?%d_Aimk3n x(WCLymgw=[?Ȋ7^ʣJfLs+^tJlw3LR"_z沿0Osr JU~FLYYko@~,sE'b1V,PE'Ach5QATp)' UL_ *+QE IWj~ t Y]#waFmº}]>v?*< ^` ϊK#0x -RvruC @o-@ \3>@ xxt^J> ~f ;Wx!|O%M,? \\~O2 `2 ^\c!pQNL$vR k)w! . w>h_ 𻗣KlP) z1S:wJɣ9wEp펒P\~[4θV"TRv̟E s]݉b7j1wӵQe!:fm%%OOOJA03Y@P_DF,hަD8:`049C 5CX^ިeRKm' 4 23D=h'o|p< O_XFS5,Ygb}x5㇉d:i"/5'Pl_w2Gȫou=pߪ a Mr}Y /V=='N(^d˙8{ &d ±;;.ӗ6|p\foU:xTeO|W~a) Iؾkzh%E)X>lT98jOAH.yr)j) Y38$ ! ur@qqX0l,Np N-˙~x2)zt PZ% Djh&S1Gs/WN]v߱pHsA͜/h1YG {Y,M=(aW3<Pu`И7ލx**[.yO7Q>8u(v#an_||N}O d =$۶މ9955vTGɐ,uЀ~zH=T+lw!sY=%(&A P|rvWOYwpzf>E5/nHHV5M~!<& |KtL?ޝ ŊofK뜬nhwR ȿ6 @O*!+4q>̮n:EoRԴ,= ? XF~{^e,kJ3e2@L* ܜˏOU@TD!˟|2OggS^LIA`0>]^GLFGGWfQVKޙ5iKh6K%ǎxUGԅ܀=gJ,@"H7 ˭ 4a-d_vPPVgZ߽2--^q Dǩ,=w`M捿O46W%OlmM+`n>6_S=h1d}8@@DF r?Y )~cãj4B>D%L`8?`܃Ui@sdQhPp7yVHS" 0>y aEg5b,P13G13ieXHUD[( LEM#$rgv=`?N6VW&PWճvMAGSv:S8Y J1d?hx^9 jo52̌c[atŏs=McN{,}u}?rE01C¦j7ƿ[F șGyAlÁ׶b*VAs+ >@[G}:(}Fÿm78/ᑖM&EZXv=G=YnEf,ǯ&jo lP>8~ Xs(JH <>?Cz^ 8< +_"j^Q? pem(򦘦wJs}}x>(YSsv%Z@A } gj(fNsn2Yg5ߕ N/f|\LIM7=|'sIZBsIQanB[A*֐vW?UC. >@?Dz6`Zn1廌=ɺO `()48"){S AR(|_W1𯙹,! oG @}6*b$*nH#;yO6&lϮc~uK =p]^|gZZ!o@vB) .63FK7k0~0Nգ"?cL=_DDD6XH@?x;t1ge]x@, ؤ5O5 @O : |,0~[^J6'( }# ~u !RJpR/i2( ; S ؗ5 .`QT*v]p `X/PO=_J/J<H!'~8mhXwjا}#_3v؃d 2A'#cn6A48N)/VЅa8໿Hr9̿3x\˳@iQ5EV ?Dמ4XX0S80\NFȥ5B@!Wx"V}j&n4)~m7*Aq[ߐ1&?!nI W R l(%oA(<{ݖ_:[+Ҏ},!1CSAA+LMq;>nnpU7߻7kPTT]f~á$ FOkkxGg ՏP0l#$@,^ SEZ4k$2mѿ*|dn|s-ly9`=SO/O~|w&?{8ֿ]!(vJr .5h`4[ǟoQmFUwoJzNP*?feʲ (H <^Ag.>4Ժ߁v5J VU[GuG9=?_t0w?\YQ '3] ?~@ =Ryuu$ * 0[;8m}^x3 `mk}0(|WA7ST: {xZ _@n #!ElJX( xS~|B2R ^hA0juER`ex'>r){E 5߃#7UWfx  Dad(؜2 ^Ie x3zdxtnT0Ģ3YkFBAGያ[/M|D E)@ΛN]3ug.q.%n;UϏnuq4>\e x ׳j?Z\/ oЁ$W?o¡QSg`xe/2}pG{Wq#6@uͱ`L$$9y{±דC$!i+W< P #w>O :wΛ/1 DiEl@ },(` AemmJ:5`?c!p~l9(Uj`_#o%+>178b?\5hoVm^O֗:$;@2{ꚞWSU s:_~P@jjZK\$w.+{@r2њ5oДR p5s?߸oN(? 3Hjku8oP~imWUg/Ӓp^ϋh;aVm~xtOggSLIq' HOKemS_TA+蜃*2,ǎЪ'+9o9cZOMBJow~o3/ (<2 \Jd^Y5hr\=w{:}#.a?NJ?:zWXq(\:~)o uR>cokvfĺ}FGz~>xH뜟%}vQ [hZo@ x 53U<&fuMqK,?^V8:N" E $U c~c }8) @)&|RN=p-T_<ޠt/Td? O"*nHG ھ(0 `/_$2dڣ*BO~Zrb1(zv+6EQ#GX7^4,=3Tx2 bC @PE[QTHI85kQ0}ɤ́ (y[ NĆv@.{G2n=%͐^[6]d_IַK m{d%Szd\@=̇s}7*Weә>`859>Nqn]LhvpAC sc\nZNə <~)}{ | =do;"E淮ETVQQB_?ם H  pvSX@f˲ ({{I5h!h-r1u%'wQC{ǿD8>!ċ/;.*],3p10$@q SEz~jpLɋH^D͑교K.د h'귚'/ *JE 7UYPjhy·/m2zSh/]./p ],OPQa.+;#gdگam^ӯNmW,˯K^&'2NnJ 7@l0ٻ!)HLpdUVϤ;ʙ ENV!EmXy<``,ﳯj v6C= {(?c_$[  B2"6o9_ھr~+K/-ٟBZ UQI9&l mɴOFؖS,@p{,qgxbr烰DHFr$$DH-fBf.Q |J|@r[8oQ߇L߭tBJzx[ST2^ ?9'qz:Q<}.ɷ2I?=_o2E6L#5ki߷3I.ϪX`9%rd@eQS7&ϣHr?pr8$M&H=PE~#Ȳ:, paoj** xdXE|zH@~ؚ$S1i's;u6pɊd/xjZm"Y/'\\>m';s'"R\lSUADl:Xg)I3>JɄsav@ke񼳲6/\_h/ߵ/|~=?\=zwvtþjƠ$9%%hb/;Ycw|>HI ] U 0ޘXvΏy"?@p>o cw>&yad`~el Ї&jl`@ ȳ\rBPތ ^j-hډmP,!}V~#p)HT)3A`gșNsxU)@U~|Q:uD/-l-neHVVqN%g=g?。Y9xpt_O-j<9_< ws0̌9|8H|sסkp@Fß1}>]hid?uʠ .QU{5ݟTdCN@i pVED@PI҅Em !0 IS@1ŠK@~#i o$m+|1ƶt]^t4셲j:MBg3nkuu}9-EF!`^l- <0|Ses ?L8]|JS1 M9DoNC56S_&h o;v!>+H2ؔt|?rٛ}|[&w#z1'#|ssFپ͐F:_;c x/m]خ6&mC|[~FvR@F߼}s^ɨ)zYO:L)凋i~5wS[w)@] \3LQTx^PŔVW0Tp)ELr_(h2aI{9d=p՛⾫H h3֪6Y6q d=,9|lgl I\ d7l P=zHU)"~ * DrE(`}-WO瞻c] OggSLIT=><:HGK77CD{\cf 0ef]mUQ1M"gFfcq \gAm/I롋.p;nkW=Dc~ou'@-O U6b(in1mgjzpAxī݈f,[S󧧁 gC <3}ߏP]x27ꆖJ/FȲͿ}md *h͙Y`ڿ(J@*(?)9p dW#+“Ow^6e`eZdԃ%>1}SNx?˗9,u?fTz±(E)A{K/fjsm]'X)9Xv"\ @wQ` UgyJjGv8Qym* J+l>q|J@; ]5w5{VfZv5 X標Wr*y'ETрXc~ 7>dٷK|[h૙C~-:`+tIA6֓ddRy3v*j%ݬBQd˙+R&P>Vt|K}M/H+Dč-E\x:%U3!'aZ^!>ړS1#2^=/ec>TQsKu{͚K,Qq >Ϲ-o7OB.ɕ't}p_62jr X)ΡtHF_z`bU/kr4cc$3Ʉ߱4Bx0}V-RoǃCu 2IkN.]LF_kizm:xy g!*\$Pdb ,/Q 5XF@V(JY2e!`YG=ރ>^ ~=pS V󤳕.:V%e9A'o\gD>dK)Ed#[`rmGsF{^o+#q-˦FT>t6~YZ``4MlGs>c7jֳL䘡[+=*?n*+A3;/ Bc݌M}0?VtcW|q#YA6rHHvl)J_Y~pIF 18=gD/U!E7-}wh A XVJ[m4fi yB\>3.O xmgC?C@CKLB(n*wڎCٖR/j ,ڏen91{܆n'h_vH?.MvCMy2A5-eMog“k OtIO)g`DAkm3)LkM. Xݿ.oCGQ(2R9>+ BŎke@Bq#ɦ?1W"w))edRPd/)6Yf[5fR1CH=J.+ ~Z'0A];0R] *\Ԑ_9;=$ѷntVڮ ag}ޑۮ;ߵG/֋BMNKKoğ&j,xf-oxq1#:Ճ,?zpn \]~?_u:}h1m :I^dB!ՠ/5H#OB ȪWRC?Gc { d@W*,~^6v!:*-wqlm`{Ԑ _kA_x!/}ޠ{{Hcv=> 391CS3WZ餞\-;2@}EH1e[8M< avk枿<馣3 ''IOiLB>  =v@_`⯉Y.jp,޿:8NN݋_.F{iFw./.QPZ>jXyYWQ V_`ho<(<)f#&/&s>bgcmTӶVTz3XC}1?/g??@C8 os?};WmfV 1|KP:t c;_NsMm2pR`%r 8}eW<@H2nv?Z@.C:dnf}k*Av91X^ *9:Ջ27$t*fx, ~ߤdBUL(zPC\Q)  @a`b#63)Kmn#͡܈[Q}tR (̇php,^m/xuH!#p8ݽxi%~ƙCq<'Uv#6 `͞ [Z+~\v;@m֙bɟ:޿fvɝ!66 g "{O3 >kr-0_<7)@ix@żH>ln6\4@K^ y' oA2@*K;#H0XQW*> f;2O6p'#+!o|[8E(W80|aKA䲼G@Hͅ g0:v$ @ {ꭜevk+?qϧ~mC6nļioyd7zàt` /z` @O$x, jΛ>@/,fA`~ʂ(Y ?9- '1Xdm07 0ctJp#[r.( @)pkI9l.HS+ kM_pr?{헰t4>ҟQEL H08IKŮǣx_m @s 0~?+9S@V ~R9LJLy{[g&Wrvpk8ò ҃6x[>(G<Ͽ~(OY&>~X׺y%y'Ss'31`Ms.HB(r$Lo6`n~9 /@t1#4OggSLIW{P>JgPhg_mWIOJ^O #$#$S[vR7yڀP X?[C Gǯ͍!YHtqѰ^//yq@g}`}77q|;[<{[3<7~1rɣ5O-y%; P{:U=-*PXPө0k[xW]XF `~3&Dyv k@`(*77|.m%1"p R)C၏Eh o+dJ ":{[8jM+ tѷ *|ה%Vbw2s <=B8$}:`_$иN3(VozB wxdXBHWWy玶e ~a*Զ®2 }a3x?}4dr) >~O9X޿@}2Yl| X8@-X7) _50X!@^-ʶֱ#ܫB7G|H`}fp?Sqk<A*VϺ*F'/ xRzgt~?y P:X+<' _БVW oӰ!G=lؤa>?! w@4TLG70IO~Ļ_߿@3;f7&r@ӯhyO_*'J? n$ U'=} "\0#KR05hR o8Oȟ8!~1ku($"xm z<<_n|o[ cBJ&Z\d we+|v,YAq:2ev̙^0n2DvbL;n8k7>mg~SylHz?&z}[hN.w6/k挫5 TO@%>z`i{hoE1 a+Php@5FSAo\$-0e>:amFfG\X9J_^0?Y'rP G^$ N7/!N+(6N "MOϔ ,N`D{03RJ Yn{W2U|Ee!l$ :)9@>CGW`>6]aR;GlqH"gk ?5K 8`_Vm ūw]$ch{$=6u7z ~2Pݺ=[*xX *UcWXoH8TlapsLeNeiU;M^|}i9xIxQM0M  @G@U3 G4_/bضp qRr؝sx҃` @$z  O} Џ5 rz&+>5䑨f04˫#؁9jr<^0ge㍢ٖnHFr|@#;`$Yφۣ/i- @ kvW/{>@oXăV뺩ӴT)3̗O?pk<f?]tXz:ꚪ8_O#9q~ ̗[g%}+o%+nh iܐpgy$H[@=c @/ @8@-@~YB& |B>!|0f ?DAXu6SPsixA$ajsxљF_=3ooX#l6 򹈌03pσGd;QYs xbQ zkx"ۘ_r O/_~X͞jP<~Ґl]C ~2o.k`ϛ(]b~W`rϿU(>o'\T|zG F@dP*H <غ0}:=  %9%>1T> 7$+X@>p`:KL63^*y? 5$S=)7b΍a5u5=u'< @Aػ.&/q^`'>c O?O }E`U7Io7lPэr-_̴ȗkTezz^'/xf/sa_@?,<; _sO-߽}& ;?8O~= éB@T@@xo06ZU> * j Z˱2oD; hHVD`t8*DOo933k~\q|x2 ޣinv3U77jpA[%Qcsӵ鬞_xFCqRB4HᒶR(RǵP y6xmM鄐afTN>wZ{@M kiOY,F+b,{a79>_oul;N6SP3OwӐ!G"U y% sT 1VFT*a_o⭵fB!44zKr[\*]UpSy?~ ^<鮗1&ߧ5pp~}"wۜ'i~~_ ΠWP$Zص3&Vl"&&2P(gY|;|G^u|H3E*%F\_˘ tyݢr3@nO2|+n4T5w};A}s1gvsrhg]2!:Ks%s<^z<>Yi&><Ssy4u.CW~ŪMs4o=ؾwflb 1k*zd=sy FydO3B4Hd:h# ߙAf&#˲wI<h6^XU"4]LJ#JKx<G h^q:/MVUU "'﷦r~(/RSZQJqj΀z~4߶[(tahˮ]bj߬ 9UϨ'[dN6A~qy{d&(L"5EVûOW`]S4Ոwg>u2kf9g' {;[wpau Ija e &yK]w> $&c}6082_G烮~à26ZMBOggSLIՉn87DLK~rr\w[_q^+;PޚVW3Ye xs%2I#f7wW zݜs8fcxֻ`1ުL]}GoË"3QiUZ\&3`n͓|~8n6ᬘbo_u^_[Nz}_a=zNlpsGb_EAX3!'Xd.[W |->3ΫTc;^} j޿:Xz_[G}tS:-W"Ctڕ.{‡77zˁwv)F8H#hF#FYCv1wt~n~ ] XRub$ERbrڙ|D!iNZϪsZ!op[\K]@v%{*^(i'𐦿wۭ/&=,X]5?KKFP)fP/*O& @\hM{xNGO%r8AʪkHܛJ~Z,D@R϶қA\gοlu{ Ϗ=] < eGߖ% \Fb.!c߯1X>=7W> 4N"1MiEjF~ψe{cE3yuPOp#|yc}? @ NYhi]`pCiz=OEp1^׳|ݝj TO(T{$\nfc O㯣[:qa uFqNm6FX%sIJz>|U]p>+>WKy<a@ybSpy,yD9]7W1oNqͬwF_- p¦+gRD|η^Ý_Ze_ G?QT(Hި*?wbj`*WES k㿟Cwm-BF`c" ;cZA|秳k ܯ|m,7Q$ @ށi^ ~rQ/3(Q okHHgLzg3n(/8v&\ך7SGk֏J[ @ϧQ/OyJ0`cE@ ReVe|$'yh n)C23 Yd`+Ït)G)_ݻ z~{7" .L}"QjP(31+~(J-[C'm?O//;̹UU)) 4/ A:؛@s"B2a=(H(̄ g~\TY=ݫk ,>yQ4zxy7.!B"oi 4Խig@~Lܙ.@4gA;:5`6  ;> /-ClRP8wN(@TxJd; 20ֽ0uFK+6!dH;] ˞tO @{}!:@ U@/|Xw|Fusf3O{ <K7`ry 1`E.0,OggSHLI4pb[Qozzg`b53s(- &rgi#W,Gr޿D98Ψ̍קj $TϋWK>>yE,=pp֝/Yk@o2=ax?\滱   ӌT@x#`a5@F`Ej[FD,~ᳺH&`Ҩ=jCbXzW \ .O/7w ThR E\'cLy=y,Az`͞R P0o+󕳜)ָ5痚2<6RȸqiC}zhcW|] 㞚> 7` :Y" 130s>߿Wy4 "|yT? M|Tll=,Bu` AT# ~- `VD=I JUC`f.i fc%7zj뮍e#TI T—W0[O[#_Kr^կ{|JacH`޾2f{ye;ElS'__n(N_Yw ᶉhnZ8̂< 194?Wል  :XvUV:󬺐J'UT_dӛ6]Jl I]ʤJ0PG}чO7 d\0}톟s56ID=ya6΁y{e_գAHɻ}}Ggu$3\_}&ꚦ}Q{aQ}~A¼$wov 8Uux_l~1`~콑{i<X`jm9Ih<n4̖y{ǐ>չ(ֳ,fSpN["<] xw'x_,k3@HE"=:պpG׎ămeyC~J٭]Ok&_o?Ds\ sD;ri٠+6k($wwBADѕS/_x>֬p>R@՟ST;nYF;7Q];f ^^2y*GWD*VC wV*gδUmp̨Zn"W 0?_AOA‚o`C` yd $ Єa`J>Hv>5٬9ٻŦ:,ۜl؈$K ?NLt /&~KX (n@~PGlMF`(Z^j(Z~Z]T/9rZpzݹ[V &bR7ОѾ}O~xqUkΠr~J; Kb947=n-%]ŁWVzhjW2@=-KSc108U}O)Ov6 SWc~@S랏q{6 gS|y3r`Q|Wێif$^g4Gx5 s8a0-!Jbo:fTDP njwLahڏN>昹\s}vSpcNtpȁe2)f􋁮tw9@ !l 6` HH  bnELe!}3`E @2pAg6Bk@E_z[u# 8 V7|0NG' ˑE1+w,(TD+)@I]Sfwid,~# D|q:.>{LXe x(*O}ɡd}aڑ9GAކa_ ߣ^ˏh%^K/ȴ]';GQ3[*悾\õl=ө (>WkL} Dn&5^|¡XOWm-]ׂFE]?,#% P' BX$kY`|o!xw`=Ƭ;̠8N;&_Lh>=k/lcX,}QܶaZ+s-q[ {Xa|٬OO;Kls:}쥓r~cA.mrE@}獨2BgT~)CW&_a~(=mΆRۯ`Gd'0ϗb~6: D^}Ou>7 ! Oރ;).$<TV#8g,0f2xF1!> v`=~9HO4H}$Hv 6 gv(LUX3~x[/:ŅX<~<vE$c LQh'S5VkR|=@Qv,{y]{ {K3h&'.}L=ܻ a~f]4~!Z'g/ ۄw(vu{* <Σ`"Oq}C"ͿaPuV fWol`&~ }!-GͳT,4D^Bs4wKir87:(B2Lb  j}ۤ~i5g~7r>9xh'@;#GŪL5[h=?EF4>C͉:ڡ̰3[ښXޟSccO|29Іb&CVc|CWpy( َ׬,#IW]l )J.oT8)Qx8HA>>}&6Nč OPTc8 @ re4sPF@꫟Q>$pWDED  D}!QP Ѕ| DDQWs|mI\P`?[G;6W,OggStLIAy^i{rz>Z1e+2+4!HH>LuG#_n<~EhF<}b  )աu:Aζ֞};ANuwl~mtC$:LjW:f< ^C?M_|ޣrSΥ~sQ(9xK|kj}t:@y 3 )@$I2z+FH>9fIL@^t7GZ{ATQA l]Vg,KY4Y#Dxߍt~c> zU _Bx0V Z}  鹽nZq6N橰L|nl8[iH/2# hq֠9NrQ2GcuJ;U ߟJُthGk 䫾Gev]w`@_`f3ZFu(oZ3.z+M?2Yfȧ*^ Ln`ap z.& n:4|fA]Vv-F</P {u|X Lo`$800@~Z}#b^loP7>l~᳿___;5O(7T~<' #kN7vA($RH"aŧVVVh9%|8<ovke%Sɪ1Yxo`[~wm/xUa;5,H_~dV˫V_t1MSpQ[@<1P$/* 6r 0{ !US>+k/UQyocIRB~%*:Ƅ_~եx \'x﹚U@Q1y{kxz>^BB"U2vd`}׵q2@i b>үd 2 {?CZ?OMb E!̡}=N@ex+Bj.\Ղ,zwXljWaBx=Btۯ/ρɜi\sI6b}/vꑪ j ] .B"@@D FȮN) H]l~J}er'Z/zN A-Έ}oOxyMsיؿ>t=,]` :ARDSx?2a0NXtwLߗITE1X|s Cl8uаuWKeuϙ} N pN'`xokFggPGclol  4C@FL` @*@ p$XM Ϡ[.ء~ ~*}ڔ7,[o4m9LpccާPjI+hH1Fjs7i{jښ$\4¿EEYqe[(_M&ȥK:޲-U)g>CM;ĽO"5oX] =rEހ0P}$2|~~^~pAf_, ^-//=@Oxe>S, N0D1P@#9- """Hj_t` ԀD0Uf[U5~ { d@zKox |A̧o :]i/[4b^77P2kcݗ, y% Ao_ɣ2ʽܾ$/IȢ )yin_py?搯J\S7ղ:þ j>Tz_ @mRi=ncu+ۚqWyFz1j5 /߳9N[3 (}76תkwG,_Lo*| hp44;%HGIuA  eCcG8H|b}+@7o@Ky~&p>360Ǽ Iݲ M!kV!zaGӽ,$YgLf;Zկ>|ל9wOYa_"CDҀмj4 )j"y0Zn{F{auB>csVd2S8m4 mJhi?柗9O=`>x6A<@]s%tՎg"bUIr<=|sQxprZ_~,`8{wmz)`5 A#(? h`w`0׿6@gɲ *%aP`rolh366.pE1or> " @ͻx:}=I2կt6apbbT}6xuD[PވN]`=y%òe+=UՃV7{jr\:+v=a0K"؈&v̂/RO} uiӧ_b₂Ɣʲ2_TKf`N8px81ȃv0U`z ώ 2 qoy)`$ * n{& >>H+v" _|, tƥ6|` ȝh(W ]Jm˲POvMF *3A(KEF܀#}!Y VR xȔ3taDRzm:~eUy؞DTUA۽ȯWdu̬g_ҭwCkVCR ZUww'?O oȖex/VfP^Pę~& u|=riD湆tU^[wI8|o<\aXΏbEδ:30cIB `Ea!bŸL'$  ky"_"z#H@ BT0(OggSLIw@=UW]ypez^ҭkleqlV)Aӝg>uz*>y9' ۟zf x[[ba&o;|/<]U(G/Ou/C,mq.7z^k|FźG޾#@^h܉rEx98UQ{]PMO⃳1iگOlv(*p"LŖXb UL /l1y8ZZ&S {jh:3"x+аtlT8^ =vݝ!_N? q*r Go2@w`{?_z}+^x?'=t9 őN+x|( NL\ OWHqitRH!E]1@GgcYͱ+%j!bev 5Ja|q<f&.lߝR.RgWhF\A9~gEVGR`Itlv.!Ji?H s77ALYv Hg-ksƫdA!ۥNՉC]Q|r A-up'_)?^^GA<@6~xD} /x#n_Q R\ÇcY6գpt}&W@7 +t5g ƫ@=/BNK.u(n 4pb}:= vrjZ^+:f?X.`@kTs 6F/Gg,zo|iKNkDjf8dĝ\Ƿ΍ەC (?}SBBaO 3a9Ϟٲ6#+m Xդ3to~;U{&m6FC6hA||1' ZE@/n <B,w `|wz, Nʅ/oW2ä}u{=l =5٤d|yﺃ+  A= T# 5@&R-﷝~sٽk^ϲ2 j\[ t zT? #kN]U-գt2 ;%< "hT 75);>-mh)dL 8#|ɇO0k> ,|XD9H -{e,X L ]YAO ޹Eao }ʏZծ߫^T+.xh@7W藏W̳< HH!c E*^ӷۋ<$;4ן, o!01/_t3od"*IҞDHiH05P0 #g|Ϡ $`H  &>H࢟jy@STgOLH_Q~ ໿eP= `0@'`3]EZ->rdS(M [?x<^;폼B%r*rO}șf5Uno@m.vy1V-$zp`2z{U{'NUU,+#jhx:0G @*HzRx }s$$U]7Eh4FF`wȪ !?h2l~~7?WH<0OݻUC?| l52W??PfX  r>ȧPI!Z#&Vn7pvMoMMl Th cK`iTHnu䦣.;`㮔hllҗL/vt#ĩ\JNdܛ}/Մ,K|!ڃr.,yW[KrdXYȦ*=yiWm3(1얳c*g_h492[Si_=.53Vm_Zd* ? !l~,QQyŵ(C;_RTT_eY͎" ~0e[ o9(|??w@OggSLI;r`a]hCS7AA;F547EOTɥܒ?.ᡕ /*/nl*4晨 g^_^?/ }"np\}h`,׎Qh Pjf$U +龼0ǝ`=`x B@ PǾ:ip9w G/CI;ۃ3kw˿@ɹM]\?'`ve\tuŵJK;zA+[yj@;`0 $ |Мsy(G;SqЏwd `oƇ' Mя'bz1|f4_-o,e5[H%:Vc 5<#r;üku1If8C (EUiHs\yckmώB<+Cuf{ >pֵ-@ɓՑiJ[.< Hv>+ ;U;\L}>lV|=/z<ԉ0Xym$@\ .d0'yo6c}*h K`G{u}2a Ȏƫ6sRm [޹n0VX0읿%~i}PfQq,\_`Ұ&AƏg7Ms:y;nqԐ[pnXmyq@7Fo zc@`ߟtD [JQ&#vk,X.{z7fNw5\ u0bʒ ZYh} n7 d`zU\5LefBhY@Nމepj%G* G򌂘H1RFSo,w_`@ުXE(Tq 7m[?fY/&y|p_L^B{mo=9}'`NCX~Y(Oy| n#;'{Yz'?ֽZsY= s%fɢus9u8uDBp83xoq *6D" Rzfgb*h˒@@5inbG;'.3yY}QQXY=5ˇ-:h -ݛ! zR;:4:i/M f:H;P@!W wίz*b׎ XpD.ΔoϦlщ0F_3lN)<|X2櫌iWdc=Lu>JMWZwb0 {[?Q H%%S6V 6*u/3sjY<ae|_k7}41Zg 4 ksU,3b1ŊUug;^CC} :z\;&w+sC[?oҐmIzС?'O=|[|qpQEBnU%uQt|s=δ%8cqN,">?+4ZceCڳ>bE k1P^u<4d:y~>љxI絎XP@`%Bh,XJ I)^S7_sqC!dL:G/K Gv]7ߑ0 ϯ#M̈uqsW!Ő 2JBb0TJZw 5/WB*G朚P YP t6hgCeSfR׌zQ-<t<@6aTB-H/`hqԑ䋰}ˣW '?Nτ'}S- z,4:e4cFTQo8?uΛ]72q9>~~%EE~4PA\ 7"jbd. j%wN"oG6F~vSg[O'?i=W ,YiDBTQU7(F 9g%"M8A(TٲT\ cN}_gF~XG@PrN?O{. 4N-px(тS'7mcBI;'9+]|㸄@ۉiɾ#6l&bf]whf*>I +h$LP;to4uE>dz,wmҡ_y2ٓ;gy2͇ S9U^ +g߮y 8wt:~zU€  rߋJ )ƂJը&y܆Sq'&3heUU? =9o7>rXPv 6ʴOt  4L^KX}SVm ؘƿfY"`+<50[*({c!n_D`]'x#G#|aPx3 eeY-NM2 O8响wH}XpՎ~[8@;| 9 ҀN5vȬb0΍]b?5R~㽗{.ϪLtL⾊>PpYNO X8z ;?CrV!@.|E{79ضpz=W< {v*_Ӗa3$Vq3;˔41A` { 4lx}JOZ"r}@-V@[,/.Pl2m>1x00AX-}rJjC){sMk! 8pQͶ8!}T. m5`bX, ]Z[/N(#+ 2d~uܖ$yO< 3S.CmBd)M!/&BXME{?B|sL7?cnp匘 JJi:$a * S00Ķmۮo> pC{7m,tէv}` H|ב?m@Ёa &%@,01=blmXJeB["UTL䫤e%fQ"ԜImaZVƯV*]%-l}МtN̜'џ鬟>c<3K.cB<~Lb});NxxǬc='eS[tSϋGK4Q`hz5} pdJ1֊(6x؏Fupv.{-QRa_5QwoSJx|y:aCq^k@Iǰ+&#Mh^NOsf0۫'phI CUh9x8Kg1FhWx6?-Аp?=~rz. r'lhR״Nq!H𹄶&2̒m䆶;a. ;UW?k/=<,=nT1y}sNDD%5y~Sqύ j+,CALKGYY@lddzyuaAU?&fU %P˦02r @8i+oΛgG Ca@E7+1W붞2&ݾr0W׬+lײV0~yŸ( RrNU₈ ;y}ֻ?8w$݀@#l'Xy}q|f膹f _mƣ:@2H!j4 8g\OgAJՂ m dݶ@!z)wՕ(j]dnAȽw By~8jjgN6vA ݭ]  ̓@q]NP2.zˆ@"V;6~񿂂Bw~eUGneiӑ2P*=˝)AVIԴȯ rF<'6hҸ/@:Hqi.B2 )$!QrK9'ClmSZ^e30 !P:5 Ol1Z=Hh=@ƌ1 @4ZJ&fďl @tX .euA6mdOarJ/0!"0|K^ 8ΰ[< R#Q@A C+YL7xN@d.e->9ȝ9ˇYIͪ,  ("eȫh暈ur`KmXuqڡnF3Rw.3EEHF(E0@48x?YzUAP{aB/y3'#_&~2ۯM*{x}3I@ďjG[-{r ]ye( ?ʤ4`PMAnysTqνU=8FM}8_9wG Սm Mߖ Bl6-`B= / M ㏃@u 2R9l͝Id:}dI}g */ ApÍ@ @Fn?,9\A|","P( KRlsjrk-+lC(y%5&|['g:`]~oﷵE 'kȁMHdhIܶ 7kn4œo wp9wp&$Kz}.ud8x 10Frs rv훟.Y􋈴pbs,l|@ ˚L`>U9~- )m[i6-, d6\ƉG <+_,%(M(_6 \])(E",Ch~ 8և|j{*WV NW2LY>,zsYm<9f'%7FO;;lD4E"F1HYQTQ\=7l \_?`=iPqs+) էZ 20; o0?(Ƞ *$"؜!z G~)eG.LHiIћpmw? 0Xp%h p88FH!Jʣa;'^#y<HkMNه4<0W/~󤓣=xiO]鲖Jy{Nf]WosK,\_ͽvxS;]գv+gp-kfPbhm;JÚ8@v@/OK< eIP l;Xpx?<Jx)NH ϖz<E7k\+ B 'XCF-0{/#~w\}]5w4nl%pЀf08 g%")*$aY~jr_ۿ+tBhx7AnP==e5(@ v~~U OpX9ߟ* mKϼ[30b#! x"g $\W<`}PS&`Qz4^?{#ۻi Bw&EUwxpKQócc %.C+[lmYdLOggS1 LI $#98:6/6487AEGtZ<7d63v>Ay0dbpoi!Ega7/Ec3&2D6UP6w\!GnX"9ՃMg>qg5^t| @Ö2Ba, o:y9|xmg jlG2傺,U~cB1U6o\*?ga?B. J2:bw_,ޟߣ/ist钱?gXf=yxzI}xժ<|KbN/8\k7ny9~1or?bKXDm/U9 c?Uӽ JIs@\8 ?LKHHzA0ujug僨/^"Arڿ_m@e?Wz-˲ɉV*J Ex(ߝCX"Yc?431tkM[?s+ddo9 jjsZtwQ< r((`G?rjjᛉ~> 3h\]El=>?3n9Q}rBaJ@(;߳LB0>?+#00` 2 P 좙I997L@ @:M|v o.j NN1q|r>Y=y%%τB"\@3>[rQמҟBK/H2>a+>LoGnony#+קL.q_] 8ߴ{U%ٱN&"|[]ݎm Shs004\`a rKh@Qw\` 4{\0!`(pW|& њ[Buǂql&MCu6' 4DXhR$YT8'a(hh6Ё@P!oba[@d=}j4#jrwK崌X 4ӇJ,x _EM)Xy'l1ϑ07^JzS)D:=I>96Y?` m6Srjq9ӟDmӚ- z>~-+&eh 3j7 p9; @Eܔ8NJjK SY," Tg@M XbȆe m"*O~Wȝ˓S>dM8 -sdْ>)4)H)^뒲8 1zƏ> g{}zk,~03)$DrrloUf_Q [+jtZF$^=\cgi/Pp7.rsYZ 51e`ԧ=S@=y(<:!W?X 0+? 0_'0HY̟q\ D>W B)~܁y n$/0@~3 )p#k)_?q6>8)c3܀AҒ͵J`!IoZ IwNgiG*ϝZ>}£Nʲ',ƖϢ`䳑ל^{ʚIC{۽(j+@ɾls3o=pCI.,.E|Kg}8=8|l*)np5`cN":" e@.@ Q d).%Mi2)Vh^8X_7kSU$"@!6 w?jTz ߩTXV26OlV-b5[DX?ͱ||L:gG@'|`4&IV=yq?>OSߝ:i8qpsxV$"Đg) 7PCVH3 @DHKG0'*yr$_{_L3f\1\D71ߌY;,&$ |9M=z.1^K9 X߃M'ͼ8rg"`aa, 6ߋ "&/kp`[/_o(xi BTmhI A [㬂XD)[4ҫ*>Y~!^V:n Op<.l7{#v@Qxnis&/uT 3r)Er'gr;~`7Y鑋{y2o=GE(>o_.iy4Ș/3. mאL(Œu`]և> nC\:\ɚ.fS(z[`!g^Լ|UM`2jTQAQ@^/z #**l},0F?`$r r]̬(`2/$ ) !@_ܽUz_};w'FUEQ"MmcͿi'?%8ŏe9 ܶVҮWmo/zyjdHij>l2)*d?s@3f1I]N't'RZ@?$Q7X.5M!F͞"- (zZ׿\,H h̚I\%>icF,16wl@vp(Q6v>`+ H ^WےN^YcBv d-9A1R +v_42[90>t3.7GLC#"(TV_?󶩰Lz0sa6ngz< fueWzU͋3xQw(([mYqWUɣ\qbvhM{/;q񎝨 c^%[ =/YSlؚgV -oYG1sBT}yЂO~%,Y;9u}[@^/H{ 4_,LPCaAIOggSb LIٮK%AC@Uu{mo-H&@mw뮩M >9.~5vS ` S7Er]$!8m_I{N~K%[}+'%p' %c?¹\%z%uB @9 oܣe; ) HuI@vD*& y&&ɬ=h?JuRΉ-T "Ok: ՗BK^k.T5@NpT?b7;7b{:CAS{@=3#e;=1EO/'׊ec!  4ڂ pwݟk @zϰ 4 sO?N+>0A($ag،[De'U`@3(e (0U7 R<Ԯ!eu{Ϯ /Џ׭Ww%-}(g>3#bU qW[F0xu^ /)>rW<$%IHFQW[ƅZE)՘|KϭK\T?}ͪ0ڊhD LJ'# <Q3|.Ֆ U߹rу.}W1^.l\xl7x/Ϫ|Q`9|{[/E]>j5( ` 0S$m yq5'I*W u<윙O9ΤuOsjv7uf[^E[1mMUyYaϢFC=׵yZ h>Uo6n.jm[, I^;0H`o$l6Y2K FhL~0~ Zrd3z[upձй?'&'FsR`:uo{X[\0<`^7{-^(|oJMv2r> eˏL8[b^kIBOP6rMUMc>xL:1/꠆"ǏxOsS%6ΖCfu0u@Z˷~p'"Xj[H3ls;JfrgO<[$H !-2-0u)lfu' 6 tm?=yH`a<'Kmҏ~:eiFBš3ӡum0?Km\xeg_6W`,?.,QM}DkqFj4cSr/2ϓ^~gT. wݩZ''0)t~xs{m@NX1ʬ(5͒y*ӛqp ϳUC6]y Q8M071W, 8\~m\@%ܷk]<dy5 PM}+к x|Ǚ ޚC^O`{_ymzHF;@Jɳ? x(Ut_ YYʣЬTUCQYs nq|"@sWXg4+`-K oh'_~rKrE`0ߝ==_`~ƹa~rR;gO2<O@:dv}N)ju?J}{*2^7UNdŸΤȯ ~1lဓ᭺U@f+Sr\v0<.~d(\0'x8C9{؀6޿ ! ൹8iAw~}@ :`8^:w*3;iz1x5'q {Vу#x [ 'x~§W~7k_4 \|{ @2^_x躽(d@!5 >OrhXLr<=%׻ű?sKlC; XYgɤyb&z$֡KˈtDln\1ſ_6 P?$fѫ3 ӣ~(ΏvpǶ7oak̏JpqP#%H]Td{2q704:?c"g oS8| \}8 g>DQbKnaxgq VHU{MI6nV(mTrL |<53b޽3 '}kUet~WV|3gcM.20l5 vnBt{l>_I[CdeᅉCz:@f:P-go$lWGjC2`+ ӞG `pU a# >m p~w&,}q \\%<8`~sї_}c3@\Ѐ7xg۝D 񕾲( "0Wc%[sYfizg@yxX  CmېU. -&jt~@u䂯*@׏lll'PJk:}{d3a/ 4`ܳ:'iͫ='3ZPpj9 ~o?>-~ggkٶŶ00ۡ] p,7T'7BUD_ },@f >*6w:;jcRZ ~n1p7yw=4z<5 ްx (-$" sS:²mnym'y[th,@gǯ x8I6Y.O-] 2bby`PړwR_ǚh<"г>he ݈*˗]]7oHEKtT-c?7tcj.%n4_czO ,9~^ \ g DU2 0W2,xHY1` Np58 6,]1)k,:pR?7`XWC p.7(iA?)1@w iBZF3ԗ]6<==),<@yCCSy`Ⱦ,'@=nNb+ݑ+%$q$ӫՔցݙ![u_n M7;`_@bZ**KqJ_^@Y7T9=un EvbG#+hP` [\@߫eRml.0 W ɍ#bH63!H wL hp  `pqxzK`.6K7@nZ*Ej5_a#G³gAEʭ}<y\S %BײLuBыz=iKwc czhx]gyؼ5N|=5O喁K<7,l/ŠϹ\bzJ~OO4P[ͿZ 8*Tp/m?o ˿0[l w I%!Tf[ (X;)>HOggS LI4;oenx\U:AB<7KTVe>MIӘ!RmģpϹ +_^!};<ƺ·dB@(@'5E }|(%GSPbl/?kĭҝD.6(+=)G>An~1u8ǹ$wWN;4݇u(?f#nxCp~\o8vT<#5 6;rO ?/I2SJcn)grN {ͫE4g=N'`D͓KPiLl%87HqGe:w3sA03ρTAݳ/uu팷  7Apпn@y*A? "jר O_+-4N4B2dscmęŤ!B82e3:M2Kpf ws5kgd >ؕfbZD1A_NO_r:)# _EOC;[Y!pBo\C.e10?[OCWN}x!,F m{Ve6}==HGM agp8xy9Nch0~4mtu_"" @'% 0J9FP(A\S{p~`lKTU̻;`#02?w-Hs?w,Plk5l1bʵO&;f+fJ!ƍN6W[7Es> T8xO\ >@"w.u5 0_z s\AujZdA${nNK7{+?(B<Zi؎<9g:.1ʵNGhI'~:@O<p|;ʐcSӀ^%tx'8N Aq&|3F`A(oyKᵊ P Q@QaP^+ "u   2)#>Z%MA-bvTUAnb$ s\'0O")Er<[m"XMK.]|p~vi`fS .28WX>cVsrBvP}™ 8{}$/kI(V:;YAl@0d I^, DADy Zxy`|qK@3P >j]%73fGzK[8jg$pbR6"D^G/}=>ϲA2g]in~S;|i^pO zj(x}bM,eQMyw#RTZ}NNiwЍfG壞kLn:*|/.f/YWOo2ާ)o`03yƊm0< ѭHcV Ȍm 0]}ְ;$R܏A6(%1N謒B\UC1`LjQ#it "KvޏnƭLfڗˇҸ🩪 U=d\gq^H5 ΍kt:bTWUԺy'+_mݧO$]?I5[u~k;N2.>us * t S<kq^k9%ZdQ[(FAʼnm~Ы~Dqo:п2%|W|2%X1Q(Rt^Śֽ~R&&+*ӬVHkXo\GwhaKb\ ޿RIYܴ4bgLjPL`/gi*%pg-4ѝ,^(Mٌ Y&Ƙ|^S^)G>oV(λ,ɜ[)j_-e{wWC4~kg]Kz%" Pw$j~]AXGinM߹/up͙oA wǣhܓ /Nmu8eALy[cywň lb@"ԥy>wOn{ς0Ru}_cRr5j/cb6(h@QFZb4f:p p⇛>mXjD $s+$̦,O'>wwҒr\Tn[|Dt? <8W!lw?(SC(K,}Rr U6_9WEE:'ع+6*cO͌Lefqhr$yw\puE_]}0OO=+@;3g>_ܿ^ꀩy $V?LP.̫si1:xj-%w*vD,(6:pu@TDrT.dY5N6PA";]].B@e!|3H2}'*vedLX}{m~:|-NIŭfMN!?L7XtX|l:=~@qGoT $4&Un|s`_?˩s~wyP-^ǧV\(-w]boS9cqz8Gm@жsW.E$iYwf|C梾_`Mt=q̢z+ȕ4;zՏEoijPX^2Ri pP5< 4$M@@ a"I ү0EѿWQlX8Elfa+(J2N)F1Wk{B.8 #|wӰY 5~ Z\ZcwR]H!, O`>ٶ`i̽_LJNɤӞV)| ',cT@,@-3͓m@u~VAE6.(ôP߳qSNG hhAz 7N|YX0̥k}s ;bp' H;Qnٙ || z5SWȋDy+Q>E,eQ% @Q >34OggS LI yo]db`Dqle|c)$^c0GI&ڰ.Q |)pЬߝF%N07TX4.gWj?zB33ͭ9 ]_ sP0C*cC/_h  P@lh}?)mQΆ@SU: ʬ|4A5-]9`pz> *gOǑ=)v-1GHzfw -m'ǯ (*ضdz-@ki֬aPwn|o1^UC_h~vFe&~:5F,X2ol{I#a`S̋j.NNp%t_no 59AH {6k) E}^0"S3H)۩q:ВCӵ/J]@]2I$9%m۵B)J 3iu kQ?<țQN:"4ǘ%R0—2,yFA\`rEg< w=f1cA.W H-2^H_%a38IיJ1xMwqѵ_ "$+kv^?z@`{dx.M4b\=ջ;-24eR?kJ ?w[ 0a;ߪ蕃ز'%@@UdŢ|R, koW@M{%pg #bm9Gƭ v}]v~c J  a/?8 pƑ %J -/0v=tW&p6xde rw ok=;,a謁O2`?3sjLgi\gh%LP Pxb?,@ퟥq.`&“_C=!8.}tJ?y0zk=i 9 Q Tι=gP\}YjoJ힕R ֶW #\[ F}hxlo^.)rQ>iA)P!  u;5U1UK ׳{ڙ w7֠HsSSo>zyqh@u7ٕ+ƵtaK/ 'j9ѵYq7 md~ݿ!fvAx0t89yWFFy.ʹ3:TE=b?`a1K,/|o¯1i*MIF7 `ӡczO(:y3&޴*uzaS pus eǬLSaRqoӢ8NCyFÛq}۝[| r[pHIh =߷ivsy~@.gm% Bh/6? tɚRv/]4k> hz|I74 ʥ3t:]|"vu6@B׎s/qr@Ux9=&uGU]HݛNն_Hq _` >,۲@+7`܅@DD~ `$l:X6|hwq Dp ٍ=ݖ5e%S?Æ|M]w.ezxx|~Cso|p bok %rt~R@W%" ,ΏΫYaY} zrfּ$geb!\WC?Ԓ39Cku;t^.@E4679R>prg&X7i ܴ +ڬ rߧ^Mt@T?L;Ԏ) ؒ 4Fn4`,AKijΘ^^ֽ=9̮E! [F7fC'Pk 7e4?<uo$(ER`{w]wSƏŷR|TZӡŵgC 7sPʚ\Gلs_(? 7-9cO^svqyA~H+>K=~0ԊZE'?mݞ1 %/2w<-Mx{ixȸV@/ #yr;vyޯ@;@G@-\YDJJ.Jk-ZgH\ֺ5}?NNXq>= pq榌\dc ;&}VpGsO[ e(% |i#J]@?g-¨_<S-@w.xz~g`}}NP_}$`$Y `ێWgwIFm(>bc% C|3p@M?;``m q$u1u̇kb%jM LVЛJ8=AMk*0.NGD#T].8ڢ_EEPJ6Agipw!SRŜ]](3^-1@\A~\€TSJ4Y'3Z!? .*}ח8<;xPoǣQߘ#})4@uzu̺;]P7(@l 07]@h2M 'e@?0""(e@OggS LI,A@KIO0u^PWoRLSg'Ez,{ErbxNS،po Ԡ@uzk?/ET#xX2^vw*@vm`TkŃr|u7?!;vp4I{^9PۆYLpXeAcLa5=|2G ~n8EU'$g6ngWNgţ6S4_66`K 5vNfΎ|yl | 4s۽{6"XfAwןM#)1w|hƓ=-q~FH|뢹! Z-( 4!wZqS<Ӷ/ddhװY>_zQ}3lŃ뽗P%3Du npgO]Td/p UVSgTqo[B?3VGG؀ Z ^]ܻm):%A⳹EPV%^Loy׸󏿿=k#xa^)u UJD $ٱ9 0;UX件X6|{ ߁hZD@}7q^;>n_n26U= ^+^|s80y:FI~3Z/i-Y (=\\Oyb(4vmJf( *0h`/`kB+ b:y^T6(v" Jgs|"&X dfd;dM7GX:hvTPf <x6Tӓ5p Rs݉ss:[YݖdP ]䳙"ʬwvA>ȔѲ̫#dܸfK3>@U$bU88;wmݻ;vŇvPtTe,yɒ~Ȫh D_C^DŽd%ԏ[ת-|q |we YYz.zuu(>ਹz$+'k<ų d}WoE/b?12Ciw=Pe ` GR˔) 0``AAoi>ݲ״ˠ-hE)>!ۡuh;5/KM36TiouF #F| w =G:7ͲI݉>78jVNA.mߩN'@4z*@YuM6;/7s0_G﵁?F]p(jqaǜ=(S]A<„]2DPfzQp }00'Fa44kW@~8QӶW@* MU==Ӣ(L' Fn\M wwɦ!M&|xkQ]6͠`Z57Y3 DLucO{.[ә{p| h~<}AM{oRIM zᮥd(sv-:1כ壄8j\)br'hɅ .dׂ~3τn}7@A8ϩw )`k=wޙ<\;@J~d~`z1- ? L)֤5p|m_,JBeu(0mnnInPR^Ͽ;K])['4I AX_@ @Lπ&]uVXu6<oh.=ϋbͽWUd9[ׅ _"ܨЖi ?0Sl5 {$9B [ȡ-!{)049/:2|AZփI\G BP}9CX }.vYr< @sAWVPot-, E&Y$j')&0|L^rt]ʪ|;-|!Pi1GE4 aj "* >(#n! {Hs H'{K7H~Ὕ-(K]Mcxcychh~p?7WpAOW7%K4hi%v;yj`sj=, !1(F<7NJy~V-W3!,ҋk}/_y`?)?%xnXZLyuB@Ȫ=񈼾5Ujv|Y`7WA:FQbc6V: ħ*\rkGYK&:2s"^np @ |uStPPZUUQx%oIHX+ ; 2Gя*  @"^䄏/ }6?XP~t5&cmN5$1)wh=3<=YM}Q(9 `\< X xQQ PHo`_?7רּ?%u>Sk@Mߝ^ev/3~ev`ތ9x.s!XZ[{7{I!@EކKwǀohPv;ՊҟnD/ǏC7AS=E&YTW 65|Gi=[- 4q' ((w`{V@6%r>Aą,`+2_0-w6p|-`OggS!LI ~q~ug[wn|ު &=0WcQ3dʰT?r:rl0~Sbarq6i,9x < | "Юmb:OW^^B1s{ajq{<\4x\%/gsBII<zh-}7S>~ny4}ࡿ5˓fւU,=U9y$$7/OW0ߛ ;K&8i7DW7  `Q`@€4`Wzq@Šk`|oe@ C`}` ?-2=Z1 cZ3td"n8vؾ=477Mg|8A`o\͒Нyn{߇ ~{nK >77(Thxơ)p@۬f2{ &9>H2üXfI?ͮx?Иm/ [7P?l~K8%Gc]UUdHF93Y>'=-`[2hqG2} ga//G6'{j @| xfvT{}}akyW29Sӄ`qt"Ͽ"e0g[F=30XߪR߾!2@B~ ;y oe{bPx ơ%#Ь/i ]ᣙ*c^jd;`C89|;иfh Ώ8֨Ybu%,vW붥 AWstBmϣ}5Yoԗ4i\ X 20T'ĊV(тnxH݆R<~=XX&LGIX瞣 c1t<1 ?DB r8 .h.` y5}9WcbD6Y|7Jkމ_y~@?,V >-f"p#^kQ"2.ckՂnCnɄ38GfϡFJ؎\kByж/Ibp8aOh})|aCXu-=ݧ>>C0%~ 7J((4L)<ӛrCRyxa@n3K=0}|=42-H>;XZ0 g'TGQd<2y1a; -. "0saFP5-.? d+@`Ot,~iC\H0-}KA {=S ".mšb-Pf>'V"ۜk|]D]; qWB{+epo3Ex^\Bpɭu{7w&o^ٸ~P)}8ՇY! 9vc4d4|6FI܋yz~(`_/ iϙʟo)=7 WostdwWhxRfˤ_KP+ZNO]| :A`9^j%!=|*?M`nX jm>(baB`"8ˌB ]+n1M&N0Ng]`ϴ}sG.r ..Q,u޼Ef́"gV ~7YL5Ĩz(o MZDI9eNf%ϯ5rʸxי8 = _ąw:_L4p~zw|WKcfS3G< >lz2 Jwt1 o1^ݷU{GxXs@MFf,:ńE_NR륨@T,߫X?VAL5y#aav%)Ä5< G0αG~B*F>5oڻnN@Q=[Jۉie _O'?[SrZ 1Ӝ-dn$K<05]-oѠ%PZx<ۜ'߂A0k I-˹f~ Ղ;t}O`^J!4v xx':T2j <#n<~"|x?0Y^,$v\m|P ]n xt~CY$or &> LQ* $@@([33OggSC!LIF =ARR\W?@@UR{lY]5aQ͙#^v-z~vRH#p~FS37+7M뀧by{>ٷ ĻL.܄;0(WO LRf['wٿW8 ?_^XpkbXVOM4^4;(LGzn:IsJ/0gr|q<1JPU{0<V5Ç?gq` =~\{9VΛ*Đ# .w_!jop5w2F|&0_yoNޙ[\F)޳"hhZ~0q`}P0Wʂ?PNMx.y^ Q5?k^u}Z6E—E[`~PDD,$"HFp? T2z@dV]7#|3N3(7#7knP H"< -Wke .k]Ng5x\]) u_OY v3\pbFs&u;Joٴc7ψ {ӇDzW>Y!. U0 2'P6͑3yL\ws7O詷"2(8w&͚g=^gE}*2g{fM7UsZyȤ<C8(6ZZ$q?.`mkfL&y:#   Oiv d(y"}O>|b򌠯vƬPxk[4owL=x *7?|fR;NmCyeP?_ "DZfq[!+Doy'֌G'3WźuXn\Bu޹*t vQߛ[X4Mhzۜ/̹#'}+!ȷOT:%oB+WXht}sOpn72)'}ѹ=)M~Ge[: *>3LE^( ]=z3_^oOV.ug-b<xփe;VDK-kaןov^4L}Lr0ˆwUlR^ܦiqsT<|8I NDI~)Qra=ӕ(}qbJsumS1,; _9oшM:KeodB埞}b`riczk5NG7틦}|qwLjTcXc=:z}_4P_r6Zi,j*8ɒnѓl[r%V18䉦Ѽ'/V9@vj[GYF}᧿^U|6f'մ|X͌U2͂5ss1}SA>!qIӿp~aVݳ6O?<DDd sOʷё;}T/7:,pg<[qS7=׌PbX՜[asdj=9_t%}ԩzٷrgz9#b1= Ls#b}gU?_Y=\802yAS鿊?Owe}cgsLắxh6;=k-fY"\d_Ȳ`ֆ{lst|sp2Ϳ%O?B,`ty/p}!2~,+fwq"ڸ+&uѮZZqRseIُ3"D `_,A-^=*WQF5 $ipׇ @ A{g2 ڒ]u*|77&R8(pǀn͗3 ~ pfp(ttL}دVΗA a_էʓӗֶZG5 ' oL_UÍU'DEsNArڰGrO: ,\^\^lwSn <﷏SLe b~Pi,pŲ,;nmEO ѹ+ 1? `둒-вmaDEadԵD-ʕ]~p 3{^}8X:?CS1}T plXiv}-QB+AhY,(sƙ~ֵp{MQi<]>OE5)k7E=%p>-.&b; N~rG]bfw=&d]_Ui嶩>|uG1QW'l?>i㯗!p=Pe@vE>?W2i=+O&!ٮet0J zʕcZ4't> Z>}=a>#l]>ԿW^| 'P.V4 2wq;28{W'+e!{2ry?*Kk+un}NjA4am`9.1-Eҙ^ydEӝaM~ oTLlQ?Ω?q@apN~9?.0dzdX:WZ@^ y$g7=3 LJ/9WG3Ɯ89>>@f~$op@Qkc[h$3.hV,@߈@PEpDH|P-9=ipyz+x63k5i+EYC0 k}LӽF4, vX7|~fq +nߏ5'ߧhZCBw]ÓW;y+YM8 L8C?}&L!mO%_$ ]7:}u!QQ7 ŚsVYOl +aei f]ĪzB 2~8oM|zr 6? -@D;Dt͋ɡmd"ھ(m(60j!L*! JU~MYO^}$fX3v WÃmk~4( ?BTLB ]:mo=O|w@ \' ~k]a4~wq ~ MՂǷG`-YSsFT17}LLv36бhg =b-$~胑M+?gn.U4Ə2/HHUfz ov?5G`vK=@[h QuX5>8@P![P OggSp!LIqYar_;;<;;;>ONOww]Yc`ޚ#9L*ۑ;OLvw跚1OxNRU1`b[C_d1ze=m6ӻٰfWXؙ)Wٽ f>K+_cn@ _BrwYoE\~8hEfI\awÝGsG>T,$, nICD듯?&==>eܽE]ߝ-)+!|V3yax>`C  2c}_8?p4^'le6w۲}S1oHih|wW~vy>QORgbUۈ`//͡r❱% Pmb!@6yv'vS4^V?wӮݶm`-6'c|0iojnF*w iяYLQV9Z~w8\:7Y]Uo_)0fƪ 0ky\ y~l2 0C<'@_篘|/Z 0]y]3_XOA%V:GXxP-,+#`vЯU0;@ |G *U|`m+)J? n1 02"P0'9H(/` ׏ F b+Xk_!*uxerS v<y}=QM6I dR9U()|z- m5ʹk*4׿6\]O-d!@jsE.Kb=C+j+ۈO˵L|?7O Lvcj%ש_NW? \&!`/ew>pk Iguֽ~ݱNUXu눘xf (/53̒1/*Bŗ~f2Am,dR0ŕlVJj[Xrvۙp*.8S$*KLK!MZNVfqW](9l땃1)u$d&+Wx8w&71bK;Wq8ZRe W ?]#Z+9'|cյA?ˬ kUPfu8*+<%5.[*Ƿ|{tY%Nh~Gnm'fa;w_h7oru='}rÜ{'Ʌ翻,϶wQ`GT#-܎ :Ð{) ' PkϢj\@MwwZ¶Tbdd'&tڟuܟtC~S+>-~OVv.ydV erڇ%6{ֹ1A yqLPZRh+1*mVq}6o -&ҺQAڬmvs X $׷A`oȁ,__|` -QyRɥ{Z$܌jwv59l\ (HhC/#@xl<dnHAd\1Uo> dߣ]<ʠ#i׵o_ps+]AzP)v›Ll#,[ZI<ޑמ[Y} e./,k<@́uӐ H] `~5c#~m[,>'DR![hi9M죜tjZ#h_cMEv@.+8{m Ma~^x,ObѾ=FxKVII] @ѹ(3{ yv=< ϲPE70%]sYfYvpm|8mgM[W}m }>{_2(kO^M\r7Gs<;}h)XE@5)'ymY>'KUDC䛁yi$vγ}8P<7P7^0S:o,`"?ڙdM  .7_`T %"YLjg@R3#L  -g5=މ~pNoψ?` ~7gopg}[̓]g'vP!(l@Ђг%%]ClK]G5/C]k{kes\@*и—G(}j zAa6/pKt]ҡŷ+|tq~:}un]W@РXS= (5Rf rgw ԔQA|H`!߂@0AbV' ж@`^-t l6z~})c]3= Xwx\%}=q}j`] .">x}M P/œΎbyϓo7lk9a'd;t\sr6AHDd:̚w`-3 |o^VBr 3ϕI]145"~k^]P'?YZn9pH8u $Hj B$NQ]>HB pbPx+`@7LV{r ȴOggS!LI9O]=y|>go~i(.i뗜cĉ:NQprM  05Qvnӽ ,\޼\Ҽ?puARY lWݹF~7Yb$_է߭2u=v^3;*w:DlLhjg&ETV>Ƞ]}O|7p t߽=|bP<*1Y=5wd\z>ݿQ|ǽ0)Zw|~pKa[^oɧDTnޚV(>;.V?N T?ٿ,@??Z.89\ `߿O5@2}gTt$O?262H7@k}.oq@2kZH$w"@jmĭyݘ |f 7GC0c& 2 ټX[Y<#BKM0ݺĆ|vs]Nm&*ib>{ylx8l*p @C@'I7 pwDfhR$l>zе|4 R/a܈|esrM~.X4v8{^߯%^#~Gdb@ y׳źާߒl0[O5hS,t;Ml8o{FS,]cfyr1{Břga8&#`;i9{2O`x|P- `mJ??L Nr8czV8nCoŝ x<+Q ȥ ~UŲ@TQ f|i|Sy}څxFݲi8}2ߏނsy |~4h>ݮnH vDr 1UIwO\y^G6+4s;PJhCB d11'72Noj&%9Bk]}35@~ `[yUVW_{2n`0<x瓒zu= ܀] @.v蛎^`,|';}*Ɛ`!+%w0AH3 >^y-OˡMl3#-*=,/+ȵt'F3 m"Cb sE8ryS|/zS@`@%-@|「J"Rf7:֝~F䴑]ppY8u?e_!y쎇duf 9Ux^Ŋͯ0Ý^ u#6?__ ,%!'!PQֿ{"b+@@DD]\084>ؽ=8 sj=evDy Q|4r#JCv yE0d02P97_P^}gi ݏ;I愳-_dXI;LW^J.&ng72<J8`N.o?4+C\p<~EPz :xI~`v#6P`O^n>+_N`j$" *$xmZ4ڑROcd<_t}QC0!Sǧo,sx@2"R[7M獢δP'6}@4ML<1qCLf\ܹ_` $T7v$$zePurz;q%#r |_34sPᐕ' n˰jd{ #@OPaH4]}օ߃(S^F`<_b;?|N=< O9.A59g~T 1h0xpnf-J >yIf'.mGZ(ɉ  ]}>+`PKs>P=bs)KXz4!| =?NsXY4p΁s>/I;326;?KX ʧ+, ~@P(={@|>ZzO(~YE2(uds>@q.H\=S678[]4YlJq*tx-Л^}{}|Ǒwh Oh%xouPdŋ4tyg$@Q@Q+9r)pnX}9%:lh3Ȃ\`o?Nf5@O9_ΐRh+TE0>@`ٶoyE@ml p0g@xp ` mXoypv=ceufޜ)vik=hOJLK#2'>Tkc Q@W=q=~IY}(B[Qf`|KT|J<2/ɨeliA_ǩhy `)v/Yu˅M^_,J`>TP[(E:]`,\^>^?8jXaCNgmmUb>.?pk Z<]Qb]9ȔF1H6XW9 _[ gx"Sc%@9fnXĵ-HV~"Iьqu8:Qcg9+BL IFOWލsvixw[]۳q|{23Жŵ0Y=2M~Wp[<4{F23W̌|ί^V0̏|.^DMr(*VƗJZL0a!?O/@M_Apy9D/ pϑ8Y32a 33:ɾpw5ɗٓbwJTl)2 o EpO @̶%=% A\QP r:OggS!LI+:;><=RUNjsoadffZ|R; U//RK5]ۮss~PAb7IJ6M^wzpwy9 BuArRxGT|ׯyɚSs)m͙u|_2a*,ĤLɳ |:y&\]E~a{wO4F.ޏa7>ݕEv4Ne#%IwF`GEt|&5VG([sN7au`Sw^o'Ư_&3 {/xvIy=Z?G@Q_g N 0bB[9c}mhnއ~XkIjO9ls׊lQ=W-ڸ)ؼa 2Gh"< аǽ3;"|bа}4M_d7r*HIQHj~c~YpjEƥ-[n?f_:vݏ[A3a;DaJ)Vvbsn5::?-o.Cxܮ-կ|詓 s=fWWO}Oo\7F1E#բx@sEMk(:t|w,,7k:ۯ{߿~8t\M!!y޹ܳ dhS{{2g2 ^GD}ٮvh}>WJO?6@ϝE x? |緋X/ @~#7<(PiwHE\s. &A z+YM9CEcn ~6.ft\SչPw]$Ӈʫ6uaWL%ޑo|@`[ ^ogpsV'{H1&l-ڪ(og۳0}=;znTX,n:ʧ6M.،4['J¡eoGuof7zA' N`N.f t7>DZ_LU]rH1T_IyytC:q'~>.z]F08)e2Wl] BD21 x|@Ix@/{I:\Ur[|=ṟJOt80LJ1ky{ 罫 KMMAAwsx[Ĵ? `pō6+ kHx LDӝix~Fx 2mUOTL D8  o2 ٝgqWX#_3qgv+l[r {5i>]n}ȣP^"Y Jb;uˣhjێJG>'[^]w)9@^ڇVT9CS,^ETѬa?Qǿ6.;#Urvx@9s{73aYHLGpO;1VfEcN6^ӐWT b!c cL( KMʽ-,ϠtdngL=MW4jK4X2.}jɓk?2 AP^/;Uod֋ɤo-LeEݳ^ag/{=~v1 2Y=Ozr9drmw݋E88^jODAbn_K~a޽?QR.(_[8_ޯ;20 1gϻmys$Qzx$cӕ.@1轢 #R-?uPZ 6f/YP'êT LLi(, +D^}D1 @wk _%hX[aNmH3B mVD>m'I.䥼+8|@g4!jgƙ_|@/_ 8SV93RB(hLAP9![ _S8_6O!IeS׿-m$mܲ{Oy( 7{!VXj9Kiɕ+tl8E&,|h/!/ ϭ7} kg9W( x7u]0 ]/VO0X4I?]Q}3ozs* <!1Bƃ[Nlw aLBh1ީ=ѵ"tO&-s11 jmG Lo#J'{// - Ms'{?k z&}u(@z--[ <4$/ga]Λl!ɕe+fgYr 60:TIՓt7a Im<6 K,@ ] \~3Y51sP߽֝}7[ |?u <䙽#78p`d=H,r@`(0! HN,0@~]K0Nup*끷Eƫko9b}{\3)B/Q"Ȃ#f 3xvۖJ/,[L9l`YeHRE+qDe5Lu2]s9@>Mr5ߏŏaj6_]s@3~|' ? |ݾ~`\pE'.[P_ؿ`%X& qY(eXt0@K* !_Vh@;R9OggS?!LIozsjkovvxzcz;=>>;9RhZa"r6 5<#5{ -Ər-u2ot)NjD6 Lt:g8>Lvd.tzR>AC!T퉢!yF9ik;1Ą6{l(}LJr9B (6Þn3P*@[= G q?חIR1>}}w]Nˇز,$7 |ł/d E-~ G@7I`: 񼋂+ ^imf fA ։cuN?7pK'ETinHB(S68/+Bs tLΪ tJ2/,r!pK{UvL   "4<;}Sط+ab]rO+Jd:3t {ԏLp5=9y0>a6z[:!<ޘ3CSb9Ǜ(avQogp4@ٝh$@-\dḱld7GP^ eRJP;zw(`B҃ yC)r. ڋnr 3ϐJJ^氡q_ 4-}`뫒d= }T;`V X!y4S]5ޕ60FG`/}N9gceYsM5~1ͳؘv//DW"֛75E-T䡙5O?DiPzͩӓF-AL<|}_]#D@b5$PlԦY27$9,' @ H{|Wd v, {PM͏ɵu3h`=LDF'FwW<k﮷z|񟟾9MZͮ{{m'p._2; F{^qp7O0~o[U >U#<380I f_iBaH̜Jrq\ h Lxl-R8tcE]\kϠcsvxe n>up!sj3$ h|?M:&$[9|5 yP̒ŀC j1 @Cxp0M2oA"@~7ɐ(+i_X(&Le0Vށ~p3͎@(\`#aDXt2[p \ȹp;pI]ȳ}*xr7x#dbGAm@ZHUPtn 9,ZsN#N:WpKGOwZAgrfPu) ,,?,Rk} LX鱳͝'!{|tSڜ=_h fޯILLz{J I<|b~;H#r01 J c[F(T 7) #-l$HA\ORm@Kq`lO~ |_.؜%CVXuMN'|}*ob#E uG4 8{2@B-?/~Jɜ\ Vw #vVbPmޢLHcKliXqՃ8X `5 E֓:NSklL.Dg7&v~ ArzBUpb,v@Q(66D ԓm ߟ$Ӭg%CpC"ц1\y 6, B@'eO lܮ4!HDjiֺac 9>?9^6TQH- y`\4=Ƈ_w})Ѕ᡾H@ db: vnavpUZ`Alo&OCQ_Wsk+&>'CG7(.2r; |C/Z˹am\@4d} P*˴_TMpJLH`TiS @~=D%v@b?[0$T_+8@U؀B`ПWwq@ט/_Tm |5r ޘ%!38[I]YxF?b~0/n[{Fm+n`IWeFgam&9c&MJO o{m5;~T?5=Ado*`0ϖ3)hju2͓86Tw=QR@b^ݟi}Ց@y4!?A|NgD+)jƹmm?kl` ?P0 4IXv8QAcD@#mB=@/x@VhJ; [iΜd_ܷ}qz-[1@gWvnLې 6 Bb3u4e!:[9g䁶hz_DK g%h=F^p>lŤͯIwM0]_ߘ^9UǺ[폵&8@NS9 QNϩ5}$plx`H(YP>\]@ |sQ Ia@&&]ScѳI*tl  (b=D ql /"d *W b JAv6EE @@\:YxOScn[ρVy,0Ab4{t;xMH=մR9Okw TH/;f~̓&:+pf{"bU#6xULEh%SX}eUPkY߮gۃ\.>} Xըc}Cݣ$0͉,o|.Vk_~=鼫9Ӽ<~box~e xcFT`Q@ՊOggS)"LITMjZ<=;<9ܾ+v~KeްʹGR["\slלW>z7 `{ܒhAo\\{+ao3/5Hl( &; |Om.[Z_Ȇg>jO>o|9O# ]L` g}IQ; =!יO Pאh37okߊ+㗁fzUɬES2WSow;mMIf;D=`VTV` }DUTbAʲ @ez#E'YU- o{މ_vlzi2 -Fy&c]܂/ַdʃ0PM\˖‹꼚|m$fAERdegLgO3d1&oZ>zhftZ9o/6Oҩe>rT " }J o3zgȕ?bzvO.1G^yg`ZZvOӜypחWf#C*~ ܋ߢxUKwf~Quo~ۻ@XzzpVL LW* `߲DG@}/jEjVvosrqe3Xn Uy"(7qv . p=L& qW2fZYV")|]ٓ]Ts-}@%-h`d2~{eJs^'+GT.]sU|Ŝ'|ZqvD"L<`dפK4xO׀ViZN%܋S s?aw,hUo\`]kow}rd}Mw^%Y,B(? D&A QiKmNu8[n]J^deHZTkl?>bZo.h&j'Y&{ cT PC.}WJ<2|ʢAO~i!+ʎYɦbdh f͟&Xy!^]>߻[Cg4@'UYۯ +:EVPp/މRQQU}HЄ 5 lup<'Vb C0p1m#Q?I2t]ݝjB<#NڳWt78 /\|a^0vкrwb(@pجZNkeB롡}/R2@ve@q@h;cg!pM9?HDX晽S]Z.n}j{>8Nog:yffgK  m빓{}>28?UEoA,ƒz~A4D L[ JmJڶY{D@x%~ "@*w^Âkjxjf:P첈 O =l/w s8̻o\GuAk[%|:03p~ m}pɦ3M+ ݐ7}37o{#NޒfN+ z?q&1k:7 2 fu;K32.x2@9=o{y4~;|5)eq+`|8 #>9X}k)`6s"-- > "@Eދ ?*a FxD>B{ >-+M7Q8⯺&- Ճ<3K%pq @?1}Ԡ T* mI6Pu|st^lҶ%tDg寉@mxSw+\n: tOH:m2ahm18k3{t&Kfq D4=h@~G)` ` l sQ٫꓄-~WQiȐg4G%W эֳXc쟮tgkoHh9`t7'[ҝR OnWK/csg|+WC%O_[ Ao/PE  ¶ݍΊtRH]{ v@cW_f؇*jH>W<@-8 ɇ mwD(@Nr>w`l[0`A!;2!x܋P0p>3QnyR+߅>}e/W\rg#sq7i ATtC=^*.@e;_zҸ6 *Yj\ xm2?capi-][_xL2Z1k'_frR:=$l34%>Lavv>6GzWu/ Y nJE< @1~v" n*yFʐSnU9"7, ԑK#!W   coNY\ @+YJ^]=zhĜ~yKLje8?b] G@E!UlD/wI10'ɨ\%]I/[^rVB0<\v/99~j'kfM,˰_{.` &oˏܻb bh`?_d}h*İ8YEO%G~Xwx>!.by+)YďF! |8q>oDy؈,>sd7!vX!$@ &dbKxȺh Kc&OggS]"LI}T:AagVBUUufWU>]ť-hvvoУ+Ww &rR4 !!_x: gc(jBaϺg- 2.B{A->=q&a܃˵ y|,4m0_o7 <ƅE##" C1?rՁG6հ7uc9AޤRb(s!ڏQwӁM_W² q5];:ݙ?wB5KRgzKOsnϖ}SkeX;wG[@ H]A9lPkC<=G?hosgO0_8a~곀 (`,)>]l=AKfr1 UH٢uf_׍b+0x7Kߝۈ('P.`|I@_`m)ۜ?<_B(mNiضVRa٧9->Zg%wWl(9'?g*/jm ^jAzTP_8~__bhJ=2LyexdW[5pSppDY%`1|4 =M6֋y$_4@hWAG0>jR2ٙފM<1D^l/^y=&}b /31\X]IZ)''yL֝drseWu$flOS0y0;Gs?-_kTi%s` "@^y1,! ug@5', U6, 2:mOHHnGǿ̰Ηk>`_w @ m;l B$~2q#0 X0?P7{ ,! |l y j6ښY$YVO}*0u!X"K n72'+Z1 %H\:*0?f|?1:uu|yưsy S?cyy |߷0Б귯\s֜ !Yyr5b+]-G2?nZ.&p.|V~ ):?3K˸4 'z8|A~j -He -p'O{,N:c|Y btـEa$?.>$K|Z#uXō*dC$)ch`0 l=lCݢ1S&QGq0b\g-rli@%5jH/ I[GGm/;egηttdw^ݴ}ss`x (Z*_BV|>@FqV`o̟bwo5Y[ (<| qdp% [.rd{\Z ljNɳ.,]q9EDP,O+'-Z >9϶%{D# A #KlYbg[9R o+`Nloz5X3mLM[FxZI n1W 统% @7d::۶mkq c=\97Fz`73 uYB.Emk@]ڇ|d<C Hp|udj.ϵcjI|218 o"l*O9ք"BE$YvojRU`@^JBvH`{`$bL # ax1`opWx0S)QvLFi݉m< %)@{o[>=eNۮ||Hn$@Pa4,-9gc 6|2~(uìyWv0QgWwKsp"򀄚wFL<f.!6Css3{`5kKXW 0fPJӝi=aY~ aj`< )l k>?~;}^\ I7@Z;L8|σrW/X]d$ DQ0ߛCD, B *v_H pɶZ !6{(P~)=@*+@__ۍ'i̍qNRHEX WȝD?}z%@sS`Z' 8k״NZşϤzM3ݛ鹿|G\z* hPV4yL%0Oy=:tWI"0x:Er9.89~.oe{uΝ}|` [=_n @ɲ `XmÄ~a M?*IJ @d.|@>i{ UA>>*}%>I4MZtoN 6#1񁳳jb;m9[b!6_Xߠr1& \_y065,Gauȳ>cEXC)(1.ޞ_K[D"\C|}uٗ/^,&?&so|B >ZE}DH++ -Jz|KX&竏K=?z`kh!*< Ź?`|ٿPp`L p7@lwl {ޅMۑ `ga cT ^sO4-@h? =ZVQXDJW0)8R>0y$NMzg5Ep;silU445 WliY3xf;$QԷGwb^sͻ4«ة&?]ɆdC-or?`1ðNUe3xWPygo͍f:?q{90^:;P izy͑H* [8884,MNCVD="~D@TU< +0S@\&|3m<]0a`Aja ˊ l UQ5 OggS"LI3grzxh@SV}t<Gɀ!SEk[™!.gKVxG[gusG~qtCc:x+@k3 .gV)wY}teu_.Oݠ&w'2׷+ϵeJ>@AOA @SE$ &8N PLq; $66YWXm@N|hK$2_*""? DDZk@0&ؒ "Fʥ KchJ}kPy#[o7~%תqZ ε\>k|4 wWO^8\doi- ѥW(U k{Zñ_%gYi1Y|~e\o(e ds5'ЯG'՞w숳 o~HH97X@quEL}R|T'"7m 6U "`5Tsm@. E ~Nnc `3t׮K`((P' ȶP@E1 >7 39@Kƻ 4~</c DtNb-gK& 3z>1[#7N\sl(j 3Ӑz$㏋`tf{ ;ǹ>;vMZJ4w`;$L'P.o8{1,ra*|Oj/_4sop6|1ݝc>|#WH2@>u_y u˚i),-X{^0_bo _~Ok>ustlY Z6ע 1~G2 @H6)k$lYH_,f c'_!XVgplk d{[m~d0r9^-@Î}G#~ku9P:Hw}DĶCAjZ~si ozK"Ȏqq8k8KLu[M'oϵ3,|hW5v̷_ϳtKv:Hr@08:sh5ɛLgI,H󉗪, ^'BzPI ÷6Nv8G\1!v&:/{X1 / e}ؖ|c'@^?a|5dȋ?{S\DH8D1:=~o\Ύ?~~wӹ|u6 "J# rm߱'{ԗq\ߙߛe6jiS셏|} j)כ66DUQ(qΜ'\&xPSTofNfœ_+u]  )fOff*>G=)x>]4Äc&ֳ/ Z߿?9| TySL.Tkf{l>G4*(Mn`7m`H),RƘ~w74 ?2_- ֫ BZ0p8rk4;M߻z>noxvn[?ϿwaÏ*$w#Ie$[?! *Y^djubmsp~}OvoӟF~~\/}UM~b#7i?$!EPzIud ZVOȒIc7!o3a嵏ٝ$` {RB7*EZi' Gh'>-~ 3A㼟zDj?qֶ >|d~Jd.UU7 7 ڃ4C +.s8!==yfoqΪr]=XU+a< l8)mff/ zɎ}{w$PC5<[x]1M5ypz[A:lY7IاԫW[|ytu8actic9*{9^1Dkmhvh\SU'-ۢ:};FqS*+돃܏͞c{o2*E ؜0bץ +^;]{]7˭f\ב›=$&R@s+M5y2 J~p{mͿ0t87h=Zoޖyme֙:}gzvj*ٖ'eNvV&i&^~ղ/Bls!rtj0Y 'ǖVOU/o{^a-,]΀%DY/kv?*sWg*92- ^Ye `=S8h~٥q-_*eSB?+LYӣ}Xm?fƑz>X \zkZn'/Bj^Ǻ+J8ƈkvXwOS^B|ܭvkYm*ۨ,brO,i(3wF9AlqCӄsPW 䇦Α?眗`@_=U Wwty*ydhy@R5V@ݸxd ߒ@n o1lmc6y?` ï1A`^"w #`>vzm jxXʪّIdyX8[O`ӗ 4q`jPAׁ }8¥YDx@l4?8n9`_?EO| E~&=PsA @^V$PP[ ۶ڬ-@کXk~!v2lX&sp3d Ds_N=p>Å>/OA,q+{f`ko@xN<r'η/'Z7$APL"'U"| ;"@-~ HȒ?. ˯DՑ8@;F/QiHz=䵝"Wь޹(Oi @ SÅu򬌢|ZB1I;S!pXo_ ߳?l Ȝ?{2M{6*aa(:7 `>0q7 , @F ?ct@`|[l( @?HDT6Db,#OggS"LIlu{nzjamgvi+9,zl Jad~9 (EG^@ ہ\.ϩ^X.I2ߴ@.F a|mCedI6TPXeO4oV0;ݼ>>e =tF899*@yMwiwc-I/_;TOiSCG:h[_1}NqH:PK@X2.#[`a"(|?H(+X]16O0]K`]E{*W C@bWӸÒs^j=ĽzIaVު%103-'4wjq4`|]+Q4"]D1h=Nt{=(2g֕_sg*P Meԏk:X(ucL.]:W/sɲ{VW埓pD&I ЙvfOp˺H{h aM|4\{sX Qa-3@ihݐkZ6ԇb𥦼T; HgklrmՐжgl'z9SʆT=M❼!{3P6\U]Iۍ~Ю9S4c ?˙L QÕPc #: 8p~7p-O(<ȵ,}-ȼHY/ @ g$p NI6*8ObR}zK,8|` Y9Ec ~l\v. ~&].1#(W}_\k!Ss k._cF}une{ H]'h>y~GҠ;X7w #Z 0? >J=H 5RO}N Jcq.~1wK43lWv<{#:t -n7Z4~?w`cR|W+۷]oצ.S_Jgpty_5ÁpE^eSo>D9|={,Ȝ9kcP|׃/w a8=xEi;H\w}'*|(77@w1 θT ZCȒeK +慁FH@ _eP+AQv(+ b@X_ 1@+Fx K#)mhDQ.la8JG=]?hVƏrہw}OŲP"CqFGk<< 1 6g }?'g29{t] O@wObso\ߕ=M DI62l@o@L/l .yfe(%D}~hYNӧ @<@Pdtv3.j?0qũ@[ l H#;"+ph 'Z_wo`ؐ !201e@p$|ʿ1.0^ٴn(Jb]b4J]̽]hXyTħ@Xa@֯1h/[>"@8Ѱ֕ҺC$]aNV M-PHߜԆ{ho eqQ')[|.O⹥d874p{|C-|6'8]IK7Q|)^<Sp7?P9aáCb@J^3 :,81z}% !-[`]W^| JB,d VJ;x~dA2\g*(UI#~m $Jwq)rt"X~ .74"`j<ld[|AyQ\/>&yyj  AWavk'JL'3_֜Dg18fHkш8뿏O-o?ý )P퍆:p" W0@|Ӣ+\, p CsDž+ v{4`;szM@2p9og__680lm0v}KXj{gC# BCk$ '~v[ h8%0:=m3H WAf&Z*0hι<?+__:G; 1&6!& \T5$IeJ6a3cj 5\x`4^h/\Hϝ|vmOi3{6q2-h溟i&{oϞ L)[ vb#R_,l:OSygaބ d7#4|=; Iă, Oop Z1@y6PwU0F\ٶVAѭ8vU"h%8ʭkkTNGFH rtgkС[tHn P*?bN;Tb/jh!/@[Wz5\G82cmn!-|f@; JuD N K\ 70 7AQ _|i[Q :&9dOggS"LI$w|hk;<;>PQno,ٮ$ fȌ.,^Tzj=~/۠lϕѮ$8 @QkM‡'xBPr@ Xl ?Qt9{uN;Me쏶flp٠v?׆G— a/ެ~T][,qN_*]Y>}9uHv)vkր\AN (Ibӿ%[BBWztUQD (w 6S@V oh^""x;Fa~onÿ7 G FKWȌ{XU l|KpDLtl`9'͍6ء62t'x}+xx[c|k DΝ02aCk$B1T2?x7/09n% 7wO e7~ƈY{{j +]=gZ px x5YkDOwt0C3@u ._by;_;9ݶ?CE3S{x 0@/]U;\| dw D} $B @5ف-Z`@(PPDi,P"Ew`|g9WB OVxBlD.4GgsJk 1Qr g80??\R|E~ynCbZ9OOn⳯Um m {&:˝e)2'"5>{;3s!-oCǵ|] 7爡 @z+Ek %E̬|;|J=pU}*d9s ms(jV !1cb4%ݰL[֨9GpU0Q_}3` YcBۂ9:bxkD (A( &`~tƋT&]łj)$;iT`oMӚ5L~M>53W̌/K5D:*Q y:C3BJu^+)2g|i3i2 =)dKTӡfA^S#ǪƸ}>פ*Nܬ}E0ͪAtfT)_J/:DzިwTy}֚g?yV}> ֶ:,D283JNyfCM/hɹ^p';΂RѢ&[/]tI ;{y3r^STb>HTA0kǁ`Y8R6"[0쾚9eȀejY H7]=D- ߅]E"a~{Ӆ}$pFq)3k=s/"KEhqv6n7@iph{nϥvWoJ_>^L7`f(pE)IP~X Mʯ)x h.bN.*!~wڕw}P@eI %.QbOUbvd0,  tfZuWU)yié)dgx?VA(@`|P}Yp,ctF: &4g~%mAXšG#]3b2>CݮsmG7 j]n*<\(ZB鶝ץGN&B"*Gywo^w>~ݧiNKn_CP|J@ rҷyڋ) @W|`+ҝmS-A~"8)tZе揨5wgfч.[^ ;Rെӝ,/~kއgO>P˟<DZDO.x^P_}9{ xbd&[\IM,l rY*Р8 c&$U>!0! KK @;$ >zࣉIΌ"bR~6b+V/O|- XO|1} x=ǽa 54sa%c* ~yk NxUժ o\P;eY7l%W@y(J ?:f qն@> ]Mu[V:ȹsd=9;%̞kR%x=j{hl(՟*&wYcN4?k:''jqX l;p"3 |GZh.m;L/b1  }ۋVa>zpx1?L]δz|R=_l)+~$bf t~~d&7}4\Uclˀ,D(܁bi_(lPx8ﱜ~J` qp OggS#LI&lsmXe\_cQfnteԦY.opM &ֽ>>m7.:e,u\4h,Π*k"Q |`9F;-{6wPu|*3h.ւf ʾGZȔ =zri6Va;RB~>چnd\tf&V {wti.#gD tg;gAl)berZPOݝ9^-`9`bf j*rΩY_7{X@ϒ`"q 3P,+2& 7Vf@αT(3bþBiȄcrBeSRF7fm q)/&N<ߗ?@j%:211b?+ d+|s4 ~5!X~ P kEd `قEW6\ FȐ :/%+CA0=f>-aI8(Ů^z 32 ~:^| 9E7y&6"2d홌v9>wzye5B@nT=Q nߒK4뛧/ҷc!z(77㐿rZ7 [izehCWZ!i-nsNQo88|mD{9ࢄD'|E0h2s89P'\9dʡ` Gж  .[`+d2Cx׭eaRf} > lL~iuNilbq`4fxqSŧ+~>o P#+g&DmjԶ(sr^=qv' hQ ^4vϞ{uX9~:Z$tqWyW|P l.4vXMqAN 8bGf hM@<}q{n8L}@jas݀,  (!]ŷWo`fD 2%`ꍡBeРHd.0@_2|K=I:y 4ؙ]VaiZ35B4/C|YBlX:Xm]kEF-'f{ξc* [s21S~ɞ%J?=}^M?afC&tf;l;]/J @2B t/sk u k}.ffދ(OB|kFќv|t}.K?/} ԇ{m8eګ/|$.ͷ@`v)-؜ DJq@POpξfyi\LE΀ >u2Y:.L^|iZK$(0w.|p^s0|7~eS1]yS J;毲M<(vX`v¶s. 2:rF  < =߸Ƕ@oRQT?@+  '\^q7!CA?ݏw ǓlUf_mkXz)m)42a:KZ7d>, ƾ~8X_l@{P}&cx<9H`[ӱf~>@z 3@9+?B [?uc<[҅$*鸅 L1噵qnCw.ka&IrAȁ:~7X,*y{dC}vf&J.j|T2 Y @RlT@~ k*@·^'hqV F\)B7$񬲀I%2/h5`^͂x#,@)^)YJFdкU7b</p yÏ[nvߩ Bs{ClL B.jsfy ۖ9)Oty @0~}$ `}/b$x HW|A4aw%!6m)] &@Q5o/ "~P2[9F |_KhX5ZÁ} 2X@.I;Q@P߱fX\}#$)j}3*gw0)^q\d3+U" &;}=.gY1rSFY gWd'OG57$6 H4!3E%%P\ߵ:|̘G TIT^}hKXI`^ -?þ#]. ?z]0~ȳЬ*OggSA#LI[q|=SZRTX_h8kJ^ѥl]>F!cG !/o*7FD]i-ڶ@)9՝-9&`}X>@9U. ܔ,)V*[vR;qp<+MЀ/|o bu^"anbn2@~5wv^E:o4I>0:zz b n`~ TA_"\,EC_x\'"U@]Z`~(_p.M7@8UP FZ}V$̐.d޼|l|7A y͔ i)ZH Q1W>{RAÔ~[X}쩋''Ho|UnI(d {VݢhAmwDNN?gnNdNif`Ng@(e9HdɶX7$98iV8 cɭ8^KNv |+|tǖl @_Q0HK >],h|ҥiVdL(P@dp$78TruEKͼ&_Iw<ņn' ? !;ՒպŜ eZ2lt?IFwʬʠ 78煮k BNO%uWz>oZ ')3t\|ݹ~8Uu:)Ng߳s$2L|~yS±@8 k",^e,l2 n!B7!@ X+0VDP5E H;jV-%E@s0PM?Cz&w_{<cL1V=2??Ȃ0je#[ϵ3AͳL2٩^S\;7(>[,0r4HeuщӇK~u2sory@nGi_{d+2BJмzfbmwZ|J]rS~=ϳ.hYfՏ." JIl~zt.9o/r\5;5F8N?8;ϛ~>=_S'?[ NTUdtJMctjܾ~T`3@zfIPH\ۼxg.?т9JONU926oU@{h\JGbJ)~]DZṠF5)m#>G3wcOo.2>?|'3Wzݘ,F1P8ߢtb3nSThNFT /UQ@WH260@ͷ\e:b͐|fs2?af:l gC;/PuɿfB_Mi:,\9W\ ?_l=6"mR/9Yf\w.B?,f]PT:||?ND(np>߿Ȣ {Sy|';|&k780w歟ް~"r"zu)VXQcYeY@uk|6? ? Wnd, p>d䫕^דQSt, 9ŴÇkA95|_^Q]suW]z/_ X玪L{ꢦ+ u@nƑ(6_J%7ZkU/_w/qǎަ}gsU =5}=Zk|Z򟏿n6v~sfgT>nQTƲ#k5NDk1H0}֏ePQ7A(Kᅤ@3773'9I6>h/ [Y?oUQY)x8 ުef,!Mh^՚!j܄¦O.}]c#*[0xvǙ㽷+bsn뻁{}e8G?-K3!}ѐZܷR|rsbjLg$^^g,7OM:s> M G8#.⟎Gl3\k94lN)=|P"N#p2&N cymgSj/E5,€ $Y&hX%[^/!|#ˆz&F `vȈ66ßR . *[óțhxNypSe&&*$DhQ,L|ڏa|7>h O:Wb>mfy[?S/<6|)zBR6޼^:TY{m==ݙX+gnwsׯK7]zH*p|+Buv;_yUg]0;ݥQ_΢4//7w`v@ XFM;73Tf^n6{Ggv~d~2;#5$314<{s1SRR^}wN4#4WiD~!d{d߸!V5CpUt$+3O9SFW5C/@M@I~{ rR>Yi|c2[t]p6>wgQ;UwBZZŰJg^5jo Sr -,?#|4P\Ϸyqr'@,.On#ɧ\w [-F+_ bgP`ʆ!K6HĖoLT1Lyc ɍT1T j `~% PcVscM# X61Iy9m7 &&t;:Pߞ)hOggSq#LIѕTUMU\Vn\]gvM=5MSmxj)Lz'>X\‹x(G-1_6ynyn9vl@_>qϭP |w2Gƾ}&t]-硴~/t|>[5AT89|$SX/S'?f={;haިFӬY! E|o%:3s4Da1B{f&y}&Od-ҷ\ȯ_@N(-\־KI ~ڝ9#/7c>Qghm^x蟌Ň?nF5XVr`|"ԢA =I|:}okjoٵ~& "@ ^yEԪ̻Bο^H~T TFͧxU}>>sh?Wj.ko2|BzR~~s}*@[L/_NiJo򪠏:/ c|7]@o6u:tl <er~xU򯞟`]h: 4 +PQ9_ "  eBv >ʭj Nj.|9`k^nHF*B^&a~}ݮ]sJOBbҞS L?B/b\O705sٍYgvRR]Y wg5귂|/σ<|圃2=]Y wZU~ LW/y?pQyIUAo~wݝO_u3Pz:7_]Qv- @WQ}x.&X W{7)p >m:aE1m"(`uiOxqh..^ؽ@d~TB U|&wI[ F2^ RȆ]yqp [_ E@N1WNRWki2h^r|ʳwR3SuH@;ˏ%PڼD8œPм>({ OJ`v7OTWa1E8zkQDb5W 0N4FxS6QQͭ18Rn5J,NxaDup P[~}.8IA,K-_{M?<1)1:Fsvd XχR !Zf4ys__N?!3$ o2L/S_{h C\;Efr7GQ09oP^ٯ1@=] A}d<qxbwB[ {˓[\Ǩoyrb?E VY"y48̜@\:f]<>XW#@U֜+ k%L+QI`w0G (Sivj(h@&kr-9CpH ^Fsِ׺j!DR !lݦ;3huۅ ?Suħ8wsb/ #p bҜy`2+ Klr 7rJI6_ϮJA⛘o;@~..*W/'_)@Elg `1LfrH!4^ K@?\-"* ` |d&<8@H | b ]PWgHYm2Iiå6gQ> ~\^hln6b ضA$ A"+wҢ2B%MB9ۤߏ661ܱ{MT@aݚg #]D@Gߢ೧a43yH~pp|p+/(ÿ[sZq8ys1~3Lcx@Ϛ\p=/9SX8{`T|@CC4WK?Ē䛀pkxыQ;,2` [@4j0њdzКNPzMt qL1QIFA|Gʕ' u1tUTAnowvBM~8Waz߅*RZwsQÿ^;{om }jvѲ6] ?=_Ey%ˑs23{p_֬M\fҕY~\z>:fN7.XN3f콶-sׁa'PŇs #v;w/ FTUT/?\Fa.2T6z o[vF;ѷQMw}F_~d2w0Bȶ%}oU$|5B6yvetg陫9} ?54;p35:Jaq~|p\ychJp;=jȧ;Vs-zц3~u"A|kP#0->.i7Dݎ+|q>t}Vnp@AXi=^a1;4ל47sP(f7(8WMQp}/VE1} jz鿯X쨤79*Y-⭊".Wt(گ.o*?^(tW((p 0 8XAhW숨s Q, y=#-zESvZiPgX9wčLg, zPOθ`/x7-f=R9D 0g}v&5r/N2smS[%xqcs =TP=2P-x|sqgtOxj[_0ضíSpxtSFzMg{>/E_{. s"$õ2mE:NkPMN_ .׬yaC҆Uoen߈1л.> /( ("뛉# X6"  >@ OggS#LIXbtk\w?>=D:JWS{r^#!%ir%5Wٌ[ 3<)dWؿj@8}Β&Ośt#?Rbk -ro*ɏ-U7>|S/KT~SȘOEt1 N(Qq._=&܅d(6ϛzəҠћ۝8_?M }ɽ*.qO8MZ0%r`闇ĥKL3puH֞/W еh $ @TzĐKЌ&:#եFnu%EBའ( d"_ M0(>zm3M_!81ޮ72߃1w a3 Xz3 [y4諛ƍH"'aAI>=W?:FnT&$OmݽJ?Wӟ# m W`t.|XؾЯ2{߼q/姃3\ӽ{tA2ZYTCc敩}n[GsE^.e2U?p)Z d--O59@ 3 /?ap QE2EAU}C(L [`Z,,("[-0p ?SzGgDPN_)4>+[1  ܝ5 @ X8t3HyoE# c M6r],̓v9=U_r 1\d*@*i^w})NP>Pnn {R2]5g7SJyU pܓǝϮ=b۹ME}Puf|܆JԀg}ϒ`N d U0@20+w/ &@<  ^#N[Jom >z]=+ BjW Q>f'ƞ񧅕vyN3D8?1TO4RmhDTJSPF#6X{TO+an 㯟,4'A y z7=ɡG^.m;A tDQj>J L7.T$i~A5o,y쟄aTŨ#`8@}>3L}S)nf'_U)`Tm$+ d߷GX/%,IzPRo0P:I QD/<G}~:ɣ 4\VWzFDQVK4/r'cc&E  @}GsK?7;qr[χϑ^-~lۋH{};3T'RE"Z6ER5nf"/ay99:yU_DԖyQA.LSKR G\7ȇds,UOd%Ip̉~=q\U߬S ص7 TC}|y*>^Hu_ F#z I@%+Y^LDTW!\ra ȏ" $=|]EUT{B V)0MGӂnQB"?O}fcYb/,$ 2KnƵe0ŵlu瑢]7/ǹ>u?En"yv5j}'ez/~G~K+O}g@'gW :O>>- 9wEN= _IӎYw$_a*,`χY\BEu*z굂 J=|ʒBe/O~ zo;07e<+3o>Ve0VcÅW?/}z8ݵӲ.z|5|Dal>$B֥Vc%?mVeM _ʋ=?0x?W@y=>OW tZ_SK12Z4{8;:vyv $KA!\|V0 ׾{h}۹sgwL!db_:?E?u@N}{S{t>̿yL9':ߗVoP74SˈkRZqzg;Bބm}7}-]}?>^g\1-x]HRo1mc\FQVEιzqω}|4aCX}\/kY^.װVWpFgx-g>Z%5$xC#;v2/<poE#@mga^㚛AˊI%KƜk ֝,K$z-2 @o!͞5NSJ >i;& h>jZErW[ə\fi?]aTUKKo.lyg;QxfȜJy,&zel)r_'ۿW1k =gf|PDeWtGF"ȟ wUN+ Hm^`0+L( guכԞbTpc}ʰL0@9|@_^lٱBF0~igH-h T q 5S 7qvVR \ _)b/ @]kj_]3NCh^,x~&, gͤ3me_~a]N;>jȤmuA*a]"LU5h/;ydvNvG3@Y kYpQ2^}1駻){稬A.VN涨$j+AE_ @u,@A   NdIH&=q8ɹ9FOnG-hcȨָ./3hm@d|+?oqnO ~T1VеsUYMڽ_e;dV̆ovЌsBlS@.x@v /2@n** ߌ:`{j|瀇9{[/!cuLl(J?$cm-qg`:}bwKow.ʭ$oH’W,98Y2, >\QQ?Ux?c OggS#LId)UDD[Ophev|:KL stMj|\>˕ɜ 0_Ro. bg .ƱٷG QT1@a<2wuN/*>H@VThOե6$f3C)~Yit_E5}o >I;9րEoygYCC͸Z?A 2t{'ko@a,^қ͕jn,i8g@S*f} !B'ȉsb0@h++@X5de 5ĽYLQ ->zd۫A;D%Gt.'?lwʳ7M޽'AUUa9ZMz9Wś5Ԗr e =qVdDC$##!뷑z6ڽX(YFG(_MNAg8\ు^)&}JN\XfnX .1H)&4D$p 6כ_>_;ݝ ]ݙ|Y3 \20e+q 8&d{Xo#0 DaYXyIU١\{P 9εѿU Ɇ3G,T/@K?o͎xL47Jy50PjɪX4Bg3M`4çtވR "`  Р#!tK NhNŕ9;+'D0Xf`ǗI;ӿ~ xokZ58[m_;>) Hk969Ѱ9y;ݶ3hj fyn.ƣ:CAV6tLty'Y<Η>mlh`GݮJy(i>9=~i =dgF&O2y4W֙`לy_?q|n*ͦvm4|S?<}o*(}%Rׯ> MNlf`&$R(##z_^uxXF/~: :ۤ)Z* <_ sUNi[|B 9'd/ mxQ޺Y'&gzkK١ݫwuG)WbN// ~3+AtqH/b OW:*9'O__:D4*Cpr8`3G0 @y3rBOu~qK~gA€k!]A 0;'{Sde /[n KFTkFԿl vQIx<ٍ'zU8f ?@=\aɉ d ; Vg3w{qؕU<=lL g"VoO])n*T@82M}sI&KigKb$bteaj;__~ b=fRH~jh]? _$|-㪛*j _c:_7ô] p0S, ^o۩NH6pCc .J²7ɔ̯ V9:D,:DeM"N]cf.B=F/hq^_@#ͭZ#+x_ZyXb %m|t?1_-t=me/d( */xt vl{k"/kDH9U'.8Zi!-; vA4L`EٽJj> ͢pACwC̷)$jtrz9ɚyibLx/L͋kG| S% Zgn$u:@K e0Z`vi4h@,38 w 23?ңh^=j;K+7ʁZqW,`$tO;ٌ2oW:K:]=h thkw[ݏ}rie2XռY?';;X!.J5 )ZkKMk`8>ԥi*W4%I̢W lؿW\8k<40M pkjGX\}FB[P lT*u" «+8A d=C͵̔ _>VǠIR8? Ʋc dYP"H0۟#+[ U=! @ӣӝŇ*ݝz 5(}hlvwn>Mhzjvtؽa'~:H01$U !F{ιd~6_fkq<9RSΣ8=3'/80!$^M,۾j YwG*i;_`>^4J9TP $RrO1*_wrgVU|D&ȪXNʍz\5fͽMڞ'l__Ϸ೟/%}/@Ρ1ݸ%^AVcrAza?έv YߥfOu<~k$Y v@ #OggS#LINOq[VSxyGSN`bZ:U;΂1Q%mz5o?NQUcD[gۗgƒ&޶IOW\ tͩPn`O'NPS*1h_WǷGnwƺQR3Jƶ3W *=hݮ}@giYH{E8ӎR͔YBt JV%ׯ4U]Wňv؝fzsK|}tVa'Pj ,JYw`Yz<=$˻Ȳ+Il{ո{p6ͧk]`Y_#`X`Cfaxw0iUF}\*x?4_k:7"!/:u7@himJ\f- ^ߘ<%BtUL_7Y"%Poq?S0YIء_YηC3~}jtvSvӗ:LɥI%x>?hޟ퐩nn Y!ۏ*#a? `? 0+9q 6WfZ,@1QR7̬khN#AhL8 h p cΦ8"->T^>}2 k@7 '-y a7/@GU8@( L]( 'c/ KzAN@JιHM:?n*Q1q{-fI,;x=g 3vԿ#yk{USObQ_SX'=/hO D udJ?:hzU=uZH`kT`. 39*`V>*@@!Dwnjʽ=)r_z,wkY,hOѸ_Ě E?XΞwPAE_vtW'9^),^OC;ϐ/yq>+Þw[9A:zul`!A:LnSsA}_sCO{5 0@=ϳ?:>I0&`ɮR+4W"= &=ߪ"x+ (0Dž3I[ק俀#|ph)Cg>I$-zqMʣ]6؋m08~ ,}h֑~ogCl㳠<1~3N;jf6k&+}k_$$r`Li .p_Jz `~\_JT=PӲ߆ɂvr6~u*Ǹ #f׷a=Y{=r ~FhLyZḯO24Oگ| d7oqoԟg]N>.XhJ%^dqU<fxX^b#i3`@r_ɑ&@ap+~;` !4 Vi>Yl415HO8xucFRuMʠH+]+;CAۘHI@+v'_mG[A <ϳ6Z1uwZ9y<)xƬkACl,9̙ =8ޡgWa3WTҜv{yvQ;rȹjq,;k_]ΰCwh[ =*f|Z'S:@ցd~#|#_YB^ I)X1֗x@^2ei4$ģkvvc{ lu{glQ;j)e돏6pN9CZ (mm'~tWV% Bhz7gu56lWiZ"&`4~kprUqb"(ȫ52zNag߽.{篿^r>=pYB.HJ^DM-ԅ{Ofs&p/ }jM*rΙ9ϙm/ߨQ7jPmWKhfv۶J:>]w%fgIgOD3kIٯmA: ۿ- 廧VP|W )J`qC iz?#)Hlm! yE_u/L^]{jpJ/u[a&c)M\%?m?UQ Vd34qCے 3y!csRʛKH˶~y,vb13O ?ӣ8/O@n:\'xzu:ge NZLـ?8! P7~1g֬r5$`uݑŜ^[m3^:1)h1gYl+>eB+"gm< O\>W3v8Pmc8E0Sg9k_ ^'o ’5;]S5P$c1Y)?W;_ }:!2]?\g t0^~'/=='l[i%ecV:s\@}o>p"Oſ+e;ԯout<PݯsxqlN*oG㱸r}A-7) ;4y>4fX`*;@i4,~?C;wuyp^m,*Dn7KY̙, f ^3??k[;U@E'~ ELc<`|@Y)+yJgyk4_~{&9 q 3'LlꓞtM Drߙ]veϼ;BKv>}~ȂGDu5sh}_\G ?3K,WZ3=n9e LD(pɌ% ow adl۶nf7`60y \Ȳ?M@o0j @|0OggS$$LIU.QC[duBONQy8s72[W$!x^ui;46pIk C"[ݹx//Tu [^r&e|zc 6b)2^T2&Ȇ^n3Omw O||=rJ9!@VI9c / G>Oʦ% Rίf.Q9Rn#!ϏNbϏm6W?[^z}G dDmEy. #FYDoW[y>>ꄠm@vI8 ojNcp?~8[In1x0S cZ1g_:j U8In,,;gJB{'E`L4PGT~;3Rval8^焩əק>U{k//sk>s4?׵iESZT0le՛a^jpN먉$hޙP$>.ukqyƖ['Ww_2$TCejk!V#WחAB3#B$0? F߲We$[m] e0Ղp5i .P%66ӓ-d`nEDރZol@y<~p4Z/QJh9HRKe;Ꚁ.w~hY0TTCl90@i,  `N:'q?[XfjJaZƒ\j3^䒊^\ܽ|WF 5ם;L\*b<$Mgh}=uX?{u/TaF-LXx?@.><?AVixf*ߞx99#gVbnW ^tE{Kޢ2xfO 3rHݯ`qN^W?yws$.t29P9͓bcXmH׻-$ȨS#a_q茸ltf`x=* 8</81@ ݰX~ǐv.ϚE $ 3et| |o0C~ӡw9/%BI+"U}LeD:m ڙ WWvcĻ_Qoc,莚,l~7|Lv˘R&ë?צ8H_Ryؾg z9ӱ߼aE7!]Hs!)7i*9g?_snM,qg쨾sQ5[*rc9-c^y)^=3iU|Yef}?vU]x6t*x#(^лBh`& F+kM{|h. `~a cm7  n46϶4@G~KOO^1Uo|o}  ){[Yq~_~/<>@7qaukřSt1t]r3. gS qjWF.(,͡ y*%=Dg&xlC~l:*h bX5p,ɧJ=)TGx[o=d[ d {]_lY00[-6ؖR*U$ MQ z.=gs%]Hk)wAQ\Zj3w\5䯘=8z+?,;`6$F(J)@\`:U3C[Kh;? Y=r5^7G~>>W5P,2.Wc.ZZmTvƱvQYV=躻_>- #{y9UFS[:qtsޖ$ ʬwn4}0oK @rPyήjڜ>([pgff03p>C P y6|'^(a8_w# F6(2@ ~p >]GUY\R*J .fKG<`>sl0u>oX4W\ x#@u\h]Q 5m=F<>O~ O5zB1,wڏ/N'7?|@ᅽ8Uՙ7%2dr?z/ cG⦩[q +3xF=vtvɖA{\ɬx L  jǬ߈VŪ+7}a(X$_x,A5?SK|[5 dD>"'עbe om ux\J3~xj\@0 <OggS?S$LIƟ~p?eZrsmn@s*ULIw.mZ^ Gu|=#!Ca@5EJQFA dI.[|9bN$uzT݂ Loh} 'e. 9߾c  ]y08؞UG\N[9ڮR.؁U Nzœvm:fe4׋3sQxzp~HX:[Wc]03>VR1u9Omkpfup69?R㫻`l#8R7߄6F,!?'&_ ;x5r>'g-5,wWO5c?jd'2quLXgyUuxL3, 7  Yy皓fw.H K/pg`M( D@%'aç{;WO4v)*:ڳC٥i'Y.]$5ǰ^~y]ai`S5 @]wV\`hz@c9$K*@jn?#pZg`Pҍh?, ޚ&2V~he2+|Q.z?;yח_ܷχs DΆW ^Iv_ R:L1Fa&fv(C~%gW|yyRk U0 1{٦H\fz@KR3>U6gBxL$ BNX/ Y*7|}U8 @ p c-ၢzX1 @>5 2^HD PJ}G0, & >->uB?gb ՅLKȫ_d4^^wpF~z~6=;m@ eUseSrI.mxYL4k5=cW$b|j[trNҊϾ~n(c/;߬J.Lщlxo3z:ߚj ^'#OF0/{k~ݕE:q~ j~.g 4 p!~PQD%<!sb#h7^:2vmX@H L\ Т1^Iks TZw25Uf/?W_≎eG?qv{DGUbqmry ypXk EOFTB> _e)KO9koyZ̊gS;:$'"tf!No|~ڮ%L | #>yxkg.ǵyp{Q ˘+U{@?{x BUUD0?q`XdXo0 @pT`wV;r p қ,o EgWcEX\o>im9)NrYmܣ}0 Y/~Tn{Ļs;o/B8j9RWY͓ZyKt0[=;P?ڜpj_TLWu;֑rDnd'fR( tiˣ#T_}k?CZZ}afeB,mnZ>ڠ@}~.R!VV'099,b̝cPw*oI"_˲ , ;%" ÀBxe@XJdh@r p6H5> }DF1yO&W1 x*\g_f/pU<0Pwmcڅmr}.w =y98Ϻu`Ȼ|WڲXzw8ƓQFI Ws=>է.d?w=txǛPd{ `pW)-*wH'_*GA1:!?@/1C'\Hҭ@p/2ԛ bB|7WDGTp$wgb 6ւh(-2!ӵ NoϢPy;0 < ;3}E},?c@H/UG@c YXFBnKPL ^gIB`k"@ EmLuNULf3j?{Vy?X~ O /B?Tj- $ 0k/Zxj<M:YkU oؽ+O޽!~kl\c ~P_K) qtqGuvPilI(+³ ]l=@t{ Fie`xŽqT62Jq 93*w/Eʯeݰ$oSZOggS$LI [8=:HKV7Xoavxr|d,:iQJW=_re&ba~J),f% dl^03OtU`*t/s4Z]N)<~$_Nq򍷏M!" L6I|kDl̎[s3 '5m|ggOS՞)f N"k$#{{{Cq@j߄~v~?wyiϫ[GD- cwdFSJ*'%muQ1V'F=ly>K}y9;}Br~/3`A `I8JbE/a>^{pɿMWƙ~4`9Ţ"06)aϘvI4_\jukuԹH4ݚjM:0~V}1k ^p<}$KgW**KuMn:8Z̯/_V~9go&7 R'gN*U$4ykyLOLԿAhRDXX`[2#,G7"1ALv2.Bo6% lF,1[e)[zx۬s4W37kFQA(aϕG&"U/B1WNHmn}t{Ot jJ^וN M]utqXGyj &_VLG>:aWN3pπO̡>סSu$l?*YI_V p>qIӐ$̡LS{?kÞj翙 ~LT6w/oI8gUӓ1Bezw<#)˲, ;o1__|c;uK_0 >^YZ .+Ӻ2 `;)yE?'{\$V8[8("->fI 4%1= oKk;oƩOBVNxK>юDwK֮[-w\g]jp%fp_-p1op ⩴L>3+h~7M3T5 ~P@Vg.<@[ p| iu 8.} 6B _XX0` =u:/)̴ai-U΃YJfځ8 캋u~rJ]˰S9g^&p'i%IxX`> m WVמ5(H@$T?To* wO\) ]oZ/w^}<P_*IAg*(HxmUXfekI^€͘\Jg|6jTU7EU܇h^bv6ڃӛN ԟ> ߿^Hw漟S 8:`=UߧsRxTQ3/ZG9 b/Ηb3 =^ǹ8 ӓ|xui7ν7|d>9LSV3:3TV yъYm)á;thhW`  aϿ| 6(-}IxmaK<d@$_6~mdYF$]¶}=~l32[* <ϟJTc@w $IܛΞ~EИF4Hg?:E·%rrG1Q^9u))_yϞ0̑8cO50:Ł/XHh[I83~BYPuOn 923Yl_ӤMi @-ɼ5 K$Y'$R,,gGZ#" ʲ6mil [,.YZ:XX 5.P*^صr.V pxWm5M !Ow O5q`\ B#PY~,P WJqB;)P| xŸgwӟ~r .[&σ'PNh[_B;gL;lOmg*ܽ ss4(5Vٛra,+|@34po =Mj x^>i-5-!v&gl?v|?/ҭ\=]z=qI7z"y<=<ңd!K> LPݒfwad˃͛,O1͝O.)bwjh&!lzYY00xXG@n'^(f̚Cu}^u,,\(rVD97!o" ˦uxؒWZ :OA mS&U|wwa(l1?~5t)/5.jEZm ?p Oɭ{39%ڇQ!=+nY T=Pp?&s;n^rh)[ltyJ:=ʕ}O=P2A3KL&cx3(GOr[FľVACnJ鲷ל'6y&TK@g ]@r7L9VFoqDǏo_x 7]09[ioQT 0OZ,ώ"!K_iyg৆TBԆFP33K2 [Õn| ܂ ,fsgxtбĄ'^x8xv/`&Ӯ'{H6|/5~r+ g Z~֣=zȺ{ٹMb {r;X6f_y#N xnF @=xalM@3` xФ?sobwmpxЦ`6wY V17VRo! |/ܾ1@rWU0K `,Ŀ2=CUQUUbP `[$v%w 9~M⻻ }+I|VjEjI7΂ޤknSo~IHU" J'o^p9K GDž'ݮ#xpjB0#ah 5E|i~-.kBÉvL&H(L3J?1 j ,9'SRl<~'-Fq+aūZW0=͜wŧYggnLYTAV? lR1Ci ,`Mzv0kH _-^;OggS$LIy\i\nU}pte`wm<v}f|"-82 +|Xp _ᢿ`'0NN`ο'~n(Bw/q0Y@L @ < x>6Χ!B?$z,2sh9srz؟'7ئ T/ Vh6#U *&y + @~^wB c8 Upb+:gc=|Ln|?+܂wh|J"sQ6%{/=w9Utom؉OC({Tҥ/4'|H'k'rF-/_7{tCytiߐ4TTMP][Ӑp9x@4?=z;w`u:ʻN J/}]@h4s]fmgLP|W51P`k9(EK* أn6nV}bS+} `^Fm7aynrĎj@ (ꨱ8_vC5|AsΓv!wI`}r+:WQg[ݲ\;haUδiB 2>pϯボ +^Y;'J~ [Ҿۥ ”4J=>&]/lGrшsfPdxE\k3y=()Q|,4?rk1;t=?u }˱ȬE,`f<:u(ٕHSA(KB `s 3O$I`>/VG!QJ+Fk\-3g?[; PG#Dx hC x9И h!0r2*ts֤Xf5`_#@)*dI PhwkfynUO)hӛkȚ 2G\ ,0g#w_x`~@B".2 t;` `Y`@Qh,}x6~WB<w*OJi#]#Vיk~a?ײ?5D{?>Pcn5R͍H5*\?/6>~ @>^\g(sY>89rӿ O;9=@8uO}.0fe~[ i [qt6pc@~~t |Q%>|%bS9cgR~ :@N*Hwf|.'LzZ{1 -A7*fn͘)}gg N; :-\PE'`*r3_w lJyQ@y$SvٻK` /BdZ?`I @F@aPUP+#L}/HCW _+ xw~gm^37Ci"_iaLvaU3 Jc>4D܏CC̛ߍps[H΋0E8 8v@8i됡\Ҟl(ǗOZ~4f-q3WKB4ЉwNpMϨʳSDGǢ K?7)My^hYwzÌ:Z2f"U$Zky=?RRyӲ01)//5isb43o}{|EAp~ ~_HKF(gi\,(C{~Eҋ)(yhnDVz@ ^5YTVyf08WNb'3%g,}W+@kfرmA8N>$T[NνI?8X 9)+ޓc{['ա!ofCBr6ÇNO6'+1Dž.bqS*wv87f?\9AF_kN uqI7^<`4o崻ѳ뙨oW&jz CwiP_9^ ؝= ˺l>>5u mA+E_j7x@oyG]N] s/E_Dj{۩gål744 e }pu?gFV;_cHuvte& ֣+ 6 |wi%;2gFĂvYMgd谊` ) Ky W948BʣpR DioMpa/7 S[c\(9w ]A<:={-/Us2nĎfBǮO[0{p_ycZ$}[r غ.}ogC_6fgN=O=O6g露3Yz}@Li+z>T<P|oĐ0Vk=V^|lr4P\e`l;`8|CD oXzlW 241\&.gYG^}gp&xFDQ~|axr4|fm)ׄcHbԸ=3~8ƳjL 0,g?_2Xgr8a|۴Β{!'EnбúwgH{G)sWJ {oIٚ^*~o\b9Pe]j( BQc&/'p>+Tknj<4_303 E`GBr0 vֶJ f 1(9Co 6 @a B6;x,b dOggS$LI\y{wo998M~u#drocD,>#yo*a4 +[؜mEnڛf;A_jB=&ad.s}27?>A-!ukL{M[.>ұqzbB*3>?*Zg\]L_@]LG?RYSuy _H2 ur7ń_:dY( *n n5/lY>' Z,-I0tʭhL /Fq|N:~`ԨDx1Ҹ.&8 g5[-3߇T(@rru?Bߪ.xydzꕇ;пH;rs3FA!ΟY'ݙ93:RÁx*>VWqq}R8U"0>L @RUwݱ-L}B;;{L5zه6C k3l (vUwp»$ix0+*qb=R:7y܁_ DvLJ ˰2!0)e>=@I^_=-E3JEx\AU.[d3[\ 0 6hfjGwOJ9 ?ap͓K6]~5^\f#żڣ=< ;z .qGYY@]7B@B xUpzC&,{%( @} e}F*#X\@>;(7 %**臏18 _U//wlI+$.-]ws7FBU ^xN=x$HKD[5?En؜Y TBC1$B5WIòп} 92Ϊ1{b@O]ġ@϶ ލ$la!AT/|/@8j;F懲 &Bcl& #ox ~ޠ7A S5"R(sˤ n6=h'EƗU/ # mL𾝌o ÐP' )G6${۲g 7*2ωYK~H_IXL.ԴҮ?0yE~? `fyj$v6|O7e,vXvWWB~S4ts pJa}vÆ*)ΏŚCž. *K˃sf\&3n28]_pdJTk畻9X.̇8cU!L_덤 +]gv%x`a u,m#@o Y7$-"Ѩ5\ D@xLo`[ވLp {S-#,[?NK_bmxhpD3ZoX@} N\w `>%x?O5>{(?gM) @f+Z5_#$R:ak7^"&|%ydβ7|l}]M&wR,rfeW +i ɼ!<;W~V 멿M0}ӫoZ6%]yfGxYwy!@NL w!&\ \K8ԇO``C%%K !a%YU?(~@p-h6.QI+@rrU1|)*`qwG16ݓ~D;6]p)" :fWoeٶ4mh.:wǍ?_`5L% x~yϪx~-KKKgAL[.LʂIj/"* qqe{+jb %+~c*)d$<ǁ_]۲,@?7B.q&{_īvd%hm0v0 pJUQuk%}/X}q3@7zmyF6m-tO~Z=RQ}g]A{vOTv=( XyY4>_vwP}"xBb,N<%8@q&  qad& 9&?ضCW<ڝ{h:_5+(JICq<,f4P ̗.Sm0? m\LLcõJs @`-*3L xoYSL"զgqȲTWq_ە`gw'od˽v?_i:h5lVɪEt"\bZjrϯG7?&y_b:5w_ ghKH3@^PTN\uWYWpVVsbmoD IΤ#tg~14JHxQ ` a_ᇽqCW4ޤ\mG;,@`*  ȧ%:Q?\"6 T#LVlY?e 9fe~q .u/g#8[A*9NHWm_J gUȡHȊWn p*WOUBP@ѿ <@"_E YU] @#o0<- 6蒥͸=9MqDYT2;P"mex?xnS̐\X~CpgKW0b\,)%!$$K61_vw-ӈ P0<&4,gT F=N< JҞd|@F%pKV.tf_)_,iB`{Z2 oVA/P;g^<U;XQ t]vc=} {*j)O|bE| 2ڞ F@ѱ7wt5Bd|+z/ CxO)6RD |B C4\[4Q  }>`)v7K/DQ$[:+=ݿl}?6@F@U5Sʏt /J<$x[QQ#U`6:K{M=d<3sDŤsևLkʎM`ϯ3aUε>82alO0}rnGRvfkgx:[@EiǩP+CUTW-{^f@S?Gs? lY2d ) tFh^&NÏZbsoMW b~y_\`*XRñ"r': go) ŜjϛI~gw-f&dxstː=ir{P6> ~{F32" :h̽q_Ng6~j[gag zcf2 P"B=q~t<]TiH4?ep=Wz9ֺ(D- 8okO s\S^}D |oz%sjF+@ `5 : (wA _1#( ( Td' c蒾YT8{sKN*E&@w:@,'/zdWtuu͕ܽrz&aqC{ 﫼qc:PcВ~GV~wiv8O]=#K $Im@HO}ն ضG2[ IIMH .$U۶XS ,xDE(#M]I=4JGXes? ^\Y@ x}r.\E!` 8eY;/S0q-w}4p߄~oA{< Gn22ΝgDm{X$A3OggS1%LI\| nucTFMHJ68:56::?LMeqx5<ְ)D m8fC.(>gO௟qhK2-!%Rأ `4[N 4<s[˸tDk>A7d2eCYBۭni%ɿ7Z!9UFua}ѓôˏy|ijv0φ:1t㫀1g}>=]JFS4u~|}4kup=>: \yü4Zy֬f***+i_xKkΛ*A!l),>{gx<?]qsm>r$CX> go1~ FAںb@$`fŗZj-] Y,ί!~.׫M$5eutMpW ?e0{d~ @NDW?X6h/9NtKe|H-t>La/x??}Ѽ8FӀXxDtm|kD[ ;Khs3A]w/{W;]=L~O@P@$pcǝ9O.iS@%=54H$mxf{ p9~ SvXߏfU%K.G;O .*WqvoG {}(@@Pbi,- |@=`| QV&:ns4od VWw+X ,] 4|s_1"53\i0J ޷ _2\i 6r m< PJu(ɋ×t1;A۫v݆"Ҷy]d\u>yh0@_G0M P@B P[?TSgOCkr~g.L\[_>>uTT~/rO@Kl V@ $C h5 9Nk1JErS?rKǪ|pEޯaߪ[b q7򞮀Y}j![HD,YoRP:lLrAl8<).FK޹㦓r1tP3}[oۭ=w>p-:mu9 拢'Ly8jw M;G/(;Cׂ$+z}5 /Jƌ6x\?J,, m)Ynֻݥ1zt (ަ}d pWx_/"\L W;|M>jd9O ՚;^K}u`m}#2-\ wpz '鄁 &sJ_ ~ξ_=&x@1/H4nV|䗖3-@u?('CR ˵>? Cy)ͫe(u~S@Ƀ9_av|7oV}mOwC ?ݗ>28ւT_=ETʫjs_LbC>,@6ƗQ~_|T,<w* G z_Z *!,QY?j%4")̋4JDQd5 k-,$Nܒe|Xφk^/U_} ӑ`}z޶њI܎0z1FXY[J`pw[GKd6^Lܚ](6O zu΃:Ȯ%6R|٢GdcZ >;l9퓕"kմ R }Lz_e$'O# ߠgؼ^bfX`IKZAUsz.Lñqfnqf@U @0+댟q5hXՃYRP8O]e5l?jg-*2oGʸ3}>J[{F A~Qp,t'Xlܔhc[ b9g)VyP(nuK(4U[yi {w`I;2dN U>qaׯ:Zz{+Xy)?2qh~/gse7|̓23]23-z(M|>~ L3_33<Ȗ Ae/2 I'y ˚B%cK! o0R2 R@ZMdj(5[Œ:ef,Իf;T{Ǫrľ{] jBRx$=f冻5r a'_Qn.kWncdߎzr] א ck=hVq[QW;~3{<5NCxN,u! 39C=+2sm;~-!շ]߳CQvwf 333/ s߿i0| ߜ}GC 48>kAW| d~nWDTNRUxZ"d$}A eˋOggSb%LIR [>[HCFC6985869:GLWED;đ5FSm6Î;e@g! o}%pI)U 1\UtbFӉWuzxBoOUN= ]>=;wjlHzE4;/O.s;{|?ž+VC9"C]3$"ej%]t@U&I4 X9< d2u~_It.M}m'z>@@ezQ s&-E_\p0ܥ7 |~2qc*Nv:@w`Ќiۨ~Զ.3u˷u7+_mBXcﵻ,x\^4WvCS`DeB3P.D#[Kl͢8O}xIBF"Kg%]<3< S?hƖwګ@N^!jZ2Mo~s :C ۻL "^}:™8? 6Ľ-;kxSE}3w(vJ$<8_sq;=11jS}'5{yXѣ @A>PȌ6bvZ.kbq{O:4:&RNs8s;@N&X9X@jpﻒ$^$6wO@o;j;Oj o?Wxdxme4Q܋m@F7Nnc Uw@0&`<>ĥ󢭢i-'wˮiyXCNC Rf1sr'Ɋ@&kԼKP 5FtU\ǫ?RuM2-f0ܐ@\`b@3UD@Xw$@瀏 p!0(> [(B|@[ $S3YCWG]MөU>@ W?T7#y$dvE F㿏iNL_{]o]AX́NܯL凛կ6(R"u?*bt|{/'sz'| iz}/=RhgO^mw')gp3ޟY d9?"4K}Ó/<Tu}a><,S_ # !`M2WGMYh Z@%&|I I$$a/ߖ.0컯tƪ7TM?++{tft4[!g8t`*3[Xw2/mvmz! r7BI^.sI!51Mu;䑘flÒnk7-eD|oQt,S ߛ~uxNwq)2M"bW<ɏ&v;h.>"!+܋1\kɵ{^ҥ9W<Hh j0j?j6C|;POޥoi(6 1oU+|F1= %[~jemuvرV8t(go?Qw3tB{O,\)A >[bQ=3vu=l05D/\t/?&M]Ws_䀡*?* &&yv`Mh!|3j l=P31mI9PUYr.( kddErdf~$ϯ?lod@1o)]6p2+z^31w]?JĴ'2qMxawq/@3|Sn;ҹ3#pa 3'N%?D pc6a=-e\>w9/wrsjjg4_F%$sP=w>^H 7GƟ{ 1gSM[q޳鯛ΰ~gc@D/.4ql`k~x%<@[گZ &x&9nZ<|==*ĂQ%JV^3z{8g_w?s4}/`7-b[KE)}H`37G??;(!@ePx=Oz~ % :0=JEIX*츓毬{yMaJ_ l#P۹` Tf[sU@%@}Ok`x9!  vp(>*+nkۗ t _,Ư 23|ɓȧxK8M3-qf o=8u_`.Z#J0u/;!_~>VkgoNBM_tnP+ng[z6y~w(@⪘ 2zqi:CqТl*ؗf g~P8h ʽ?@4:6QA* ?`mN@ : 3pi>9^ѭj9A L ѫ!SiR 7 {܉7w |9NW_pK #K-n7Jl+Qm(} gUO}Τq@@JV۸EǏ<=zmJx^:3 Γ,?ϕ' dCG{)o&zbbZ>!\ @oluXNϴO `үH)ܵm`Mn"#P }iX,d'@ Ih[FJfQr7+p/9|}\vϫ%9 ׾!Bw_e(fH`;PEQ 7U0EwTV'PCf&>_/tcrI!i oO dVgJ\W!Y쓄$@??H 16% =B@ܐnU}- " pO#:1a!~|͞ ιO8-B,H3u];_rn^4,3.UOa`]^zjO7@4^SNvPyw7Gsɂ|Ujh}~ߕ2/ǑVxN/=pH m}#Oۇ^ʨȼv43w(Sc'rf}' ]4K/65ouz @_ cKuW .DƑ| bKCS@Ex%p- Y̷-`#H(d@N<_/ۂ ft^LޜLN^Fϲāد}9Tҙ+qHv͸+Hų73>^_Wu}[bշ4Ո84y|RYǴ9<.&lhbʙQ,(ί!L4L(~@ph~!wծ]ː' J{{~/m|1r (^>o[>6\2m 7!.]D ;qRvK!}pC1S_4V-OYn[!|T'R*61 @i^SؾJ;mb]?U.{ZWMN{o 2x1y@kU:~W(2w IכG^Mpu^M&(5 ݹݭ }/ܞ[sHF 颣c8ۈo/F=JIv~-C햿@v1LιXIk\+ٌ]Tsf17$IVNX_g}-ܲ?^-3߃^]En][2 Η. '<(OӂM#U1 ϡ_vp^Lμ?fqǂc ! MF6m1@ Nɭ;Mob&L9~;~Tl`f.nEAy扗oF7g(t;|:!4^hyxm~(擅ќȻ;גx?i]S.G9ވe\UU@=iI GJِo/ǪGkZ{sN7GAS@}?_'QgJt沓j%3d@5XId,ϋ NdFwri@XߦnaIx m&M~t)۸h*܎lOd37ͱpi{H'^U1;mԢ(BAwkL5Xn[ʤ]Yڙ,rݔu];g){u2NwC2:򯞬ڛ)fﵾ<݁*`,d>Ow͏K7/4[+̏lgl  (pr`o@?#-hܔҚ؞ʚÜp ^o gֵ{+6Ŵ4QVEfKP9MH0|K˩6Tl-RN牯SrZl̝_ƿ$yݲsL:|@+?'Rk':>agBEz;EW(ӫ"{p|Ͱ. gS$V{ @ H+zea$d } `~(@K'5 '|#Qވx34bM& ]`.~j/.533#T"mOO2o75i߾U=:Vd'Mv*\OɻWo6;9Ԓ 'O[?g>$/ UqWQ>?>Ғaƍ52[~f~0ڝ P媯W5tU_}Y@U7cq@J[6ZVJa$k(_(Hf1*Y:| ~h5: fVHkcVF|3<pF3F>4 A19bۧxl2t*> ъ+V|-VɛfHxݼn`[ Nq&/nx6eu(Ȫyz$wS#r @e=>+j2@txw&7gpPֽ L`;l(* `9=?;0W=UUyHhqQ@U RSP `e^ )p `(<_ XVtHớqJkjmjqE~^ n8Ƀ"D5"~as5qLt!P|L&6{@['"^/[KZp\ds!b^鹃gPMp6 JӾK IH^I| 0򂂘S @[>OggS%LI~?<;IN:INHRhYYaYZ`x| 5PhC`T ${ۈ4_SL%~׷v.O52H\442vQZg3d)0TxՁQSd8TU|kz}\sO>]t;<42 k.<2?IZoryq3&孙~%1ǑH(P ~F  buy;U˅$fo=f;fϓԛR~4WMs!}OGW4-g۰~y@MfE{Fc̋-s~;bNjՌOh-Mt\ Raǘ/|N0=G'y$Ըh7?nU8c|p>|~+ZV3A5xOR}KDRef?P,*>w~SF剓0켔}NT n M" D!ENz<%Xn(Tenb롭!z8:Mڽyl|eS~c|` 6:6 z{`sny˹=3f  )fL'q>g5oM>de]=:5N[tN<=[OϿey I[iI$go,ΰ:M5YYK__O,`[)aϗ8Ws}gǠf%Қ5gb`o,w#g}jHsԹ3۬xےdǹT)e9d0wq={u, WG}۾^5/0+&Qӄ3!/(A|%#6] JτL_8O^ { lybX :K O8ؐnWYhЋ&Xc__٣}nK{emۘ}$jp 4fȻ[eay|Gh or!3#߾XC!Gwtm;ҿ OXhh>P^wxɱ\~{ L@ &| ,szTRX_(wwt+y8섪kku_S 0 @ )Y]Bk!9DHH (( Ƿ adh=_ @Y %>RlG+LSvߩd 9n,+w$.{,8~3hL̜T+@ÜqѤֺ͓"[)宱+wdBȧ=R!rW.滗_ǡ: tµ(Guί? sh rw ]|~t8_H v$#`g0MF~[)m7\<WcG1_.F<V&"|/ۼXƟ잼PYmNG8{QFD`:fef{F7uCQ+es%ӋŎW_}ƕVq>EK+<zS`nt09:!Zl%QE ު8*. 톸 fD)oɼPp̹x&M.Uԫ8?? W3N@sR; 0  0$ ` /莽n0-7 ?%^jW:dZH(@3ZWQW1/ĉG>ZeX@!TCO ¨g8n+j/1ѭV ˡ٫7>e}||t΄ZFde_ 0G]sj^맀5mpa}h9l@\~@xBLN"7@VPc3ox~rKUM|ԅ@@?q @ },Q> <:%hU`\D)~j]GR~'gRF2J&p.UDZZ?u)en^K:!@H/E{^3XoKhٗGlCm6e~ &cןC,\я; gYk<h|8sZ |ӹr=6~}Lָ cwy|ꙿ+VkrO?s8e)S+@6|\.7U֡r|U#f@]ΜwIv)_'TfxR0#. 1U-  CZ_މ-I&u֏hJ&|_~D@ڬ/yqD28.>F%w~Q|ٲds:>|(Tg#d&!St'ow{`CWdi_c>dQN\uV;'yN<~nfFǃ7zeK]Ju5gU}2P+|:5@V*_nXO}Cu0>!\U?!oO;1HY^@G-18yQx$!o9Z#x(7rF9~#$gw;qnvPwk]yw?7\tg L2+![_;Ȣt0{wR @QUFQxwH? 7Y~tlH ʹްUu~dI0l >FHX@dY/Ɩ *zr:gSo\63| n\稞Gcw;:UyFA 'uҰ~r;mQ~_y:GɵɱSR{JL>_tfZi!hZ/&3WO|Kȧs1u.Ӿpxן:Jkr9wkϮ-X3߳.|ežw~ Ȭٚ* o㞳٧*N(H"3de%ѯnKxXF¾KmI+w @[#@`toQl`ҳIEe+RWcۖ9 S|,*s|!OggS%LI1h}|EDDUT~ ]%)v #%R֔-o$({.j.Vr[b] ƞ_9'`\rH}V5Im鹴}~x<>y(m?႒U(yZ}l켯)W~&q>fq.{zsGy볌@3Ѵ߫(Ф:|N.18 ~RYߟl! E5:+S_?߇5g03o;|c@edo` R~G ¥-&mv@ލҏB7h>$ pwI!j xnLV!SZ4fbFfK|.\3PN$E =89!$ɷ/<W6pk?-׳_#V.Ζ.zwZbu|>bx9X;_J=JsB]˘舞MO qkv>~f]^.Ύ\W l5̟8/Y',UU>Jxx|U̬~Y SQQ,@]L>6 @C /u!=6„xWϛ-SXx]9=jSx7F9mلIf9G.YhUHn9}x3k|L:56Fp9ťuIHL#o*2CX9 >F@qa֫֏/۝s5W.,v& QGKUlhbM{๹d맇 Onͽ1IMݻzEL3S0%˻rc/ }2Q3DFUҜ ?Utӭ}Y}tSY1M¤:z-K3⁾}jϮ@3e7D%a]'\V`nf0 /AWl#z{ 0_">+/ph|V Q{ y)p^,Rl`-1zzBQ0ncװ[,}c;VNDٓWN=vAw.2јFqHv?W_[BS>g࢟{syEm!w/s墫o00/N~]7Y~Bd}~_8:sU=m#S厞~^Zk-z\."bd˲zuWp&^fsQ\@<2(q4/Zy .p[/:| a"+̜Wsզ6zKx-0`HZ.DD^* `?' "[^̟ zWVD}.N:=ٴl-of`9V6Y;xn%7%]Xe yk7\Zco ۻe^L^_93>fLjgs.?DqCq2ЮdղZ?i:Gmf{ ,woo+gXk&y躷 aؾ~L9o~OT6'WuaO60j ӆϓ)kIn[U~<IGWBՕQGۡxapp0UCU~/:<旓9@$]I[Wo̝vi yA,G}X Tx/%Q 6D uK^CY64(S״n*jzq|F|}u4bb( ѽ{Fy2mgvqqއNd2havn;0'\b=p׶ɩ/gݾ'ѩ*^ׂRQ+߆{pG:jOU1{s9Ͽ]O[*.z-7)]4IgUUݟ55us] Y@|h^]=v*ʚ*;LbNW}~4LJo4 cx `ǖ ,@]m~d0_ zedCWHHtz#;ۍQ7̄3~ϷisY̯9 _5]',:j*Yڭ'4=<ׅYˀQ̡7Fݟ>XS!?`~ )P bIgd|k/cu{YrCN5^yM:l~0Q# 'n XRvykkSt2 oԋh;Ia>{'hk'ÃE~c԰0YBX E|I/WWlN0w=*K7~`8HwR.pfٽk>:}]|u++hM#6E?>]p/s>\5sA"RJA sI{_nywS4Ķqfл a¤? /]-Y1rd[?IҺk\OfYTrRr3뫻y;ߕ[:~d~~kfnV19udOʬALKWHq𮽟gz;g@Sȕ=OA~=@kpPϓH ˀ!e`d Q^<9K m^``~ oWOLz<OggS&LIIr߽kwawhkg>?UkwIp%I>ڢFZʝ_B--bUB@ z}'_87UFbk%htiLD Cp/׉zO \ͪ1l;mp v 6o;2҉)]8':9$Ѽk_ 7S"(ImY @BR>?y@[@D@TA^ͬ?~,6ZwZJ}ynȬ~\8.qt Cꟷ>d^Hf_`(Ξx^l>-( o**@NE@|TTU c`Dފ+nd ΝYJJ6,]?nMPdf|]vc ?~Cn.g <Xo|V 6ZK5HR5_{hؑ<ح~eJ2x3P;.j_]l]w$/,ȅ7^/c P0py^pnΩ" 7)5<`[>Ps>dI`23'R^R}}42<}L 58}lX/g:4}8@.ߞ-d~KoXXW@Ϗ'F`/'F~zO v#zt N$23weY/_p{o:=ԫtx1h=F o5 ԇ&}G.$?PB^>_Eywd 0߿N M(Dkǣmr84\3tVkË~ripz}pqziF%f 7@$]l2] +a((*ߌ18#을`4`x ~0``~6@Ib` Le~,%b#0n>WAǙ"t.%,7OFL cX}\$O󜅇?/ec_7l Oo%@[7XнKJo4 \c$"r)W);Yqkv0Zs0sUgwzyj>->_WRc>?`͟"o6 tJ폋U#Z2}HaP&z'v/6{{`gky%Qs1k:Pb08"20k\M_A5 [`a \&Xp0./~yܟ5&7ՠϔT3q.9#ln__<7xm8\(aSE]E"WD |n#:qaO vE[;&i>K[3p %BNX ld&nAY0C|!M5<\bזO )Mj rqtPF2(+2L &t>xy72о^yį7fj H~ąs~=~}>~Û3~5xZ/k`|/qB Sḅb(7m%oߍ:8qWI{蕀oES_ҍ 3w O?PNv䦳U6m;ז-?yLlԛ~/W붉䥇 T_~͇xZs|̇s\4$[`>4ȾIM`mM @"@6 B YB@$t+\> E1 2 K tL~Wԃ@_)7vuOmnpXnx,)jm.UA5CZH< 'Rzi@.[o>OCn2ӆB|%Ÿkgx.yl ߯sB+e ??1 6NPx@@1!a67o'g|\@矍u_w:;P~q߷7쟕G`SV8@]}\ Da>Q&x@HA"~<@wr**TZ @z^5 ݓfw 3?&+~hƋ+9`+n 䆭7 ƴmDE Je-'u'w#6/i\=,i S۽Xɀ.Ο-|~1%~zP~SO |ZJbV@EZ]绩/]4xRy_3dj:bG @{ .҃b@?D:-P$ vJ JgF bO<IH|TOOggSL&LI3_dm`f]A@^8y5w=]8ZȏZM7^to<~??2@2> n/.z,ƍъ "I)篇 ϕl>9ӧ _:qb#k :h)P&91{ڎn'> i9=iA̧65/vo &@qx(-`@p{$Y1y* ^ ﮀM) ~ pԡ oJZ T⺼` ?>` @m=E B^g]'%5rtjꔏ{wü o઀)a1 V#%Zj!GNd?;oټ|=43i#<>>ǫPxNjL~d}B]Xk*(Q2 / }9{? @7G^@U# @λpAp 9\AY7;wx]ٓ q\>_U3a B9t,a;Ue>.݆@@ E 3ce@]W 3>˝We2 EDb;я Fl$VlΦQ><5yA'/@{\ /XO#Gbc M}>C/>A?N%,% ]7j+ Gɝ.Z Q02Rܿշ} )]Ù6W/~wH̓c3\I⽙`gYk_?]!o՝J8Eyɶk ˞T_N,v͹ x @s8Bl߿~  =o Y,Md(Z`:y5]6 7ZR=u:*xOte(g|hCC'4%I>rOωnAzG/=b*6O?EP_dlafw,ֹF-馽hfYx`P7PϚǿQ]`UVI8@DT>Y-ğP 2lmo`"ZF3 UEO-_o >=OaŮPbjp IdG{ x{՘x* W,^],Aonc\plCځN@>!hG/K@"NN^8@ԆQY1\ kD_d瞓50;/o7! ˼ PJoWlbMD_?ѸGșh`dU=@'Õ?>7hwh˳\E PDhw#_TJTUk(fW J7mma*/ڝįVt * } ~1Pt]&#sx9cC&{ (Y~/žGД`_)2_Jk~g)K^/^ W_><8`Y=9 KɃ݋(]N7grӶ2<܅麟-CWڿ`!3ӿ:|Dr7;>DL*0lzҒ~+:jܚ$wTal< !^Y , ÿv!&` X% wdı7=^۽_(xc^[G) 77UN4pnp ʾlzD }WM2s*=*^/8|A3;'yWKϔ,r  ~*؎WVn |i"_ݣ:4nh?f2])~6גi¼7f{4@vtw;DW3&sZ\;$F}?S46; XR D X6xg 02`Mϲ< IQESYQ aɹ!S+jQmà sxxov}w듾74,K`<j@e-y3V aq4iYͳN 599:@qV=C[S5fjopprWq| sSKz]SYݙwM9)ϤS ܩ݃~F,fQѸ m඿hX5/.7h5`p"ArL@rn0`@SmfB[yJ'U㮿g [p(9<+% PHוժGhMSȪȿ:m85íup]; ?:(jZ,Oof{ @ʡ3)`>\&M78W0zW ~mk0p eAP7OdcQ=mܽ/< G8Hc +,&Ee1my %ѿ:bÛ>=nG6 ]|˙Q:|wN[rGE$n>SM]toK0 =Vq20^N9pP `A&P>tV+S fCwq_'dN5K"6Ӄ/{6~*at&~ N2l/^} Zfby\濏h9oRyw 7`SWGƶ^@`HYȑ-9=@$1f""/?0Y|ۋOggSy&LI2bLnDp;>>?@@=SVSfYS\~ʝWT&ON=3`(|K4{c{ܝ 7np<<@[N߬@; Nv +Gl֥~ qZ Yt;||iȳ*1_MLp/=0v 2ǿyȖ.(Y\v78L.ѻQ͙dW=+sciXgq`w=V,=/<QY*j_2 P8BKuB u 8e?X8q H'j=odK@C o@/7m觬d9qmgaIb15_0yklWy/oKHT|T-n9n39zw뽃Mx -Ee)r؛ Jkٍ/޿v:yt9/-q(."^O4̇E_cARK@]߼! S$<_?G$P`|/j"Lya>4fJ Sӫ4`F4@#RF@4 (y0 s0lB\h!>g4>Í(j)s*9)0ol@ZB×Ol*^DTD2+xcB.ŨѤOG(ˇﮕ Ȣ4g+{o[} .a3@Cowt#}t`' K9ιlׇ*9~Xp(<-K_7@Dag:-(T)f3k7r<8 xp-Qt}[d{7dQ u&Qd`5l!h#7SM~bC7;% d~Yby о I@s ^=ث&sl>;}ͲRDl%%\7>}}!786u I{'P!W6J){nS~Z{+@z/kߓC )%@𳽩J$Zw jh.st^XJ]O턹`~sM/݉};/ p`&EaȢJ'3 NV t8:gj>x o  Nx|Y QPet?P!,F:0MGtdb 88wee/.Z_]ԬMvĩ w8txgLy Bh{z){Է6E =BBU|!_iLPD"0bйo~~[ ,u§ͩ~3یŹ.oǏJ2kτ*r+MM5͵6Y$Ͽ x#{Y'kz>ιR9Y$]c zP@2 @LC+D;oX 2]?͆b#U `Px J8bYT{;um3 |cٗ /"h%8c߯?n9lJk*~W0_{DZ_s7AC%;j~NQCO?ʫ? _I)Yy:?3jWQRBO b GdkbWpa{/? v's8Zmzd6\> ϬZ+^M#+o5ۿpvt&Ymd̜wr}6Ւt N]Kj`akgGζ˽tm#zꑩO%U_n Cu$·~'Oo`Beg2S`X80NBi6ɿ_TĖ>mA$UH-tB|;Tr7^[|%~ t:wGY.+>5^L>'VAb?퇿ћ +:819 g!+JR.zZ837@"yucs}=;ۓ$ >,|~_"&0Nvk0;Yg(Dk.ϗ$r3Hyߵfq5]]*Ho '9Y{LO:->wym}ewD'4_vfvVd}ouyۛ=m _;_mQg/k>=ſ9FgG| ( {E˾fSZ-.P,* yP9e5y2soC&_${NVyފX{zi(;5g2ݳ zX7K6 `/c7ˀ?Uo2P|]N ,;__75g߀lH!E^z`UG)&^^pȓcݯs yƋr_*WBמ:FչS4_!o˕5J遬޳e#~>[ }k1™E'?+i\jrit$pNМc߾<Ѭ)]Z?# (o3w@asnMpi:@Y-|r.~{q N`В}@p7WUBHlX PG -"%X@  ^=ͻ\im9~gU Z!hno6lZ?hPZs_GD`L@-@oH)T`b{q>zxsՇH)lMʺZnJg?/qs8H;gy/f|ܧLՙuTb!<^%Jz#txQ'X3RO%pp8@|.M}4o@~g=Z X>}a9s1e{|``c^'! a[F{e-X)O8C2 ,}w*0oW AM2ױ[/}٫~ QKU b ]oԢU:||#!rBG] s~чȽt uy% *[&2q|9&z6܇5eM.{KObQ_pylLgezQS*0829|fJ4\e>gsNHƖON)4 M#w}6D=@MZWi2rZ=GRy捸^ᛏ"b3|osyPPRۚY9#DQ`}cWsoz?mfZJy{ڋr"dbzTTo$mHh.!XoYVX>( ,?l.UI_Iz9\ZJ^ K;'^8s[^^X랡 "} ZUXWݰQܧ<81  \~Y"}=X d@@lyiA`[ll6@_zWlO5fR7zobp N o鉌>F;9>E_PL1C V z#G/?E1`zhn]b]u_/sx}نEzQ;$ۣ(Ko2/0Q 绮_9q}|j}|r=?7Y^I0<'yE֗Y^29P]@pw|'#}%V9E89nY k-oU[<޲Ġe@,^/_;&jabnj{  t n @~@BV 79LY{57xy ǐ}(G_ aaث ^$r[_1|B;B7x`,~.~z333%uMɜTވyϔ烍{6X7s8ͣ"J`PTێ,ǘ5w_dt:_2w1J_v{YvD㍗F'(Vq{땄p >ԅS.|b1ʧj %=zeʷff:8|;5Sˎg+d(WY`kL8 jw/_n%X0naokPUO՘~D@v|#Uh6 F>դx3Y{, nxeyCqmdxv7^/\.m#(-Pc+%h$er GNC>T/w}rYGyaj\^:j 9?EE՞Y%8?1`}___||/9\f1n̐us _7^D8^D'w79hj/^&S<#^}_EPF_w4pP`8;a̬aWu'a>ka`>@dcVI`? LŢ { " ؀ Y `7#-0n-HHZ~=egå`Egy1Y2bg/Oq3%9g޷ܟQbݩ}Z$-/c?ğ{O$r :acHhs8|9S:2yzY1dΚK|x ս̚sj o IE ax5}\ROpkZk|{i?3Enb \rZJy}yM̄w3׃|{.p_<vAP m{FP+dXE@ CA TT*`PBGFm[^Z=O]m DMOEKk?)&Y>^}իtiInffUڼ$3Bo{6/ژsOPP|>Yg2kz=0z_o@!8@U.ol@7_ d`B Z1 kpЬ}Y]:g49 JȃI9񰝝 5jvSxx uTnv/!<|7t__^?콹ŖO.K2)E\`j6@iX-?h_ 'E./G~+ >ơӵo^ :R|ݾR#I@5Pl[y}j7?8a'I6a<ݥ[Y:}؀5ls?/{`@)r~?o BE4gs9/ ZUL;ȯPÑml<4r(rx` OggS&LIj1r`bt{P_`}mbtv63'<ʞnfp07g"vcù83HU[ e4/u kh|D6W2x~-..t=!4*|[>84Kt8+ 'V۶_3 G<~U/I : p:y (ƯDU_^ZxOw/gj^~ ~* m{ Nn.ky[|09-(m ]@7BPty+p```f=l W 2 #=[@ +"ЗeHL `:}k"O&X(RdGY(sg4YOk-h\wmd"s/F) wLww=7@mI/[^FC)A3O疮ÿĂ98ɯ}!3ٺ۽I{TL߾Z|R_Yܭ?s|kRCq2>\+g kZk- 䞪܇Oc*8_hZ rټ|GYP=@`PRAD6TEN9@?m6" "K~ @2/>K_(@@w?0z7 _?V9}<8=;+;L!x#>"k(M?ˏ/[T1&;HuaDZ!7-\9|Y.[ʸV6=&}|v~0L>/[ ]x۹rLR;ADsH0`~}+SY1z|@NUakT7`|]T}~z4~ѼChX_lfO d'`bٗmO[0.I7PBf U/{ݯ?ȕ((TT~PyV9'n55‰uh[~8rUgy mJ{Ȇ+M/wζ_o2:vo_q{~\@'9'GX'pg4>hԼtɑW`~be }}Iy󗦨ؐmy?ə#{W7PY pn}JIlq&[" | R*Tf~I̱/\0JqXHX?^J|neNk?xim'>e0/ (qhk>\ٶd!#񤉋\6@c\G#sSv%\=x9 3t8iVΦo~|}ј`K y%7_]rgP a?+I9n$y:f~_n<~qՄܺǝy<-x6N˝^.EnzϺk|kc9^Z|1/HmAWq&~4ٞލ3a?"?/ ];EsEnݜE컠gz_9˪u|ZSAJ6 ]?[]R%s$pdrsHl=~^<994w<{F6L8 1H~1 -I@( /N=ׯ6o_+PW<^r07}̍x,h'^~Kc^[L(^5ƞk߉l[sԶlF۶ zkGmz>7v?ɟwFs}=, OH{.T>m;uV%ך3w{BT(*d ! 3P-ޟ @]eH3>MȶXIZ"2<@id r;1@%@3:J6RWvO0Z E͸qAՏ'/6c}*usk:3Q_Pg4Cş+}l\"ԱD'$6JɃ^Eջk]feAvw/p ^]y(I%DADK<I{1Tny' @*#a4˽'tD\wOE7N$羘x{n4)$_Am ?5okq)6}?[@Ԉ@>{[`~ RDp+jJ%@Hl Ys@/  E>:=mلBWvkBPcP[))?>6yJ'j(3#0Z=Ct[};|+nBn٥OOH&fW]a?4@;6vТzk/B} rzJO@֛$_I+z]*k95\*`I=)ehCj-`% "0U wA.EFa  򕿅1$K@ L 4 @"j( :W+8S-~S '>HVޞ=8g/:u~ Yb7%ۜ>W?;{Y&Oc~MS&?jo\{^>֙4M̏&p=4Skyb/K_oOUP+ 4߯$lOK@;w, # %>$ ZWgH- W;[Ǵi2i"W|}ԿNҋ}㭹{|4CuZ4ZB0Z& 3 'eu-'O;>Nm*kY+A(B.1RTzD;(ƺ .Uׯ ־q6U_cQDRawз^Ed;ML_Y?6SƒABZ W-ΩsNzD}XP0ǒχmu2{on|e7WdgP6k=r}D@*oIU7ܻ{cdooW$5PJ>}@dIT#89|m=!Ne{_ .DP^FЗCK(x |ɒ$,l,=e@`#p?6OggS'LIfO|M`KY:}{șU[\R`vH*O2Zt͛9Ϋa痀׶d+YQIЇ[[;߻{[Ӕ;[:~mҪ(CKU*rcg0vf ]w7̧{NB-S|;>_6}5 /p A2d>U pXi9XZVPr$7xY/B{ a> d ڢR8`qx(0i SЯE[ ] ѭ\yX zxV?qnϽ͡m/|og/g#GQ_zCp^%O 9;3tsтgKJ[k0. K@t@0]Wjs]p{:.UR(x12dx-uq*o>z`f:wu318Ew&G6qp|"Uݬ?Of%0mzsx3: @@Y uc00oUK7P_]&iD^r|$k'((#M8pJtc2 ɯ&o W ,C[`7 ǒ  UW5LwF$@ d;|At^^LDKm8)H>a,?ѽ殱^\#׏u#kD-P4/b0Xѻ}bBhNz|y+ljR6]KrhsouZSECsإ=ӽVEҜѼ(4J|n?< ' 9ѯ|;i`tT:K1{3o\ $DYd*3Q|E5^MSSTO7],9ΦU %9M;wvH?#E{{jVo$w wQ2szK \+*]=͜xm^sgN[sT tE ἖ݳ3.~2Zv 3`z0Wj|mV<`-./UK|R4r&'M`^.&rW˜0y3X2H^ב]kNg|jάiP >?9˕x{SÇc8<,n_~)iK9|]P)>/v b,0u77l^^XT1 ,hE @O}a\gC 4yj 鼱s*Ģ #">(C|(y~8WE^RJ/.E=&gN-WKq̕8 QMh@[vk;xs歾|u`T yi̕H@ TW|1|;<@g T1H)N G=B o)7TM`(?ɯG@@$[g |5Q >?ւHζ\Be#ҸzA,jV^.PнnF΃3* 0=2i=a)o dIlm*n~y~1@e7?;"2cvHbswڃ|uي%OUX:Gdpg{y'C6y| q}p Γ0͡F2@_g\9v cb^ 94qa/#@-<ɉ"d$ ~o?2(~*_ I`jjWE Yݐ4EB?:J u*ZCܳjx m3TgH yɜla{^=i2λe =J^~M[1ٹmܬ_}E~Su}b[ݷz+Dq}uBZ?PWs5zh?)֮ <1} 63S uQFORT it~-vr0ӃC0`?`p,J7j*@ӱ^x goyL@[ ^%%( iHXsQG 5oֹ'\):'9X̴BYQ@O^mz #so6/N>rI4*-Tr_{s9L̥yWk82̙֛צ y۾g]' gsg/ԣooY~ý?/C:ϗP$Q|<hvX `پa~ֱ 8_J+Sg5oχs{ 0`#KԿ<~cW 66߾""":)TU+m5Gx%,7 Al/^|5MZ x#R5p̓ƓXXg\^σ9*(d${\f3[W \Oј /CC>lUsq1{#Ib9°2'[VcX, ( 6E#r | m9or'Yw0QT݋NiOggS0'LI#Dk~lws@>TTZ^ ^<`|%%4:EݻǽZCyY/[sq2wti[0ON_ns-S9ޫ'记©YnrBi-gzo }Gݔ|ͶRj8W~}]k.|fq8~!{޼"IN$|%AsSnkwkWGY[b}\(RQ뱎KTPK q†tR貭? ^+ ,1D!Ky%bpMs!@ 3)%7@Un >ʼ5j s=A1q*c_s.uvsGxSc`L K7i/,ʉ$xJ/F~1lvػGCfO|/Ty"Npe/=i\(F_U`c㖞믋Wk[ke seeWrE@%׳:^[9/ ޞpB5 ̤cs?`9TpۼDqhlֽ{h{/ri& >@@wwc@Ƙo H e' b|}0ᵢ( +X2n<AH`\6#ISrz [\mg/㳟 ~Aܠk+$*"٩]X+~#Ա!>~ Qep|\S3MWˊg7 BPXv 0C@ f o0@ l$M:~\=^::fUzIC, !2[j{xfK7ط*D*j^C}yg}|=-vaNYU.JbB>?]O:G/+9V`JyiF'Oi<UYmoM&!Q\dAʬԺC>_2>8t'v2`igxݯL^`@gCw0 \uP/DHo(/*nlRhR !X1@ $ r 4 %\:%  ;A_65ƒ8EêoG]flckۺ>_x/F*ZHJHmdXo|EׁU8=!t&\$q[[Ĉş[t1{eq)egSO/\L^/<熬+H5u}t|o&a'4afeo^30;:y >tˣwG Ps̺}u D<"zyY^ZXYjZP~5 U_@)XAP@ s= ׿%p,/i d@+ŏ$HiY @/$%M8 B9߭S֫ kmyFϲkuk7p ٩O~esݨs/}8 e/_Wn_חվTD?_K/9\ 0Y&뮩&g<nZ^Q|\", #ZHH^1c |>u-d =Ez@D̅R%o֑indɼQ$.A8inlwQ|毶1H>\gQ@?08t 3x8Mԧi.v#%]s@LjUTTpλ:_[gK:^`:,GXYX#T՚߁8<~o0]\<3T_6p_<_(~f84jlY_^=K#zFl\y <)@~u_ag/$Mh1' n丅 }CCWoPM@߫'K/̱@F7\&VG}Pc $\zܟUUuxqugeoJ*T.;4|iPhPcOs֟퓺NQsܿ{||61Fe}AXir d?_ߒq~>uϱq[y~0vg_|aX{(,??D&}*+IxK"rka_}'zɅ^~<30#iLJ*%MV^$FQO ]Qfj{qNq ^wW۟ҁlN?"VbΓ݂'?N^#vtX8i t^F~, x%I!gݯD'KS@!1?13վ|mf7!c6v{>_\獎׀ Kua!h:@Tʕ˷ `5s/¤rAu?]3ܤ2 4??.8AߝtB k 7&ο޷ો^Qi`㸈&?I/sGzwIf@akWl( ou MVvrmjq[R5[7t5TW=(4J jG Gm0(g "01r%D/k`nX%0J_ mfL=3 @Ї-"(^ȶOggSY'LIM0gowwm~?B@>@=>NQN}y^GMK["Fu^ -U@5mTYDGO n5n<+ ӟ4:\@^Ӛ@71/~z-d'+vm]?:ɘ$VVhW )+f X6BX[=cއ^;JWY4&1fh w RJ " t;l\ij K+HDko^q{ɫN-Yߝ.@Hu8pB[;Z 0Wij 77,:/^Oh#@GnֱhH7+e39|:+R|{>_M֪=Pԧ/7NJrO9K'@O*J]oTV 4ϰ!g 7zz>4\|/@HprT_l'}C]i&nr-Q.U]8`/?z<\dh.s>>(z O ?c@Xw|C |a5V}<(p "E  ї ljpY]WHGnm*JQ~c! W_j+tC7/\M t}i| 8ȩ)h հ1{qѳ'=/~tUtgzK{|s63lXη &J_,QE 1->]u~ViL6A/9Uoth !Y[>~ s18 5aGXLN &`_w| ?T^?yr3`5tIL6T, KyLx`b`"n-MZ8jh@ & p ib8< #puXp`.@\/08_480]@ 6G(N¤lK>u[1aHF|! Cqݗ31hv8Q82 tw$0pATGg& Edҕbж{mV nĩNjd/(@W vM*9y L2x%@.I(d'^7`3L|v H'`Tɽ_ H}4n2"nYɔ$iv}vpc ?WT ,gVC=EQ@>(+,p@մ@ Xh!L+?* ':3/%(؎l(g3qPW3@t1.' .޸Cbp|#EEy 5zzpv]T|[<,WFKd4ȺM;Bx1F&g<G3nȽ3P˺aЅuP:m;r_44fAiӴN e^_2>H !Yn;Icٓ7 PD@3@>@x-LhX[ð60w `B#QUj H+n|=Yz𬉓|>}q6 zk\@7@qop#t[ \k=}O)/I w/:sjqN^wEx7cj(RʿF2B7֟ /9H{7;쀂?.o|o9BiHr&gx6:ܧ=&{Vx_볹,r91fEb|Z =_`f1.F*@U_x㳞 b_\U-uot EK@# /~%|x@7@ ,r#$.}ګDXG8[?Q .~n~Ĥ3*r;-wJk/0:u~dvs\Pjr?& x^8r n>>֝"b_i9 !rp6{<#؋b~n%IDjw"pzs\3eX AIbZ&Q R3L[;.o[oSMDb梨hNF~]l{;ua7"#`6s8:Ph:췋ΡgdY*b߼kONW͹og8& Vpnd6${0[98oSSh No_8=8wj-ytm!Ǫ׸`01ߚ$6/k-Lϧ?1˟TZ|6+턇gLh 3 ܸXK7{i +z >י/c*/p0TJT>2ǭ7(ϵhmrpKiP"/>.ˏk$;h'\oW> MG^TAwZiY`+#5Xk-m"hh좗WGDΐW$c:U#V@U^AK<7>h_e CX};sű#=N8‰`{~""J0!uvw8[nJ;t>Ts 鍠$ BOɹ{ϮQ~m#@DbddRlZ\oОbߧU.~/i^VlQ{5d]^Q'Z?!/q,to7]dpd j˗_kytuCa>VqmVV8$z7Yd%@5gU걥Eykg0$p=FYJ|x{)T,ٮv)ln?_ڂvt`ʣ'?>;'  7q8֯=jt %pU0)$!(< hE0MujI O}5~|kR/쳧\~^;8~0E.0^Ivxd^v}O?w}2v 9@ *d3֛6Es(jjw zAu[޳@i;v-`%@__+/=8!עh4>,Pd@*$)]fd$WJOggS'LI/ledb^WPR^AFHF~f~J?uV YYF̙~k*$:(&pnb懵KhN/>d鋿K\vBHBQFWm{c8\r9~'V:yp&'*ߩtd~!Y>R۳:2Ppttud7g_vtp`S;.`o+ju!p`QxnQ $oTYy}.j @8'" x04N]l^ `˖m7|#|pd^[.%[HǪ!<4~rҝR,xF< u}u #bnϯщoq\p|ض} h5$+lQ$هkl,B]>:cxܔU-,WFeu[xO Շ{\r? >W}ٞn^pe'nn9Z80}P ߽zX?e?9 #;`[6_@]Фm$@`QJ #d``X<Οn :>蚕%!IҚ6.QpHCS?a$&t);~v'<(8xm.rJ*€6` ?'}eϯ ]3rEf": Zk ,$!@E@e}^ECeXwrNϞ:krZ̶=?: 66 $.`X㫳[T@:j9vHs*c7 GAm}u.ڋ@ /U -}[Ofn@MQ-X:SF6Ii._fA7Y׉?u g=%\5 N%OE֏׷=؟jX,1%gqAr*нL'0y][SCB2 ȧ0"t95bV+x_8En1[CZ\O'hH$,V_%/~IZJRphzc߬<ƻJUtZ̓fzsquWqz=T@_gHr!П @z3ݵub`e zU͟^cP@7O@ ]BBBOYM''h>Ńa ne$ 0U6X%%,EYZy5`J}pw9Xp JHuG߭,Gz+sI4?([ʀ(D_[z7wDA1g4vh{i|—Ӳju:5΄ l!o0|%u*eRmDάRʮ?UM׊wyJ}̜CwEܓT Ƃ\Ml H/ȶk Lfr+ _+4?f MҕT7_]+*gNE <\}%k+~ zdp.&!]A%eV^ja ؜W56nx%Q,m8}  t s޴mwU5}3糮^PҲU_>g>!\hɝZZ~}v_œdhBܗVÄdH0~)(0Uc@AA.o-Eo`џsQ⛡k4u|6(Afl&-.iwIC'=$\Je{dYR;_9Cy?+>[, N~r8P }$Y4`Aɫc`g*r t~GK?=8H?~ĹP!n?%P5R"yQjE⿝h6VN;by^ ]( F☟+j {[sVpb~}q<3 4Kd?F9td7E waп͞ ;uq`P@ԝ7+PWhȬʷ1@k[EhP`t}Oq&j' 1:o#0P@V M^%@ PtLLf_ 8ϋBԬOU=3%p yM O.  {? lK[X4ZLWWfH/4xyN/|5]OVF((ig:ORvgew({LZ.~p2*|۽**`S8??T8?d LO݅ @};Ig@t@'tw|?Wr! oZ0@XcT`EMIP|-c1 1 !~6!"Uo@#{m6)˂$=|*'c];-[MuhZְV<9qAO?9h.6`SURFDF E_~P+3|˴aOK;)Qqsr}LVvm,E^eKMz } ުh*g>}J**LrA{˧ )ԹoU ߣ_>5Uxj iPg T<52Pŧ%L+ݓڨb&_ _0<J>O mox[` lI6K}%CFͩg`hǑ.By<ڽ& *${}-/`?펡M%sd [uyj$xh:uÁ]>wKL۝߄Z8B6s @=뻵b_n7ݜU-q|4~ ||CGU|zUPy|<ıC`Z|;"}D?BmqVHWw燽z/X)alGA #?}[>W]E@ҞxzR4vJkz)2Y3aLzzVKk@P`.6xJ.bۉ𙳋0s| Қ?Z7k>y;lSK<ɌrƮt5en:tJQF<"C siB4JOggS'LITVLZsfXfN[MYJhH^\J؋O]-=RȥV`qFh~{E/ k_'R\%^s[ߨ #gp@`0gU K+`- > rIxU s;9Lތ]<&s)ZX46@%@&U 5q PSO7>+_ W =c  ~umۡjEol+1.$gM By$ǒ$oB_ 6 [^\!7y<]8&%Zv[uF xؚuA/?0b8`zީggܗ)BJhO1@Œ 'o&qmZ r?Px [L39Ly 3OW@(>ȵrz`e'>6,;N Y* .]l[ 0\UAXcWhEl*Q K@m- ZJ@_b wC?Xғ, ֈb22>`. /ML-Id oip_|"whi =*JP O?忾]zNO&4^y< <3 % ?߻ n[2iO2qX8pƗ_#@-H{^w!k//wO@XuX   ,w+;r  ~ Uʼn@8rrn*0J(-Y E8(|[( iBl ~! Z\0b鑣J]g%H(€?\ď1q̟G^`[^}[(rh -Ҡ %H‹0觋]N۹/ߏ7ןggb{uӎl/7W߻.χ/Pj"RϏhHSNA0(Pu\ݸL- `3: OF#`|%" gX+ |3XMX($\B^%{&O,)1ɗWz{(˯'gt'| w.簜HU:1轭7W':GCfsa6\i !ޔrۄ7A-u·I&3agNBe30PuoɔU` `vdS?ꈼ^U8P)w4*f{?gVlUj)@03笚whOQmn7,p>V %ďU`0y`ވ>%/oKI(QJ%6.V%5 EGȲ-|o ƾ/B,7AEeFoG`岚/&@_0}WtX/JBZ.MGt0{ N׍ AOtU\7s7Vf&wv5geN@ʹsbJzHLH߫3*DUDUu>>/4\Bh&Yrht)ΓjIY5r|, 6)L̃=]lc? dC`CPW2DwTw9P^ yW*} }3D (%pIC}0啔'&.:2։C+lc *p\u^xp0[=XD%DH*5pd ƍ L)@ؿ}) ~\{3db+@uR:i8 s{?J Y-БyضƧQGn6[+o$sHTr'}ߖzM], yυJ=g @=%D^:E8@me{  EVTQT4 X`l@ 07Q?5#(::2w45! jT[r>UԳ"ԧߎD7=Nݿ Kplp4dE$ G`句}B: >9CϹ ?_"RV !O=@wIOlt]{pdtIL.G:((w^'j\[/ |kv.{ Yl`{y4b'Y)qYmZz#GY`} |6D n^9oK_9 =E#* <P~R_~<s[k3puTA2an[36?=|i3˕fKG|;?3*S63uSц5 Vѐ\^WP.E*m_s/ Í{ _ Op,MAP?Q[)o_ҏ <@^14(fͦ—^$КGk;r!s* 'Cr1?}k_~}s p7p=.cWxJǔ^z1KCJΔby@]ofZx5@ !PI nJa,B PKF6wiyhPBrsn]Y$f៧cEm lTv>i\L@sS +"6T䃊hBL.p^(ENd9br/IM/Qt6>hC_@?1X~4) ڢ &iCŸMC%pe==#{ʼ|EҎdDO5o⑕ pd4f30DP?D~a]h=yd35ߧW_2$25E\Dȭ w^~d9{g9KnI 2>Yuag턱/EO"*ۅ,K-7 | @ q? )N̆y3X}7 >Eܞ[%d#htB͂٘΀#`^8 (\Yv5R5Xg?GD.U躮XE 0Ó+|9[|jeS;Kё2/M0?~]u/ ħoLݴd{QGPBw[c:U[4εO߇f%P!5^ E7M%ί Xe~>Ye? Tti,ڌT+qqNFy! M؜ OggS'LIu=U<6559BDv>DF[RT]AmTmV E }Rȯ1T)j\ʾ_X+TBD趩1F}>gSKjڼK( 54P#n;U>{l; JN6M7?ƛyBʡ*'H)@~V3\m#넍-z^ U8WW_XN7FIP4fI"eؚ, J}H3  i=` /6hj`,6yd@;tE>h '"p&.ҁ>{Y"K8bAc*4*&PC Jn'ەw ?yKLh' 39t9hPW.NμK&h37&;GN䥥Î<\NpAJT4[ψw^i`QGL/xO> 4}NfM& $29oSpqJ2<kpU07// &pw3j՘:$@f“%Qo֢Q 0Y {1c8{fؖm/)u>>V9EMnAgйPS0)q0bΫb"@,R4+)|hSB_:6[cJ} Ν<y?(´\8 &"bSWv<|1Uׄmrvf9iJoKȍV\e aDrX&ȁRcU* u—KTA;h[.>ā$0tLU*wo;x]+9{\ccy~gON~YjϪ`hϡp0v}~_o~'xEJqm-b<n|vn.S9?袘%a`꫋eqvkBCVn-xi%ͥ#y% EpΥ^$kN'*'4\E.`=A%+\Nxh40\PEh@f_ ឦbq6J Y[~܁mRsw#ŷ{hxqGri{@|P'}o/K{-p%qviuIһ1N_mXДώŋjj &/i̞t LttUW)X u* ~2]3@upG@np d0 >RQawrk\)e!]p( ~m# Z<֕byvd8z*ƅ־ߜejs_|/&x|pCOsVI \R_Bj=k]&YVjx`7k (b|?X)rq?A׉h/m&S%71ay"Z<\8EW>Y/A>TB[?[HŤ,>+AWdn訉~,@ kn8BA)R U'M5y J; q|e MF8"UO] X?ʷ~cl;Scf5z|9;|2mh&+cѷ `yr~)ɚLS]Ͷo$³Tm5^-` r,` Y |4ZE,Q8KK fWNߺ>]4JdJk1ë$x:ߏm?}> T>/){Cuݽ|-9 pZċd߾p7v)J a.V} v qt[eeߧ\ wI~dFPzFE+ J@>F-2M l/(ު]0@ Mh'ۉ##Oq~F>;'OMC,IpU%t'K XG$$+_qpӳ8Xg]ǻz/<ǹϔd˾wRC/>8y~J w9`\n5X~B?sL_5qXK~t4>> _(@ӽ;[{H.z_΢(>U]?Kb'M64Ѝ((D`zVW8  >m v@,w,֋%NgK,q5h$-XWˆ d^7 7wU#"@hrK >ZҸ)9Srz<>xΦ{A-%os%oɔ0;)Ax {l^˾_C@xV/ Y27}FR΃^}>q\|Oʑ'g7sRi`gVů8<:9y '0 .}Fgwp, X;ƿ`@K )"@ߑ> bjOd"#ʁRRbRЅ ?,hxh,<?IXn p,Si A-\E0JEetI6)Py͇<6S|F=%?4-/pG3a\fg.\нRkWҵQ_~혆zZ>m9v^o,5|8_Γg{e^2#x1zjz)zuïߚ' |@x8,(k);Dc @@$UKу (/q? plg?¶~LHhu;#٢9- x@} B#M ? sƑxG:o+Bn[CiG^۸Iny+Kr>pz p3wKt3C3J K]1愪(kxQ 2!>.\aǙ`EiOggS(LIN,#]SVJB676@A=@>83573;>@Y^QWjhLuX ̩v۴,I,TChg9Հ\øLsx9yXhop,@]/g ƧXKKzNJs:z|oM۰=m`/uΥbm_`~[W梽/@CY@XQ,Z/=e y 8XC䆩`Zm4>t _wQ@jOU eg !@ t0B `hlD^>).\fU;kb( QT<ȯt5o\G@]3fhxN&Nc5m+T diڔKؚ2wy'Uƀ@hZ@P+K{W@uo<LU9!@'j!x2t@U5>sv*pK .pgE(.^o7=$@VzW @h ,UqҤ0^YbRmxFK`6K|)Hyg#K2}r@axr7 Trt7f/X_j-Ѐ0cY5ȀV@ => 4N^63+CHum,J*ʞyo<#ם XypN FOjvJMxN0Ȏ=u?8u<=:ωfOl}*Q xO<ɰe%X3w tyGGJ&qKDBH~q ||xμ g 6W 8y=kkPd/mNnL/ʹvC P^ \!d10`,Ps[,p` LIubkԁ2tf8C OfFϲZ VE#".ͱ\yE_D[ cE5i:sPۧ%dvM<."~\NQ=CEV1ݢ3r|zn爀)ݚwqNoe=?hM, u@뗖Nt_:"T~ ވ xJ@~loШKx6Unټ +@_j<8 ? ߿ˁmo z` #c8'_m^-U: Z T1zŘkԲ`g_;u|P JqRb#IX=& [mb1?tDZkG _Xk_3E@Zyĭ;vXuR 1t4|T6tcओ0k7պe]rڱX|0-.y~ /#dE&DwYF# ]ѣѪcVhs`]U]=hkSg|,swVߟ/f:GxF:mJQAx s^.wg7gef?g/b\r>:{ic>6)BwR+DS/|ror$ӐBŕZ1r#F[^gFu/݊9uI?ܒ>=T;Z*7j=tkVY9xJWGO&kRV8Yqƛ>dVL䍸vR8˔=W笣 Fjb`JSn\NJF^xy|_=6<_qn&8Y|y+'ӟzU燙/YH(2|*pkLoœyur,ȅ\;2%IY׳=P|wwf}88Ӏ>q0mf4uXgxe`'4;c@ 7yedYx^q?}݆骆㴨Rv6?}f<$ 5+ Nc'f0",UnN&T-zf;=}frӊ|rۀ|RI?P2hLf>13F9U$zW\ANʶWr0qo.c&,S m웟rc&ϵ=;V|afuZCehLv+` a5$_?? ZY7T/r{:XIWعA-ī +*PnvѼkI8q%Wqeo{vj˧0,SC%R'0&^,ȘzR:vhTO3/޶Yl{c׏ڎh p0@uG)o p;49( @ uJOggS?K(LIeUZI$Xq}dhJxzNOUUMъN }D&5H]b xh/_<]_ "ZohD }先@@- ? _>n+[F77C$wE(h FLS 3s ov;ka:C+;yiIڶt#_9Hk!d~R Zc=5  H_HgHSGJ`/*|ђ-T>`h.`-@Pl^eg Zj:D'phELͨdg!X"W/. w,pH E Pnɺ<}@~0E@-(={}ւ2!@7(E2\ʹ!bk9mI(: alX^v'Y`0pDY݇=R0AL|u7]"/W+IK{ro.x`P||$`XlNOxV`H^M%#HVpa4$|O4g7S U!/o[L68'8m3-Z Pf(l]Ƌ J9gld~Na'`;@3_VQ5$b(d%5R0IEfRd%CÞTR阁JK'௳R 3s߶w{$~?۝~7 Fc#K4Qrl@ j9,L5p(F#Mf8"Q qÏ'#p߷QFJayD*}.$ۮz*9YAꌡ^wC.YU\wFJ'X:#s;M apv 5Kv7w jA^wKޔ_`Mk.`7w[9'k釄>_C1|Q8E ɭGgdIh{YR >ʺ|G ,"y._TUKj#d\_y -+*`Y 0ҌY|͔|kvaK  p|sb:'DP4'WA:2];cxgK6횞:_Nmc|mW|HIXͷ yKgOY"SML|ʻ2Qҟyr.(S߯S}~=YlcZ!D3oos150s2`)<Ғ:VA_K\[KYj?-nL4 H Z2`, ` YXc/k.U6j7*Oe' zm8F2H#N#X҅2KhNx& K<@(p8< 9"jA컛{Ͻ; 0(,^YTJhۚKА'k9֘$]XAZgy5lBtz2=Hwk)v#'pk-J/7EH \%RXyeա;ɂ8@};p?' OIW7 Sb9EgUJʏZ 3 2L= IJyc ?=^d7&,ZĚҥFNNkGk-ƃH"Gɍ7/awP%OOnxldFA":܏&.W`ö -mXT cy@1ٶr ~sgs(%U\@&!+w !)x>^^yŢL?S@D<ئ+g6|98POVAtf RgMY@Q _ h@s`zV0j¾| YǶlhv{ H(` $u d+FSm4/A@Z%$$-U)G CTlpWT;4ɩ5},5!S[g7U&OVjmX>}\ ǫ]3z򅗧[H蓑/^8_1躮 2#dmR``d 0fڮm(ɐ{-i皿<@WΛɾ`Gr^<諣(H V%K7u4}. ȋ|~Y=62q|`:Y.୰^}Ol ʋ0(=l|n|s!doW~e7C lx b`Me!Uv~68E++9(UGט}RXf."i!gT}g}Xll{뽩E.߽y%s}/!ϲ!L6imcޭp/-nJw!sG/''p*NKu&YwIr_ sFDK"s5C?To.zyX;|~8`C4F7,'_ *xFHC_/*zTF#FX=.c>dyGh̨x ۶ ŋ oZ\6SFwaݴM\?ܰLLݟYyy+LB Hr ɗsy!;Ž.޿Hmaq"&ZQ]P[֞dATySQsovr+6Kg~eY`s;j:y~!'I 7=_jP29M:ޒ$ K @#OggSu(LI{Xxjsx~rTzV2-r$"I3cٵ"aΨF*Of#?sEa_%@ig\l:sQAðo[}@!aRJ/͕vL^[҄\<OZJ׆.f е]Ā_}?p*2*SĤ$u-.mO+8Z(ß_BQ ;iwA2nj2\Zws:b!++5móB翕`*#4^|"MTVs&* %c,m{ d,[䫊8v oOzd7Y`YZU2v`{Xe`YZطO!~jƏb!r5k(5oU卑h|yQ p_ w#zYրE 8Yup^J% L|kn~cv TrJ۵ Tipd xJBp5~@V@vS~5FAy{o{<ڙ\44=apW`13<0*t1SSE5Euc3Y$?"!y~E8O]ɩa(e=ݙj=D@P\ o~Jj[~ fo*Uw#Qrje:-~sږ?ky< | 9/ ˡ]tb|4+g;܂ۯ]GVNnmiJr?Z A'lV>P&tw_Q$Tt+((g >13n[k}ܫi&ΤF {N<|{.`Y1.}:W\/wg^"﹗d38N @=ZpW<Ͽ|n ,[~@"kP<N@Y`&X$e]8 _{b6eg(=@ũKӰ߾/g7@xC^ V.]wj_y=ݖ+@|_u$dTax ~/݈A2h)Py<|xg |z&mum.Xcע5Gs??؆0Nc/ެWl#N?s ۙ8@hwoPp>Ø*qw?6rF y[ @QdQ= P{P`@>v.e3hKb Pp M˨x+D"ϐ2`+|~ khh|u _+'l%7W|t h1Gn}` 7^΅3p|PP/0/ JïK)%E7NrCf>_Gqg"gF_eE=I}Xf{ ~!afg0:x s ^Jb3(P:JЂLHhu"E*.&@sL0~** g u-0="% R`x~E60i'e.zY┐g?L77 8v_K7}.ZTl ~tKZ+<@X@(c΋ e[le/#2J, ! n-ժ(M_LT_=~kFh-Lw+Hee6:{ |pqjn `eok'6C׭dWwpO?y% *quv$%f|*?̋,/# z002{i< B [k&B&̝9_6q2oGސӳ) %ptAIZ{}Ǟj_7P` ȯv@]G˾xx`vX%Rv@u78>GVvc@H)F0νd30*`0)55aIi:A"2ER\BJokۼ[_?9t ]#zЙ0xYLy|H18+x]+@k}cւΪ 1Ke(qO >`1ҪQ6vGP N'k?eOXa@\834i4Ii\^=Nտ<x`׿u=("*'pʁDqz ~  8 6~ uֽtJ!I7zǵZdg-3/߭ w9~8bpӔ/8gVO52sLoqwi]OE0tع :33Z׏o!0z%l2o;y6;?W@¹R@UAD=(mPGc`y@+êDWjqdV^ ,v`w}H8xm^^ͺ6ZkIm/Z ~)%O,^8r]CWTU f9_p`obx5LJUԛyHOnPs,p@jrwXd;\֮5twˆ@[.v>T1cP{#0Q0J@@otB^i_lf$_=a%^vup`xEbX{9D7__ Q,~s͚$@yHo&ӗ{cD%&@ OggS(LISKyzZks`iQ~uIl6eUl3oMozX/x͹o9q'kHET1.[\{o;}O󸸱fڕv(*W}GYkPok6 ;yTP5`(_2G_S X _ {vPpg97 $4XVd Y/Y,l F L巚 !x<Cyo T&_=n4xG3>ʭ>a+0O?d|7dWF _?O&.u?L xPyWƫl)/*\qCP9 'WO]}s-`~4GCQu6=lLuB>P޲*'"|)0bt7dFq~T@yyzۘlR~4QS@UPֻF7A#4 XxW: 6.7$ ՙ[d>D",hθ$&_eӝͺ5n:pO8Oh"f g p(WtAx@NS|;uj*YLd X%x@f^>\WZ>Ech;EzMߛ gan_X Հ @3ɵqX<r Pp򖧶Z[ s|Dy: o5r(q ^Yꞈȥ-H\ H0 J)X+@^@CD?S*`Z`2~hm"tgQgܖ*+31"y~ _1*//z֗#ۃ? t&䀢TH/@\f0iǍ% }[6e|ȏ ,l1X=6z,ël&A c@ po;/ >  ,o>Heޤ檠<1ɜu7pQ s ~Qh77F "j:{ xqɘ뱧=N:W l3dx\J&,B眡j5CTPdL3yՖŏR >zoZߓR^fWw ; >sm.RP|=C6`"X` ;lX_ƐM`@[`_ .@ - 6E`zH 0~@6o!>Y5xJ-&ak/mt$ prww3?0m}ވ/^}䡩CAݣrI@0̙͈5ך ~q_ 7|iQ (6|`jzѥl4v&Dr PF#5ny._Q3~N>R@`ʗtg7-yzMu gWRMOvdx#Ny}NΠc @ݿYy<NUPHHmIyWi'&70~ep;gz k\]_KdbҘ7@Ujp{}2ƋN߫88O'0ܝ\ (t:![εY(ٳ% $YcB ~G%~%"(M@l@;f<MѸ,ˠ&Hݮ8h=mfS9bt3CJ=ssX |۾oe'Ő 7#1|H^k6wLuj"v>*,wϭB mFq '3?+[>")}<~W tn< X+*m5 -Gopui>KL8+"_ǰǼqxk%~9Z ޺~ +˿`7 -`c e_@^ } YC&e`Ɗ]+H{`5{g3 25ۯF_иY:T];TKD*= )|e9{'|gkQ?{,*Y rrUZ_>u*Hk,푷OZnz; Q0M!ӛrYv0m@c< j :-7Og*k* cM`|H* a@iߧZA=DTSiwzmh758;9:jg Z3| 3oZO&w; x[ȁWǑ_ p'?%]uЕ/6s.]~WSZәӤXq oJ;7&{=[s >; C} XAt3 Ous} PGSONDLLW@T߾Or*4`Е>/57Qӷ~~z =p:֋W-O,bz3P'9l/_gF,lqZ N/}(Ȳ,oz`=@@|v|sYP A )8XY#!I:}DjHyosg>_gnn8Z R){Q~L/d0㘳d ϨZr:0F]cm00iNOߎ}vZv^/g]*'c8}?etͣ @Gwɡ ssrM*9 y8xZiu|l($DGGNEl@mBmK84Vl!RA!}`ml`"@ZC*W2`r6/*a*wwW\K0Zt.TIxxվ~ؖʺrow?w(3_D"Up΋cgүeKrR9'Fl񻏽E64m?"_P9|md.JTEU/ERV1mda[+v}Fb}h,1sD_4=|b%<]] >TG XV۸\#өm3IMOr592T}  X='Zot"tUQG t*2*mK\ ]jdG5z~vuyNIݿ[߹z2 %ݾ/NqXx f]Ycݭql!~/Un85Q0>{o~w~ { ! X,#B72GgHR*N$x .Vin gπ pdCvsTQ۽be Pd$]fc H肋={rN\_[T $30j5 p[~8ƻFjP( JP _L{v\rx/3=;k Ý 'qBxs Vq]ՕeMy<d =쐰(DTU c3Jj^i Xu? {"F ˭m^>㿬~8LԽWm,ȗp*P`,9Ag]22.MdؒY~-%wPSf|G]-)Dei=f5+ݜ:\?p 6н ~t5H Hځx0|ξWeBV75dMq}R̅66xGi 5Ic0t2.!p vڸ%yC )wQYIH!(U﷓;7p}Ϸ/X @,[Xh"3Pr-V9RY"z5 a>j #TD^W`m2zfo0~OH.`^=W9g%4ex P*x7ߒ;`||M8wXB`p|Ksq} 'ۀ=tA<\gGSdy߽9ld p80C*lZ Ǿ k_dd6@t&]xw9ډ QXδ^Ka*˩ݖ]^K;"iJg/# <NM/f>_:E,~ZR@<&J 4W=ΫN? 0} _P+`7B+IG:$O} {(# } ` 'Q< ~=a~# |[UxF\& 7hyEE N0\Wp!EJ-hHbYo GX}鿊ށw?:)S+/J+kf6d3J7/[Nm66Aivt(=xQ@v\ d w#"sGPi#}0|ߟ @`e/O(j  6OI@p-)' @~ Y/I,@B}7t[7 їU3c5MIV -ZF iR<08g?;s90,..p!pLBn`$GƴE ~ӕpuL3gѼBm }߶o'juɥ r[ ϻdڴ?iZA櫭tذ~IS! J jp†X1>by}ݸ@%lm=~P j + 7 /$@w  H`w<(-~n(Ph)S% \=2C ǘIG\ʧߗULzg[2ϦPvu~ЊQ =p0:_cu`f!L%-sunY园p6s#o+܂W0q:hXR6ﳝ}?L_x\ҮnB<6 en>?V_4r=7𢅗MK=|7'iyCdOggS(LI8,MIKJftjgecQ~: m8'a.bl鋋'^aQ J)1Yr|Y)XR`OA~b s=kcjŽ5/-X(Wu4^]~M(#$~K÷zȓp+7\s `9G7Ous'8xy$\3c8sAt,[Z &#*j->NŠ-f>oh&/z7܀\p,C 7 VRH\!ۿJk[`M&e.3@]"4,V6t)h8@ \&#q] զ cU3]дnDuW^opruzmӜp[L%r.-kGiM\;y":ʹ`t{Ywv\V`ewq^ELq,DGT.QKY :?We@)U#]((_X1E@~u6!'cWu߂/e&r6fZH؃n<H87K/]b8K7yΝB҉H{S w !8~e$2QV/ma!xRO8J_YQ* Go(A9fC*щ3/$Ox" o ᧜ο| Mlj |z>/c룅1}X[Ywt1@t|2cp}2x+;' 2܍rC|5nWY=6gwĉ,pkDmV9wgN8nZaWw>uEMKkaxPx;0 < ?*v&dhͳ{G0r t~U`PGe]2G<1-Ql)DP*+uz۲`)en9YYF~:'n0g`}pED9IW[6_\\1z]=\7K+_$,²A@ǻ܋O][H63uW3ԂCf 93NFYԢrsL@ 8~A!m- ? `svE<hhA@"1߇ Ӎ1 @U*"|e]1T>gVNŭe} $R>yY`%>ǗU)9o_>: {EgmA DSƷ15+jNB]OJ͌×]s܀^/ŻYg-R:$ b/jhf8{W9t 3ix8L/G? ? c<+5K/_(Y v ?  _4L? YncPd=`n;te#XA?rUW,[--q#t#D#8=8zl @[N3pZUBYP}@9{U: ~Qǵ9q>t.ŵ%i ZW_M挐LxѲ#O!ClHRηpܔ"Zjc_uu@xdf'5O|"<: >'hg xS6[*lO\ FS@kP[Fw)>W"w.btH%/\,.6B|f0o 4g7 ~5F:7 c'_xrP%#Xl>;2=2Ɂ~o=u6)dz>1@UMEDGYaz_P@o;@`;w9kTNg7@rWޝ O+&?P/Ks@\uotQϼɜ*~@Xܒ8(]./7eQ~ n%a!x%*AKڈF@m_@Ӭuڏ $o_8j0b`^v+{sV\)|U?߳.s6Ohq 9p |)7=XMCUb>K4.C݇HΙn5g/^2Pw4tNz4V}<%.̲V۪ZJBI0 @7l.y.fS@6WGE,|{s !VV7\oqqwzܙ t̐nI=ƫb?0Hcg9Hn>! w3Wzn ^5:7ff%.Z_f42"G([!B Y-oɟ/xzrt]Y*L˩czbœzNg/0!j'.@iy&^\0_o9brq~7[ 6IP/ta";rg_ZKk)P4[T>-]g&Yj o6?G,(ա $(ƍ?򀇮L!{ - 0?U=-*+dzol ~mɆZ:ٖ4Zq|cwѭ^}h{Y³Z3y- F]` 8Vu&[ B ?7nJ;|$rkJ! Pz=m^Н<,W]܃@n;,rART oܣѨA{mTTxO`n,#@oki]$g` >./;@+0}UQUQ sB'Vg޺aW@ba$7nd b,f`h| p>mĽ-LJ8oᵩL-?7[џ*(PǼcwP^Ӡ(rqW)Nq>Z,@ ;kz]<20@?|Ԗ6kKۦ@n6?0 {Ƚ=εz}nBj\SA椆RXKf]\aN}`cVM,e^5N8 H֋^~{k0ɗptnd?Tdx`s voa'oJD}pUGA2>`֙MOggS.)LI4fkf[bNR[^PgY;LGemiji2(@5whTMD?\9?f {bͱ Kp[4pF(W喲E2S}K\>C6Z9sWHoZ}/ ޻5k~ɁOe)~e}|ׯ{p a?d(`/l)+S7ao^dn^p0/j2#, \. ްo P@_9̜? E? 28`tX'|#hHx-]"(!'*C:VE"~bM]'x5Gxtf=8p။@*m*F`@a{O l~P!>avQ Bo{ ( PNm.͒gI d]wuq J~)Ttv?\5zR*߻tLsO o"O<]_wM_Л&=5V]X 5m|A~vǒ`q.  L+x@x->8E` 8,ɭB&ȡGB8 ?li/7P8A˾ı^aNh 1,ֶ f dc$.4t&O%Swc(GdOB`² "ztzB@.Zp}PrceBǤA}P3zn\^WH}r%5z*@#Uh'/&gﵴ25|ev&<-ڱSb \`  } lnE+F'b9D|[P85%Ij㖖 ןfx =޶|j%p|Z@w|/oDHHƝ 2o_@O^//^ɟ!T_ϯH!!u2ߵxٕ\llF溩 2Y d{)<4d&l*ZsY/9ss4tiwGkoz ٶNǶ%m8Ȁ6y;]}Sc/ީ5ܔH=\FMgrWB\=zWpm@4KscQxy_{۸8 "9B1=9N8=5GۛsdC㽒~ɲw<4ZMOS<᳹]7.yT9<;_k Ԧ:*Oq5̪?4Ex]le9x %wYEjSn~Sʗ8~<9~7a$w'ff* @Q#Wl`(@=؟HAH oK*B k0rJK޹dddƝ´Ꜳ;ʩ(ɻ0- z%ąLpq/inP$ RelזS+!"uUWKf9=nV2|M:<K}T<҅\x {'b #rU#w.^k{\WvΆ!+ \fj3!Y6Mx:M-m #×KWWz/ r@㋛?4`;< yї Сyܽ *Ŗ FL*ȫ.P" ȷ}#]=W}@p]Ԇ" I:23?\Y(b̾\Bv]H\ s.dgm꺩6wk\ 0):*C^'z@0T'@.}h|!Y;]M@ / pȆm-lr%t~^~ puv 9PAQZy Э w1|B  dEU,v`<] E~hE #apxQyѪ|JnGs(*Z8)o/1A|*5XrYN5[v]rÉP(TN slR@2='%]vPէB twD@?U5GX.)ڈCUOUYE߈1*+c^0VAl߅_C/6+cZ[}y~Τ7{uSԿs4. дZ)b\+ZB?;@kY1ߟ/im8?G$P|R[` T=[R1#KyxެƲw<DSIڕG9du?GF B]( D)zh^TP T2T *x巎m}'] B@2ij%ߛ쭯ߦ~u蘢a*_._ n mdwڐ)"4y}s,=#h @e[9kҢ眨p*(PEP В%epi= P5\zFn9Ѣ|z@30q.@WkQP׿jh!lcp)x8v8PI#1QVLg3 o׊O?(|I!8T@T^<\\4vP^Ͽ(NMfOggS^)LI|8]gceIcqn\Ry-` P,^䠈ȑ9Cޙ=>`0}7{?/𒥻.<g`%u\5 Mݶ5k?!Uk̬%?gׯhx=<}.眕Ǻm㮥^aܖ<r!g*. *d J<"@.pT^=79]iͲYvXd~q=e}K&B=CuLEUZ 4̳*_ I*;l̵?] C'"ZTT}2q}!OyU5lrpym y} HlbRܵ/~.F_s 88W@e\Ptx^ɞۮTD"z$He1YCK[D/Ê{g(x߱Ay)(W)˛\mƨf{>_ #{]B G3! ,f{' u=/D)< |@|w8I?x7(PѼ8^X̃/S- tFZz^$ ~ EP?I^l'HdA #Z%OypȋId`m4 .Do=$}w!ǟ7h /\mȖ lp~9朸gsMW[``>f~) d !Vd3ioWوtΏWr=+:ρF3hGGyuVY2:I26#wM˓U:>._Xw>?иb՜? \PO7N|"H֤)#|!*͉o ߆ >; C<B$.{:f(veWF3mrh{yydi:4X@Dڼw]s# E`?[W8k=^gO@-ϬrX 89~yxG3DjE{3x)|7F6{0 `>,=ݥ`20IYM"Ȝb/*h|"˧f\Woၷ@~n \qpjI 6穢*F5q w[?7Y?hwvK.V@soSrDG7@Jۮ @IL$ǭO`Q@u5ο{Up @}ỹ齚Uzd? @ơkz+ |O@9 @_}NM8(*,`17.@7$Z("͎tLQI IpLAUSm&A$7Wl>x1{n4/.Y@$TvS[8|*XuquYdy`^ɯ玣 x_ތ:0~gK:zǿ ~(sGq6t{붏4 vPڃ+_zy82 w`i z8Ṗ4u17{ j>ʊ|Z\toN@ ?=-XSW_.boky8_x5 S6O`4@dhE$G2 N'&W:V( >Y^9]⤢szʣy6d>"Rpe{E]=l7vaYv'tONZR98sY]E!K츉ojL'oTHN*{<2)_s4xy]r } ~7`8P%5M[Dsf9@ey-+Ȍߐ7:CܨD>I5sWhV㧀Y=~ ώѯ;WgDRU9o fh>0_ !l]hl#@#F`aN}I@> ȥm&uN\%%lNwx2gFV"L]h870|,4?b\{ž%4AlEetWporK9՚e:'zZc;ƍReQQ; rgHYXtm€@&ݳo z@cVa E<*&Lh5 !fڀdIqI ۗT,@h( `-F~m@3 daѨE~ LX!_]%D.2 R4kG|G?[o[,/h4 l3QD^]`@d.&- dۯ9ִ]1%7WYuT %CM/R gDfs/>tŬaf|gQ)2@$ffՓh囤UMCDPEPT H|3v;`c3PEڮ_ZR9Qnx##pr}᧟dܽ+QLt@/Tg䋺#/-BO@@^M2Eֆn)h$Q0_?c6{I4\5ppño,_F"%t:5B]u%}V0׼nm\rhQ9v^(T۲O_,h0Mr yW~WBzmLo@>c'^sk&Tܻ}'H%picYXÅmNK}nLuf5,lRmDҜyt\e3O^<)LSU/xT7qϯ=pﳆ街rN2bcW ˑ/gqNd-TqYbad @~B[OggS)LIoOkQKVg2W9pg,)ql/h CbO/A_,@pOɧ x: ]`"ط8FŢA$@/v'7a (];e^F]\ =DXvpvds2Jo 3̚ KzukCݙ?901@m *Ԥ_W>) SGs'+[蔛HSd9{ox~Lज़_ !8:tjb sT 4˜y1p5b WK|ѿ^}. *o {q-RTTLzK#adxO xy*ZL| :󻕛uEs{Px { #(B"I&BsܡmzҞ+gZ{>f19MY,} =ieW2B~^k{jNb_fJ)ϹU}!w@޴;hRUU sr>@[+s(4*L,}pkq@Um`{:-x&ox4rʓϋ7a?UwL9_h0J=7ІBǯhm,㭦 @A -UA.#2(0( @vN? |,*rҟzW>j5DJ2NeD_,:XyA纮`,bҰ4 @#VJ79{ N1m J8;I/YwM!q\iyYs}=0y?YPߏAy8Rñ>u$˳_~쮦TE ۋnj*O.8mN-zcdlM`ߺ{&hwxMmj[]&>l*ն8O ЊT%u $Rf\#aVe4>*"*(Po HY+|"*+ ""|z"1ۈJ~^`j:& xۻhA߀gD7o/S..0/P/5,ypn]@9o TDCQ >[0-<pmI>dQ у#>+,BVŎt-yPW_Ox%=@G@oG}ϛj`w&T)\Fi;ѵpGGߜ #aQn:[~7aHC<@0gyk&=  [*w v/oWrEf1uܕgDUMh"uc\ O`Я$b]lx I!x8@AE ZBҴ$ R ֘3y- _ibARxٗAkhuL ^2=LE ?F OγN,:|+grİyY[~p zm<χ4Nme&qLQ;_OLU&2, 4P85m>e,ض5a?"g﹑݆˂W@'o岢\8po p`uV>yQ$f_,+)$)e`i4ʠ<|@YUj4oH8Wͨ<nE=?rn!۞o}ۣRR[w3aZ<~˯]zR~v3F"A0ЙwVVaT7OBF3u'.?^.rӆLf~y-#G_U~; C4rpF6CR 4|7sΛݠ1%fp ɇ/@3Ks~; Uu}uXwZ7v4nC'{W_&T(-|tmvmQr2' n$D}v>\ rP DEE lV|G}lvt.}ڿs67 Ρ-r ʛUg^W0J/pŻvO3=IzzD}0j7t5%+ɤO/GDQQW9i,},ӛ!9@/A{D]U[c'@ >p" ^PmC49˯Oux$~ٺ_^L<ո"4o9xύzD=WOh%^B#?طk+qx@w2*vڇmw|;(]p_ i?!N.v[IN@;@zgۛ!p;xi ui҅f4>v'NghF~w C_ti 4`ܕ .b< |pS "a :6rܸ2 ?g>X|a3V,Hh9^4ؐ 7uh颦G{}BWsgU֝ওx[+_'~ZlOg41׻c_<@\` Z(,µr«dxvmw@ܿ(4?\ qvOmwY-I宩&?iT,N $dZCIS u.@BG-Sн?v#(h{~6Z`ֲ@gO6EЫ/0 Uy<1 ge%^S1H悰`%jAqk 9QO&`>}\|0- )_^TJy6[;*o$}n9 2W9'bsZO.|HW `iۨg@Ly׻~9; jk߷vd 3%{/b`Xt/pO_`;#Q̟<@\!˒ wU[(xo(d<8|2@|Â/> '*%Cp}x ӎ R*|UNhkL̺p F{Nîeh\nCs#FJ޹Y@ULݷpwH, ~>.@& x@;@ULe>Api>#TaʄUOYab[Kp>_h8.ۂB"؊@ P8R@WBd}_4q<%x[q|NTrs& :s3vAn؃6)\ P?q0ߋ/wN11?=T-Zz̀KC& >?-`PkqZdȈlyG Ea cGr|}!|'a1+!>}> rV=k8 }Efi/phno|1wMt" ~`>yt,. FUͰ)&=-. RsiGcJ"Al-DDyfww1&.w ^~ۖ*m5w=_=KW6wo] n|o.up@216p]C߾@ p暶˂$|Ou(C 14 "A~y$0̑CDwECv>Z~#1QEPYS?KjmrV%`E 0o_d~| dM6FŲ,#2-b loe,rMނb:msg\@ٛk9U@ KVdj1@~@Y-y@:A(3Ma@>%2e.h*PB]f؊?<|cOn\Ci fn@$#0i{X>ij@<@P~ 6 7kYLI',Uנmq=L}<_kwv Nߤ SntNonԛ%;dJ:әb ZBWnuxP~jX#p2CAowղK@Dr|8]0?!,Ja'I`w/pz@ [@)QϤ@D@ Ʀh A nϲ2K3Ρf}f uC:_ixh-~e '3 8/xXG'ٺ'JO"TVzѫICҾ/dV׃R@zY[1kk @_.%BkzkS?}7fMGs l#f`?` w q_[}<^u<Ϗ`NW/tt߾@@} b5@fJB  O`T9 @h G5(5(z [9\7VFD(K֓5H .߀߷I!9/E`<WJѧtחݹ@> H4OggS)LIdMS9L0@@lNAMOi[ n+u,`!sw=<,b.8}BX~o {f#l0Rٕ) t) )ܒ PWy<h=$- Sp^)v7u!as<\D(yG%#B`ޖi% =mNW4(H ~{lX%NjFJ7MnaO`w8d{Ž?A #cX_sH5Oz.* fUi 0%h &@oyyS[gZ(B.-ɹh?`LS?F +&~:@>Q ~q Rn8/Q9᫶$|Gri%^VV6kް?g{mCD$1/Žٕ} @l!3ϢOdþtyu5ihsP~%$޵0ID)1 8GM6c?w;oMdӶ[ݢ=fis V[ڲm9߄@s~QN  8@湻ch8 #  )<.c4ϯ~^< |8W`*3貈]¸fayyÆʃok1?Y%t+%C{ @`AH-?vUXm>:w-@{_| )㱘 ^g_.LSל*$b|?x`}X͟j`n¹95ţ-7mS 8oi]oo1Hd/$wWv<ɇ4wGc\9lӵ-au6?k{Y셋^yf󺥾p.]m)1Y#Y7yn<5!<>䇴MAFT0A d$ϗ^vYY5{RQ @IY/ߓ-?XGd XzzL] 9}aT˷Mckc@XÚ՜O '(g뻿 D2GNֳ,ŏ_),NK m`G0ЯRXhzfJ@h'76ɥeZ +ZDWrLujp]|&/xTIUU)26:|紴#ۼͥUڪ<谐@~ݸ }5js|_`֯./e7sXs^c&sx_`溲9UuU}حZj43pT {g3FU߆8HU Ǵ#?7Ь܉V`쯁 0"j"6TFT+^F>Ϊڮu2[jn:r^_qB|nIwt,+TGŮ^!^)iea<_rwA#V>|?I*|UdL֙ŴV¸2P^ ^^\yļ^?njc-N(U)k~sw=u&FVὊ#_ѾC0qG )<V%-&a"'Hok}@l%一f@g.k cV1SXV핍N|(jRݍ-^[%P|(Ⱦ 1IM 5sK(H1Ie #ohh[5QLaoT3\&i;wc/6^D{t)V=#鍷 aO/hkyQ&b|i+'Z5 orк Cx ^Ϩo^J,,˲,dɶcV{~^HeY?}{ H+X[ӏ V4&tA/%p_mW`5Ґp/p=h9 qhI)"3#]oig0}6CU9" ,>0mGd?iȳ?@vfyJMw wq:bޒI̊wX{ϥy>{Inh8T尌gjڍғgיjiWQ34UbzT[oB[/EZ!B^m&R o D0) VEo3Êҵ]ϫ>򡌫s?{؛m z%V7o$x va&V(94. |s^ #o'gOl;273^m ǕU3;\o uF]?A崠M`Uq[Pn3 @ЭdS_[ ^|x*?Y>~ޞ  9^  ~۬h@fXC~Yë4ͻY/7p%@ a@uZS5(B q#34۳B?;ϺN.hTC7U6g-e Ipw]]`ĩeΞ/rP Ō_ξCJ(]p716|^X7\ˣZPCm蜜1>LSV}w ѼԌW`'zq# H $ :4;d96&)7s>Hmftg87> **Zkr4o XVD,r;OggS*LIv r|<>BMMR~twdjth> ӡ8`d>` žҭ72>9O4ݡi{MjN۬IJM*h# Jwٹ7I6דw?Շz{m5 2m 06`!Yrɘ'\t+Žhne's-?o_N^߷לT_s84 ׍_s0 w׬M֞bF<a%2.kՈ{BP0<Ó63U̵݂nzmE39[J,K$ 2%Ǐc' B "0 .W@=|~-P-,M(3صG<-ez63f?4w<MaPcI mL7ōJ < d^G~^Nx;ɑJۿIv2)|sz@\k\? LG?qך{~wI~t 9߳OmZ.'DB"7lg3 6jI+c۹5_G>,zXˁ ~$˟v,B&n|̑d : kܷc{QЙYxI>}ZA9U>ԻVW0 z9R}H_zLxk+i̟9ާ}tTѴz~`4ίpPGH*ɟwe =IOT_6EzIrŕ@Z7{]=J0F-|lyk>!~!pu,N?'Yq@nڸU[Y>Aȋm.;3fb|zy~q}|4=OgYE( @Ok53rzY{1cړ^+i2߽ZQ h)bgw]ЎuCwBocjƻY׃y+r~]8c)\ 'LrݩRZfs9_Yp *c}ee L_7"ozpQ]w̝֓ɵu3# {͎<YMj\I1#~^ٲe, hb~8gOzWc^䶝x&KNk.Iπf3ˇV!~x_Y)ނF5oHa\(!V]xmࡴAp'}3\Ӊ^ j}wtdWj#02g d?{& ^ؒC!!΁%ܜ.Hv0vjT&gs-Db|+d@6$[Ʌ7rҋ?g s$WG;|]$FNnsđSXDB4z{p.iwq+5²@o0sakW`GY@[O0z{@t'(/#XEe P}^ɕ1-@@fWhc15p?K'<.5~sü*RmDHp~=']'/O_ך߫ͫ d @Y&5vn(Z/pB.:ۢR-+#"JTVzc_s=d{Ul@OS UX3, ,~.S0GcJ?$O^bUL_{ Uh l`?)p6 V|м 1Amß<15*ƅ_M(>KFt߈z< @Ty H$!xCBބ%w0~ĶYbZ'tr _5TcIW~<%~`ワ7p(Cf?9}H-B`H :b43(fsl.:14mC׹ZN;X{,t/M8~UN93PkV)}O/ҿsesۘ{ûP}ͱ,!&멃19O^Bu򻩆nkYy<HQ+xO5L@? ^a!dY~m"2&o+%~|" APO}fgJ+$!/Џd\l>ɕuڽI֊']?[Cg`?}|s`?a['`j`};M/QDƛt 6@!4϶oeV_M@ӛi;OxH',Ÿ̞]aA>7fX'ep s<}"\TFkx; X;8 l]SMꋉN癯Y|c.@X 65ZNM JvW>ܨk` @ 4@Ez=Q'`Fx` }zMYqf@fꖑ}G2I:*nFi.` 8s y`3uF<^.<] ^ ǼBUBX=*3~SqԂήZjyo?r2wo{u~Uf3?@p_1,zZe0*8nJkb(5o/Ol*kg. k+ Qcswc2."~h`YX(@6K @X |0 2@X GhX ʳ|#( ~1ѓ_vx0__5n*۾h}Q<Fs D?;){>ə3~xlEM盅'ycڷtmkdx97+TEط˱[X[{^N+BP :?3~gWU>{&pKй⠓moM.&wp\_[@ˇ~0.Q|ċ]@jշ@OP= 4Uh6)(0:NU}%;g74 20}s $cȮJN[ w |BA]+PHo|xb޿̛9sUD% hn&2&?} &@x @4iJ>;ރ=qgM!ٔCb{\cN*u+lBMKb_Oj*gTLLN>M0œ)~mOYywWSoѲ3uAfi:F՝orל:8T iU>|9֟W?L@3Ču5{ݖ|N f]ٿ:^}5ʆU*S^w~;:<3Z8N r)c{_=h*Say}~`<ïMr&QiXX=1_7ʟ.cnE. 2^oT N+qD[,UFQOQ Wuruϣj! 8w*$}!,}O/~Gbn,_kV*<w 1/ _9X^ɬG@o׸oĊX̷[F+7oAlɩVr^8Ur~!S{ o; ^PjtK}9XDp" ܜjxS|'g2'Bh<@Vs9ʚz9ߵ_J/U. 4_]k/zc1)ʉ[aҮЏ_VfO[h?ԳcYlmo' <:'p hs?ƃv/fc5ÿb z14w>,x_g4ĥ߯9Y\)o/gw>M%8jMjU5hm!'*;[ٽ zYE(Z2 (WDEQ00ˬ޻|UU=,JN ^ۑٻ_@>44wij~W4Zd@`s10;E瞆O dL׳~ȨtR\h=Û; }Xmz 3}y~rtv&dKs|Z8 @^At܁ɦ f+uOz|rfv<{~./ ߯꾹_Y' z?`? ̕9\E,E~PC0[pxCj~ ߘR/d$ ͮ'2Jy@<6+ GB;0ɐL#9>)~ˍ,d!rLW蹤*˂i; |iXP||\MTZkja[Qur06_l/x\?`/P1R-m"0, 0rԭ|tfÖD F- I6 fFzWˀ `Op7߃7g#[a)Qģ! Obv[(v0&d~07?3ߍ,oRo@{]j D BO31Zq DT)Y?  UyD-4ͼBg nJy50sH7,z7N0p`+PЯUTP`Os' d)O;c16Y6Wٻ<&nǀNp%_4_J,h}Ktv +@Xh|E[B,|Ա3ϋ<yh[)1Ndop b<5aFC ٕn]?%g߷Ǧ&vqn.t2 ~"2.ӓr*i6ͻILC|r&cgtJ/:/G$% @ߜ~ް,E ;,[H  QEU "&5O lɿ(v`N> TX)41/ϲeYiCypYÝr]@^CJ($,fx EgcRdp#빷B|I{@_,x"dnx#mp=Ac1)Tqƌ_(H!Gw0{(xұm70b~) }iLoXP_]h`s\7 V>'!kBְ*G{: 0 |- @WQOggSq*LIP۝Poicm@<@;=QQMLv))`Ȇ "vi?@ܜS75l /toTT(`_ {p&wy7N,-@k;@,>Jզ r֓;N)BgT#:G{A'lqpŸt"Mg Ul df8}C!O_/M=8}5 5HT-#@y?J#@SsYC X4 ûğo,dBF(60*@`bW@^mS.s V%i  ?}h?`t8>;H^k"W1Ƚ؝ L|szS y˘O@Bf9Kmަ|l{H؎kCK,_v atg݇Ƨq.N6ICitL@!JT"*Oۗc+cqBY yf؟c _>-' ) $y~Ϭvc\N\;>b(p~<8l*/;=~ pU5x7j7QD(RwqW-f`/=H\ !U)gFONODPh[*ndZ {f*Yʇ|0)Mh: wpYW K9ۖY]W6^"ϓ[frG<Е~j=>NDLy81`rh2 O 䕈 |UaTA oB$ Xc'B_P`@8& `ry>e,ne.0[ԅ ~{boZᏳ,g \,Rovӱ-U$B{e%mݫB߹NRеҞ6o]ZsQPt2Y;IPpuo !ۧs (n.nھu#;\q`wF}}=d6\t(s`\=p @Lv[" Bחۻ 5?<BUE+ThA?kPc#@Axq H;2: ~Zx_0VA,~z+bPW0o~7po{ehm j=8Ѝ&b_v9y aMU˭{֖I)mlA UnCJ(])w]3ˮ2LJK͙cy[ ̾_;^N4~'% {_wwO c|$ѭ>Suby&3` MV o33 )4PAL?73/:\G\O ǘO76!}W/Ӂz#kAA&| >^Y~%;ķ_fèH}?ʹ-$gmeS'7^cs5{l~xF&蟅o, U)x6-~M:)8w7~ ]8/ Nx"{  ~Y7w.a$S[?٫S'F+Nm$/Мb-c y7<~caKzS jfVUe_ںfeq%2iY  r&dŮݰZO@t*73Z7<㤧n2B{ɟ>{DCB2p$vY~<4?mK{rT@f\!֧U{'Y>+۽z~pNǡ$?0@+ k^!"㟿 - Nά;h&(OǔPkREpڗ`~d/^n2?wǭ.o}Q"p⻦. 3M)mI}J0p2rH;"0@]wO:ı?MH'z;߻fPJx e8Y/+ =4m 鯢ىe)11U6eNiWLSCGN ?ck67 on _4)wҀ.:4H.92PEBqԇ2!CsA܏|,޻ @ΛYp|-!v%u{;C&Uw5&=騕'Y155d !@}%U)CpH9pd$]K pw2&n0/1ep^Kl+~OggS*LI ZzkMZibvhTUd~bVHe5!xmH ExN  H!4ʈjhT8?bY\զV׺ & %#BFd> X?_'@'zҸrTN\nsRgݾ*C] z;wx8dqJVYQpl!_qe^`&$P 4EͬG  3)xa`n1dgN?@CAjUjOHNQpЄ!levRBdQ"-,.m8}^p7 _# "p,Mڅ.cMiU&OvUͯTxU2 ej 5$9T_ 2oX{Z twR!3IOGTp;df9l Ϝa `>`22c$7?p~+sErڂC~RUB90>>s{@6=ǟ pֱ" `d>ZJU5gD` |̛\8I18<8h~4\xy9Pďg?kE=_?-8H_vA! eiZrs酏s ` “ a8]{rXܵ2~f | Z  {;/+@9Gڣ3߸_yf]ᠡsbV4WlC [~; e'tMfsP `')p} Q|9s?>pkbE]XT;WEGh8p,O/6^3.0w.>HMn^yzbXBy^D^nt_Yw=@DDr /9%wt]>?ܟ.NJ;ĻF`ЛǍYGwnMv1uwn8s]y;)t>9Rg"Q]P5䕟@LOr:n7&ZUU$ESɟ-PؐEƩ|%:ex X:PcaJ3oԔWmm0FLT@4w]}O+|KC rδucZq<5jQtW`v+.Rҗrd#rr?ןv S$ù$?:QP{?6vFQ`Xiһ?ed'{i]H} Igv=3I@eYaNs)֯2ՌS%  f{2@0;_.u:w _~/YȓuہyگȢ&=ocJ`>Ʌ3 2^ 9^6& `\KA\? swK`l4E,|-[2ug]gzr4[/wۮ3gL-9C^ jbƫm&@bz*cˬuZm{]䞇vZ2gL2x9>~m h`[ᣎ\-5q(f7R0. @KVos|_qm )@bKT )( dH%I, d„I5̔ 8#P@Uv=K'az_7|40ˆ#g7+@ xr̡G( }|^d1ͽ ٶLވ5W%n\GΕ-2AC> !SEЙi<; b?dA7>͒g=ZY@D5YyyG <}@ѹ_=`Vۙ1@r |dl`4aho  *&0 PSB,`e]8H:.>_RF=a" }(T!ޗHqCZNƙ@qdtgsYnPBȻz]X<5.G Bs3r@&3d.ynU=DC¡_y9ū"Ƕm`X]W9(- 3+iy y`>?~1/ X?5UT[46?U0̧D- @a>P䕂=8W"q͗!7OSb>u%uv\T0 ڐXh> и<%ҧ@_#3"1~?ݜ0 LnV<^ܼףtPږ߫_/2.fp /Qrw#p#y~͟0i}هh #!BfvC`@8,>}A0@P~uiD_7 ~2Lڝ{\?95|uQYȽYnKC ﭠSI)X@`}vW6wkfy p3(5cP dX 5)Cb&sk;)>K䢏Ϛ3ȿ 77/7~68fE7dFy(HXwBχ0bTNa}^~&J\;Ulz t#!?0H`~o%.2J D~ׅfS~{t`H>|`XUm!jq KN IQ=kw`˕@>t nJE,2j.etE@MS[2hOY* "寻Po8{TH\K :}oWAO( x@8dg|OggS*LIC΄v}7FJL}^RKDZbqaWV`DhM ʕ[ר6*z ~| /EOGr׽ ɂłΔ3k1lrfr9j#;RLBWjNli(wZ1 o𙶻!_!;I_qd 998^}u|2.J0C;} P ?H(%yѡyS.gh0VB hj S ̝@keoi:t"{;m*bT GU}*Z@W͑ȵa >R/ܟ>۳;O6lJMu;vg~lgg7Z#ƿC9Wrr>$;9Ϛ[3˩:nnw@GVaTq'ja N߂Ѧ#zcn~_}g{ jy,`#fMq-0|):(<PWO~9~Cx@^*D"% ` y#?x]&oFdAB 2nsY1<0~8 'JO[ʛEpWȨi RH!EFR-BEP*`YsA=‡ ~N|x! d x&w>(@cm&dK>X~Vv5L'VZoUΟ9GBvHq>5X8} P@P4w9@x~v1 @"\?BhU f[yo8&4 '50ęO.oxBr3 ,X,Edطb~C#_9@7 G=RHC7@2p@JcB*24 ƒsgEnјY\jOIUWbt{ (o@>wy)HhVۑ=tDݑ] >IHjN@5@1 3@3M )?Cɛ% R^So$ `;@joE` jd'8@-G4zEn ̝)^M? fȇEYi7f4_z.p!o4?!g0U ( M$GjG>N@ o w{(_ KEO(}-1Cl@8#g)@|V֨]^rk ?b @+㱠\3 va)'pVt<BIeN)>k H)h5 cN dБ2R"jh S]^Y4}UYӗ]{26I7=~4dea㩍DCG ]<%>Cۼ׬)Jܹ {Zh8J@aZr9ws nEx4Nd,9_V&^_q އ?#-kQ9MwK8DMpMWOS'5yzl/y< ^lOK8^wɂ'-,So? ><4hu=p@9C) OhԠ0ٰO~nz1u P_#whM^X~ae`Y 1wp~:@L13yz_'d@EET WKd(2o/x* .(x5ܵ)"'L>$wК~ؘ6 \/ kv_y>([ z#Z'"9 P~ }`ĥ4 *lӄp.~v:}*Bx@|unƸpa-5E"\E"Cu4O3~UT獇WL~8[ 0+rh({3~<~)-:ʛ%xOB/ U9_.!c8%-+rvi_Q3M3@ *@SS=>R2|P|ߓ`8yM3 FNJ 7`眂љ1B> +Y?K`yD\qOggS*LIA]@BBBPVbGEchy)40MQ6 "o䃥[O8({  hk\'6Cm..&!/.+=N/B/H*O:%DL#~ەTO/\3Ug>~ _|Q?*o ~%;󃽏YP 7/Nˤ]wPU,߱) A  I|y4|Fx_߸;? <)0h]  ݯ`?5 .)U*`WoryZdo Iܴ ؿ@@L3 `ʢPM !^02?CFh_eY 4Z?)~{Oa_ʶZlozL1YuȾ+~qs!uB@Arxt90t׿2 EPc4Ⱦ;^~O돻0@q:hM'OW?w}a{qP"1H/s{NUpa/M~q2o^h;?b߯e_ah}Us#}7{4U!ȓ@&(0C@U?a ۏ* W@Bɞ06O1 a: bMӌs0DZ@#*}ox\QFh-SD0էztx}4WYOMO>} 7ku{2 ~lw^Os|1|tEz5Gtrd1t\*@>;I2&K^]k ίYҧۇ 3,f_^cVs%n nM?/}e1 ghF bl mk*;{R@PhhW j%@SQQ$D@8ZUOϘ' F Z/4^hO#A*X&}8 ҵo.]=9^94 H&boDfTÉ^ϒfHaDiN&d Zv_E:HT5WqԏMOy E=ZWu No~.8TV!QS Vn@6]w1d2p0<䴟.r。eSaEzz}L@~rB@_F TjPpefR^M}dBӝcAN² ! Kru޻vpwƬ+u|wgwQG<}|YX<[ rXR%hyg|gy:;6kA]SzNgB:z7D<rAXr3s[@`q9*ﳽ4Wݻ}}]QE*U:XeuNriܯ=W_w}LG[H?/WEuPWA;k{|yBo_z'QTjQ ҥ.-g4bicJܦ7_S..`sK 4,]A Je<rܭU0b.ˏw{Y(v'E9Y Eozh@E%iK|o '2=Y9oSCN䐊݌~zCGf8r'5 'Z\|`7etoPTD?*5nXZ.WL(ψ~x]1^Фl #ƖAn#C,y)i?Xx<lyCfV$Ua&"?>__OB23{ ܱ^/@.aglӄuo\*?F{eRWZ;'kd8fO<|F2l [}14g@M%H@s4l 9cA|j3k= 9uX`Y/_ԅː3ݛms< D j:Oh@^9w  mZ ЋQ$ К@ Lo~-#Gjn|zˍ,y槹jtpղ5 ǚ7xX\(HrL|},z?Ԙ,V8Y2|ſ׍*%k"),?'^nС3O-?"a0<- ~_bzv@_~fI1\eq>ո Y|8{9Gg. 5PlrĠ$ʽ3Q`!?n? 4" c Y} xJO!~+'SX*?]ѡ쉅y_?^5 x,{r (.b@4J8;ROUV|{ȽeP墙SdM3n;O D:api{! zO6Ѽ 7m:fzt{y`Cr @EDWQAV^I}{}4ͧu *㰗0_gTϼ(4Z=~@|د1Or5w|}9Y d; Yw d - ?;u6CB\G*@_BxQ=mh$+^]c~#0ZXt|h?[|;yqǛqBGϼncA_W7+%6C}B-CԊL&amcgm +}s=N4I/3jP (afm R7k Jy||y>%hPio/>**,}G@]"J3%W2YRG &u @s ?x gI-}3 OggS&+LIhL_fot{y~]=MКx˜={}!v 嵛yrPA/vͫk񡙃O~{s/DR)$!9Z8گ׏+"CZge߂/BxǕJ8!~ob"\Nl:+?rq8C}~W$W<'g ݺr~ ((LO9UWc_~\I(b|f;Y[Fvc=I*P7 gD *0>W:ŮZ+{ &7@WO:-0_ Z\pUUZD)A$D$lI9ܙѣ;h~f:>qBdh^hH>r[c{ʌ{q҈lW)o§r"33qF ~$.nɄ̄ˮ 學%n ru}={ SuT=$̫vߟ.[ A2%ԧF?=$s [Hz@&Y @>2삇`Z@>Zkz$(S-%07SW?=^pC6ZF#RXcњڪ BxkLY=zts>G9j κ49MOДYt7;\'' |?~4?^.3IS)B W+@cd=!]Nf}省Τ3u35ݘ9gRLv܇m<z/wLvPhMCE/ݞE$Fx+]_'`!$ L͒R-ǻ9^I-G]׉Kc5ýk=B4S_Iͬ*bmd4-T{{!xP4|nk*_yDQ{0B#" 4y~?~}а5y3ə|h+c肗2il9la+MZ!-4G߮фj7N7k_Zky4(^o/\ZӅ/6qW23>oXn*=zJ ݳx3F܂pNLw\e~ӛKw]6  .@d$ !Et,[x s`Y7!(x 7Y6 H.#J[y7]֚NX=7[okm6p,9} \*?mݪWdBNd+]I\ܝOmeʇ%n딼D4md߹KO?tR^eߟ=Z[U~mi旧 |ρnRxOpߙ)# 6Sgױ` 2mCr<1TA&ߝ @} ت;~!IQ"B仂(" CQQ |હd|0I4*7yP}[pĒ W%~9薈@U!{Kfs?xfa>ƫ^x]M@߾/Ŷ̵1QcV0 .3քI)UI1}b}%`i;@m2/?LMnє __~,J ? ~c]˿/g||SYN8*rAPP ēO { a&|c}[ȿ@E2@ (W|e* H@?},`8Ql)kfduf2BN_K}C|>V-RP9?sTQr - 7*z(M//cT]zOd+>Q`G:l?9^yT $9cPS (-!$ɀWEDD*]5՜t 3Ց'3ZnzxcbWph>}EyD3Vۮ1 Q463_9 IeMa*Z._?6Sʴ,x}7i~<ؘJ{P?}ZqxH窉3Dϋ6IE.W򴮦yz W>U{ t~ʇ<cE甦tw_sza_ 0ק׷zlZL?9 m薆2.[.e-gV~?@93^,^ّbf^xg^ӿ>.mnhMiZv1b/˽8'WUZb5s<{uK]Z0l/C<:{ su[u_\+KS8> Q>:_?=֙.'PEݣJM4^<ԇU)xO&lB&q:~|y„3&9K C˚AdTg.ΠkO ו$Լή}D }@8bhJkT>i`7 | ˀ7b'-p0RAm;>)m( ٌ`X4r#1fۯA|hFU0Kq/ 2,/@ l@hѷO8(p"; ͫ, A|7e=4T'EiB ,B?i/;s|0~j*W$i肯 %8tgwgNs`g\mf1#-`8ww:](1^%pշC:HD+4<*H^/W7g|:S\oJi8ǽmw.b>wﻯ+Z3'5g1/A8:L Ћ k?C^L~sNaL }ֶU~ p>/ o_^UiЬ¾ lj; S>lYH*Pl(N6-@LF@3SQ">l+Á3} iaޟ|h7G{][zCiC嚩XF sSn̥M^Պ^O2OH.zL }Tk\?3~~pohWa/ 6 GV\ xPw޾/?ο|uϿ[_YoB]PK2F'@dXH6tӃ5Da|h;.ݾ.ǯ7n ?u?ֽDk|ʮΨ!~P t&I9,^&_k}47%/o O5~m5?J/EaqqgD2o ~n.OAcW>z| VA_%Œ($)Ld9bfziIHiUl2xkӔڤoˮ$r:їJ.gni@H"VکIBQQ O\kyk-ftf-cZmiKZ YªUצK_ -6YOl:ټw-=ޗ{My:u/eq~+P"zmJv=j窕a0jÌm1ιi3zPw-#4DcHdIȋs G}˟aߩDecBYoDU'l9^AXdͪnYe%fIv7M.SZ?Dz\*v\Ǔ9Ao H"q~Ǒx t}.M$#V@9>x4l k<:;ո2ay*ޯwa~ }|u2>^)ePp77UoHxU%l!;+0d8sWV"_4 LQ4Nf-ky\6@/ɷ$$ 0o11e#)'A7Hۨ CF0N`X@@i^̼fP7?*`[d ޙu5sXZ0rs!B9k[Lтb@>m]OР\s,_@0=4h~5pqf8iH!uK,hS"xh2ouO?xm=Or8+ 8`jZ @$@{ ]2,P6Y\(S80k""yc}=7UM=OLؘ^"^ܸ2LJ@Hm HȤ>yiC6g$D > ) +cvT?j!w勧.|-?+AT ׯTbAU_!" ^>#=oKi:]suʣYYN,1?bjub!g_'Hy?_1 `o>46"' $ϵ@'C2}5W٦{\x.K`ZEojR9}y>;j m6(q&FIv_cط/8a 41^[8d20WZkm:(mxt K)!NwL[_ޣކ t"\Ipxqv F;@P6D~{9-%?g * ʛ%?P|J S"-y>5᫜CRj0@2~ɽw pkFr$`}(6wq5P%xƻM(&{=GZ]!ޠFtԾ㩟o1G̪v{7l퟿^%plYfъel,W^_i?{ @cl pl0HX] <| ~ei(U~y`jkp+tJ?2Gsq˯YmMQ  G t.h]3_vbU9`cxs<'Tp x.{7xp낥3g'W[YD ?Dt[C/R6Bh?n>F&"rGoq`.'>s 7ڍ CH:'@ P ~FTU+#7@@TEѣ* J~`>]n$ hS~ug l̅KnT>ӌ[[3 J痩8_?0`nw|\wq|8ٵ Чt +p9 ni65u|mG2,!|vytx4ZpKora[?|(] Ж‰kb `4t/2Kxn&zg.TPk_,} mXK~"n_0 2| v7}|4^S(8OggS}+LIq!ql]SacPseiq8<;P^Mw13%_!*ZS8 %6?}[/͗O>ssNb>?k?FGJ 8퇷%hUpMp)E"D` @X)_gOv-gԷ=&/ƕwC ͗?a+ÿ0ޤ)ᅩ x 2WsSo0B$H3ڳSV=p8ج p_>Ǭk$NoTCAvx}O3 { ,l#@`ɜRpE ; 5 7X_Sצ^wp=H Yu2.̫/c wE_ QA3C_+'_G ^p-?U[ Dm6W˗π/r:i?[-$^օ@9{k;' oi,@sYLO f2,W6MgMYi;Ðt4ټ[c&:- 07,,k%lʖp/i5s@Ug(;]S51m6ar 9(O/0Kv` B ~dfFXGE `o p2(l>5G} 젲kf5xp8$.?oe_bHi X:s c.G pn@PpJ󸩭s-d׾[(#\ܼE{BpnίL @iiFZ撳"2x=Ӛ LߦR&@01D=?C!<떓9D ì5 P{B˺lq 0֡>= @#2e @@ #? @¿U'B@ , p)|>Mw$N)*\~ԅYM0\߷E".и6.C=M88q,`7?' @7 DlӒ:oa\n X1W`M`kV[Ba>ugSi` ܙs,|ùq͂q;\t4d=y1h \ڵa=B 8ˣ [w+F;5 nE>q.Gc.ֈө? |u+pW6!(n̹m[nU,?V6r- ߐCuG> ?z >+E LvSN1b2?Hv_Ggls݈X 4īc8qwn=n8E-Q?P$>){B޺,rWoc{j,W >NM W{ý ܖׅ\zo$Q>4wHI: PצNhLv@ Ѱ\~nB `=3 Ķv?}: @W. hx鯓,|*w8gWAf72䘧 | `Ai TUP<rMi`0N ޘH$rr Nd8t!챨ܽ^bO 0{6a>g0> G8GyDr4/sـv!umMwQݽ^zY܇;'D+r`@ qzO^/0|N{%E>LI;رI- ~iR+Y'(!cEyCEBd,ml#  Gp--7 Ye6y2-Eh8[g?:Q0߿~ y .N 8~sq<r~˜@wn% J߭swTr.]$/=bnۉVI<\ vΞg<^t| :@]^V0T!`gٰK}+;F>Kui>oNȹϬ$ t78|߶C6w9O~/0,~8)> ؖcdH*ck== _ I+QN6a'^ Z3V,#B;~猏UtK%/ @_8K zZ6Q"[b;&j^}KYftg<]ȿ(pٿ=s@T>zmwBKv4–I-^j󊠢0)}2ʧٺקҪNj_1nfH5@{y3l߻>wX~߾PǣXhQ@@Q?~w A@;340qh "@n 뻌-,P ]:pI7#0C4Ɇah5=h eK e4Ŝ?c뾉WW靼xppo@ywww"7iۖ~ϭ>^e }S$۳9adydrJc PU0qێo0qff_:mG#p"W 2G77u޹/!o6۩"7cz314W7,vhw ֡7p \ e`D\6IU`#+F H߹D@9|Y}ozyT~{<Ns4u(7.|sЏί}ZDf=0![dNINi<8d>;mUnNj]3ԿI/Ӓ^] {Γ-qҺz͏i$YvܘM:Ѯbko\Nb z_`U=);Nx}Qkv'w,po4lsy)*83TCB~{k8\`Mr-H߽$e`_H=s:5@4{@e%;Y'ݫ9ϵ"PnG`,K/ѿoۀ,iݼ-q>BɖBOzÕ>,KFvEGeY gIey vʽC35#`ccv8nr} 韾t Ӈ6/iև:C;8ۧ+7;i(x66d @t39,2ϝ 4Tr>q1?WIOGS1m\h ` |]g_~7q/]X_LUsWUDFA[(| HEEdECЇ1_"؈ X,sypor] ^lCHug8ȿӒo#_3yK܂C717C'MjB /IpdZF*g*Cǀ;i^KYÏɹL B [ 9+'r| b \Z}/]u~tSZȧgdX,IC[ŋ5#7>P=Sg!A׊{Z ";E~. NA}J0xp`2!$M-^j/ (RK-@Tl׻ /6@wH`78?77 @p@͂a5ܳiy]6z{呲, BOu@k#@"bP .&xٷ[fVѺ T*w^ Pk=,;猔{}υ.9""'UEl;tQDǯN.;T423eh1 wo i.eZxڟD|y;Z;&~ퟪ X XbzEN>SU e/{^>F$z4k$oKa ؾ,0f!bߺaK0$07TJ8glъB~tUd (x OшzK77:{[)*(@OpW~a_Ʋ-X-斠%2  t-O-s 525/9QKg>lD`7u_x% 3&x iqj 0Բ!{*tLOO(_r,[b5|LՇ,1eY~I/t1so$K5vhZq)uwNn̰?HjmDM!?paOo)ۺ8߿0wo8ć'7?NЩo:4Ud"0L&<#2ͥ~bޘ_ހ2i<}~g 3>+|?. sXoBNFVW؎]돧/t>ίbhF$2g9֗@$lQ4p0^;%M¦0gѬYU96&\{:Wo4+.n]p!8pzg/"X'tbxQ&pU <5\oW6g/9̶mͩ.8)֏kC@HbwcnwmO zote{6Ρ L@gQs49{n6y,w^zh6)@CB<(& ֯*ޛ}]5QuĒV4ʧ2g;z4N^ `; W?:RH ~? zK$]ކcp3 ;?Wzw{3.jK$N X/~֎ZlbP>A` q?v-4BKsü4HGEV}.8R 9غkBh)AE0ޛ^084o>}xZkU7)]Q2o}nܣT5gS>T~}Q]JW2HW :,d 򾯞Z*^XƖ02}믙͛ly;ӼY~#HTu#Cl$QK/LU! @Un'Hד$-C]fy K}zn9?[x D:_{zk3W=oIM:w(KQ?1z'6_T{&.@Ń:Ys=n塹9!):93i8\$_7YLխO֐14R0i}g//sEtf. M`mːl;^ٍģ\$3W!Ff$%?}|uO#`a4;b3~i?u2S$v;) :G1{=]FIc7m-e>a>ɀnOߟ mm|cʮœE6c'W ,I}n2 kw-:[: E0]+ OdCTϝܺ*;|4NDf`N ͧ `0zuAb@;@KizK)H,fodOggS+LI?P>FOH6@$>O9;B5y(3ݨފaAhAr wooX{ehĞ8 ^ ԜQAwiV+YStG9wZ`f_GKOh;4% MoOZ>wlKJrW  YєtTG8aCPؾt=@W]]wUɜ7P}`j߆gȚ[':Cւ@H`,fPD- B1 F΀#4Z&L @;K Tz xSeT)q8\7$l//ruT9Aw@r0K 8l߶;Ztv htH}z_i+M>eZ[5`.M*$~e( pܳdIo]fiY\!jx'9ś Ef֡1}"|}>`;BWfy1jP*`RBҗk{DϾE;y(vb7=ss^Gb .O4Uku%dڎڽ)wmzYߟs@nKqGUkpj9po3%/@;}?X|ULO¡ g ngmnk @\Z o|"g40Mr@ث mʑ:6-Yޘܵ+)-j'#?C!34_o9?< b "IfZY_& gv/t> #7_5+@ǫk!۵;@g{qn̼H l]/ݿ؄qKi?ק&*,tN ?p7 wo" x3<i'GXzmgcm_s*ŝD`K-00;qL~`IH٢nhNҲ(0hnw^W b⹹p|1+FTkD0k77 Ҷ3r/w}-fߔx-C@L?ZOW_|qD{oErgl6䆼7;ۓ8:7s5T;o'S6pǢ}wkxE`[ i&wgRdK`:I, 09==* o_Ԟ*hȄ³3@*B渶0Y ~CŻb#18"sv(X6#$&`0N}sؤpL"YFrMf/}{^,D:Z AM񖍒{ُi!z}͜*#Y_, *_x'%~}eJۉRQ&E%0qk9{d?f( Ny"8ov7y@I1+b$$)r;#<vjwq:[?al ?YVbؔ5*(.e=]:Ctpp4e|uv䍞kbbwA?v^6^_&F~WΖUALj_C?="|d޸{^z%Wr{0Ӽ U+E\Z6Z  &vv>4=Śc !^#4OLp '8ጵlURUU =>ӏ;۽E:-_dJ旯_p7ah9^.*鰇?Ylr24~"߭~˽VJu?y;ƻc1DZw&9sH;P~됼+\7pѐ=醻*Gkcz;3fy1')éJCl:O2.j#[.8p*^)ыkzs-ֹs 7S3| Jȫ<<>mNsQ2lx wO~ ͻ_x_3<ƨU SnI1$mooj{&eovrbzq'U~ֹ.Ǭ}Y iTM^I=^qݗA\ySSNMB矯.Ydh}_L3N8zb*G}>>kJU羜mg@)FHqo\|El S @ߺ-_) 43;?O6~3 #8ݎ ̂D3ZU3X 0+o~nc0"U+5Yw4==S0胀z^?1߲_bzL%e&N_,<.=ʋǙۢ\0_t7ud~ ZMZP"Ï4?Iojy9< Dl9 )g/:O%uv/ |u?p.Y !D?2jeQ,hgw GZ5ç#Nngl`|'gg95v?.w~5_;(@b#ZU(cgSS$}P^aN/r 衞z=~XҠ g *^35=R8 ='Lо:@W͏<o5Z͋^|y4Z$@?u檩*`gOtT-fj?֏VX˄6`yo8m1EC zz=ð]+%k8ncjxl#q:T  I| [C!Pך=;Na)ΦrA@.l:k{ݐ@*t7nu^.J L֗ ح2׷?c^Wss27ddw>=ܤ,/ׂJgzh7Q;`7@Jhc϶d*> ͑a}b+V2lz|>v)i]5Lv;2ey#x w ;(FwJl6# G=˳\k?3:{ ff_ >^3ч>͟W =}InѦ wOS1S̟%0M5I6 //Ja nmZl,8l 4q`oUvEY\3 _ \ (>+P0 @BQVYX9=%U")>u#ć.>cu0W~}qGx~]ת"G(?嘜 n'le.7;Ǯc9s|R3St[r]&d{붆OIV2dqyX& 2to4WK§87T70{IOm`f\_@36 'sH|rBl/-WŦw L W ^-+Ɓ31pe$,}D&9~9K'a$:{" ̜,kRy`}FE`IVJHPr?݇˄vJY{~'>Tj65Dﰢ|i:mX[ث:!W-O}_ V¬:|+E~PJ],4_5gWtWa@p&bd6 9.Ns$@ 2}(?@ఁ`@@"+$`@M`,?Z *Ci.3̅\;$ 'U5[)-tZh[s {a]ݬ. $m_9)qxTH<W@+- C&Wy'W3DGuP2.нvdC)?_LJ]x7ەmضSoY-ڠ>Jsk.?sH=euQEMsȁc-(X+ yM>G/*ޕ^R@Oɵt:zʳd Tgu hPOS` 3f,0\Ao(_/#O3pr xEUOl3|?ԡHc: t2$Y)%PUgd~Pz6Ս[w ޮӖϘNA+l; !X @0k0;j'o_  ^J@ #@  a'~ ]33I᭩ Np[x^̀;o6d.g*LQ GQJx;y ݤF=e͛-LJȟowwjs]Cf6ėa-/;>S33\3r&YW7^x* Srk5x&~\QIYW݋_]L.3`^\+x꾟:}b͠@@$4|?$X$P ˜xF? @$2l D½$"?_#f2&\ 7~~ ]љ*cp:;6уx$.pw57[-ޝR4Hu5 1ӧ"a߁fl=yߞ3n= 3NC^M^l: ?gM}TXe)<.PkKoQM-XIKpd4,uL K80@q/q<Nʐ+fg3U(=U駣%/_ߟafZ һ^j9;|ߚB @I;@O%XHV$u $)Bz X @~~Әbu^@  u;[z7T  w?p %⡑#$ ՞\OjV`t!`!/8ovX=e=ߡ?4“b|A?_Uzhhoƅ'[̛:_ ןcce1ck>{"ТIz~O1:@^:@GKVUZW?V?g~C!ӥFUiԌןYvZWugE)?37Xs墜׿buMU\`jV }du>d-4Cw \\WGƨ1rODGև{ @dC`iœU f|  BBoI:L՞\,J;]g,%ڮ~Ҏ-a_,|*uNE^o Ɔº*.u{_4!q~ظ0Du2ofR^\-E~>UZ+*vM٠>p^wOJ?Ϙ~&n.׎kc:1)631R]DFq3.C>y4;7?ƷOn֑MxS2T|>@DF~]>3)&ε F?;ؓ4ǚnӶHlFqgg K j*ޅFAco~l~RXMw`B5BZ4 QwcYk-_)~js8l.d+翝ߍGvގ<2eSFYթPofo7a^nضqQkWbO~1ay7mϥEtQMOggS.,LI]5RZ孖y$gUEhjvt~Y`U9K $^q4~<pUbA E!1qMRذ*Y}xx#>5MəWA}өϗa7ލKf5J\|'>jHȻŜy撰~ZIDdӹK.]d[zov{ OoK9uJSkaJ:++]RUzO=~{<_rKʿ>QNC{ߙSc˒dH p}Oz_wHN 1p`%KqN'5x3*w-_' y0 `xz#lK:Oh:wXr` _ݗe> ,kz ;Y<[槗%Y S1A^u˺ χ/2^Y7eДlu}F쳵=W/W|  :\ ؍Fn`CCP@k.$Xqȗ,^sƟa73@~{[!z{O i~S S4DM8)REQ#?~ꝇוeNw8dDj 7E<1*OsY+x+~}nh:tKfkNP e=.yƱMV +r/ kr o 0==NzF ǻ|Ȳolӻ9P ~-$V#-\mMRir?Q(Kp_ /|_tW`#@؉"J-@/!ؿu҆vg |Z!e n_]?r§m/[{'"D//?@^ԏw̢M*CuvܤkiD7롖h<36姽umoGsi҂ŲYW5lhy|&Uz?~\ a0Y;sC瓯N=3lۯuJGlw-_R5%QLJ P r_pYG MO~bx٭̥^yQ$RmPj[n |P [s_8E Ox_@$~N 4' 'o8)cV~u< yY o*x< IHϣ2˦ fC/ϟԴغ<Ɔ[7zqvlmYM$i>M߇m!20 ,VnjpHvptA@M/AKJ"<{%F,͒WaE@A13Tx0TT @T۴|V ` d/>d^ٝQiN_/3*x3s,t5X{bFǗC\ !/p,hOgHW$$ j%Slw `>W,{]}}|_wZ /(_tƴMͼ9GT x2OsGoUM-&3lyii&_0wi0.ɟhu\mP7Ԓy/{g'Ʊj=`EI Y-*Z$C7 ̓"{T0ݽ $Ip#c ~ɝ3 fj;*q#W>CySMhWH_g s-8wG>Bh2DՆi_,Iw:=j oLișt1j6o/~傆$P!D[ 4TTtc* :gb??/7o}@կ3j<_{YGhS (:E.M kUUA?p&.G@oN>myP ۻ$CKviFƚT Wjq㳿] 8ݯ^V|Cpw|ӊ#E /x9{@:<9h?.t >3 9g}|;m8_5TJhĊϸKv[YgD'ם3og!#+l'q+/Zkk+9mN8ۨvpx_+fb+\:zR'OӷϵI]3@Ѝz堁 /V3Qo3ՉP<@x3AzUډ4WzJA 1igh/L/=Se>kaF zklI^j{.Y IHRݩe ):e煬u?>jU`XxPMA2thHbM;b8_ߐ~<9!/o s.[;͓Ak2/5uy?\<=`z' `Bs;#[+Qf]hYi+ ol?dx ~Yȯno# @TT}\!e,PQ `- OggS^,LI{]c_~n\Z:sb䘖&-k 8ЩMhLIAC2V8M }ֵePv Av͡НIvTOj{-G'l/նW%ȞP9/B۵i_QfJŕۯ}G3QΜٳ?)  5k6K:S ܣ7pt{_{dAk26'3iwWNT>םs#,@3)}eȫ35M{ʾ =h,J.789yE ]e*XFܖsI0z-a_Ʀl,Z}UN JkIux 1ayj$,sܡ+.b@X@_~|F]HTWۋ:Ul0_~KEJ[|aq~vЮRge?W%LF}.ˮehr9GFW޷KI 7h9fw*UyvErP|Zi'/7+sNDeD4)8__8ϱ>٩T]qXuv]qY/ =_SQQAPǀa3fFm>C+"0 pEI-&s2HĦuԦ8 7h xMi.>3x6N Q~V5Eޅhk̤&ȿNn!p!7$eRJh==bn~\VI2{0}vDmd<ߪgyZȨaԫ?-%3 '.w3W.u y9L MêSYY`^OXnˇX{ǹ^.xW5'k @Zލ \^^<^'8opMxi<@+ k7`7`|86{*s䴑gV$$M,MCO 6xE8~F:<(/ Z*PAN;N8f%iԸMrIO?ެ[&!JB\2[{xIsۻY߸ֻy C/.SCA[']j.:_|pNݸe! X 7u_76 dJL_4Y_Qq  >#y{ߋ Gu8T^oNw /Udw`D`"?o{  d/' 0 PP(T.rym@| SIu55xʞ5t f>ʷ;U̗X}0_nf8MX|/<Xk|uW"TB[P̫ܿ>fB~N09ۏ.kNN d~w7<v% aҹ{λR\&<X M'##(W;ی@#Rzh2۩xo  4v233p^I @Pl|19@zFUAQ`-R@޸R _/ lho5lIzk8M%+7}" Μ..Mwwjt7jeh_ :@~`D@@K-j{k<0P H&r7a] đȻ(֚e h&(-c2o *Pڄ}-tcjڤL{3ܷ4_ݩVB[pR`dg2W ~/vv栋{n&|2q @B-Sx&ۼ3{_l :$.jWI 0@ٿ3_~_nE;׵_ z@[ 9H p-uoaP,N6@T>)mhMOEcLϬ`QivSZUmo oB!: Mܚifp<SOiiYC%p-]lpA zz ƟN+4Um'[]9}m{DN̉\^?|q m[ލ/O.#XT0"\)-x߭u4ģwصɋ]K_\v.6W]i=gvfmxE>_?P}`fvP.*OiUoOGTsjfZgnZ_,ӧw!x~3>ofQ⾞_ɪ@gpIq]A͢'ی`Çg;xº,K#\<)@l~tor\ z(%42"[Uv -x Lzy$mވŊ`$Uo,\.G@,veйo#8}3:ЍĢH@ -GD >#fG_kJ+#MUc { ^/-S[f-ZӃ$CetE72d>`sff箺Fnܰ쓖|Q/)]Π\Y>>WAJRo쏾Cr<ǂb6i' +ze@|C'߼TEUEAW$w#0?@**%ius)zzE˼:E01&kO4!G x_x9w^o_6l"]HjP L{k^2PLj-64ê#f\} ɄﴰEH܆XmTavN劣ͧkt>79% QBOm.ݭ~PUӞΙ8@ԹGfx]egp/~ SXjgA 6 z`؏(OggS,LIEHNcJiZIOU[S9>RXM 0ZoUњٷnQ<#t2>7sQ.5hI_q4/vrUhjetN@Hۖծt|O3ЀtzB:^7Ч'<蔫^ oKGlX GW5  5Ox_~2-ϒZ8Q@\6Pr9u}V J`!&`Kipv[~huit[J_kȬ(?Qx* m7/|i}VĎH0FLaKHn(@w͍Q7kLPxBnwo ̓Z@@v!xSr?|h9㴌kd(kt-'OH7UYhtLͧCO8}ϣpʛh@ֿf-< $V{5,߼`\("Ձp=,\RDXCw1# )xME#,TinBM!p ,.p\鍿9XW$U@ L AUN8O,N VD ԃ뎽cY r/_rm]hۢ D>cece\S>&-x SʇK0w;..q:i%Gu*!=Fb%?ӥ %xUFfFqgo00{pY 3@Sfͦ9K<1-YU U}>@%VC6` @zͪ>oiZ>\,3JIu`I b#QNS~o9!Ps*H^|ݴy.u+dfǟ.Z^V;@93Rϼ\MQt>ͩ٢<ܯGuQ$뿿aFwVmj;*sF’m pNn_]> 5dR!27- !\ ݯ Fwmcm8I)hY6_"ݹNx?g|mMsF2Ŧ-=1a_jzdO|0P$/q懳f6|~"||]Z1湌 .aU& ?pcr> s|S,oPD})=Le% wNHY2DEqs̚1~ 霞Y>i" `N^ ħYY[8rdٗxy6@ d%˲e2会k !d lW@}ߖrMw7(A1l:-J/Blt4*jKˊ`FE>,vK+P||] 6g揎jgtܰgPSRvdM a}({yT:YbNO*sFW͚<Z4gWu_S9wM2lYQɣgWg ^dW~ {緃Jҹlgvn!ah'P7Ik9nE$Ք-I=S@a/>75 ^ gi"JF2MțeMl#Юt9I(>h̹F8 s)EL@dM+@9}l N,ߗJɹ",NoҐǂ(&es:yO:#snv+_>a7]c$,JSGO5ƺij* PcM~?yͨĜdqOSygTty\ܾxf1p4Ǡ@S7rrzcTymLY^) t΃i7 @z90{lo3>8no9C2b5s/G ~7nC'pw [@yVX}L xZ޲ vBYnB@o^'UV{C@yj o0T deCy0Y2]ǪgWp_x#ʤlhp. A<S4T֍h`+Y /n";U Q/ɹEHn ia|po3ZSY )h{Is?;ELUESr+P+=?0n(zb喈q+,ul1$:wHj]?X8ϣDg w`- @k4^cx   ^5:#ˍ'b޾ҲgMw jbpdK`CwF "0hi{\DCa)(Ө\zx׬|pm^ٓNڞ@aiٗS\(&WDJA?x|$80>oO)yh?G,/<,xE",kV:Q lQ(Th:lUCK. pt>Gppm2Hl$xOe(448,s~`'a$-U*w2v^ËT5W:=@r֡w."yK`>v`Wu%0N8J>8OEu 0䁮Ac5ZgCTnJ\_m@oF|ɲ0>[Z  ,_ @- '4F,4~v&;BxFfabWПþnLQTV +磿,ߋV ~om@ /_ĸq73atW/d7&ί ڌW@@᫳%Ug?ee0J> 5ܗd \DR続3g5s:]A@nl0Tj`M9UD3+e$Ǯ:l2>I%D _)Z^m+2F1ͺ dOggS,LI0`9<{ZDg:?>LTjqoؕ64@Vk}uo(g9֜7zW H;]4$[c^}8|' hvρR:Z )ޫ z].蕾D|U62dxA^1K `U)Fa0o݂c }cagmiQ~*|vuNLNvh/OD$pů: {YJDק_ ʽaTv?=sW'o(8~:͍ C=t$>|Kj(蛷m\Ppn1jifS5tw~sj `#ڼľ邯@`D/WA|C` >R )UEmwPh| _W"FhWq*f(Rd R{.Lb͢L2s& p1ί>e=7п0mT1T2 DlCpߒѱ O@US];?>wgjH`z_hZ1zW5Ӳ+:vٮmBpcd5N_=ee?=KWkHy?Tx҇0ޓ׆f9oP\`Dޔ<b`iF_N V6 ؿzԞ %|J)Xjm:v[hQHô MB.24   Vg0$S]*kC9?컷^H=cbrLZ {XJ1Ή t8^2ɱ1M_O\ɻ7~ ?<QgߣUF%u7 [|:E s/aw|LΏ%?f ʼy4R^a(bۇiA'Z8ř?v! AO*Zfl[RP=4qjU"B 9n0Ia>vQk ~[ѥCX#8X%f&72qgC.W.˸'lgj֣\/4M=I4@:訥߮3sZu{ϻlSWzcvE\8rlQs}9ueGl&9lf`a1}4YglϷPs(Pf8DZx-m<w_Q2eqT:|uWEW&*9 2 BYe,2e@~l@ȲZ#Z]L1Q2܍bwnVw8jr8`]6N@-~4n|o{ y]4$O=% ⎜MUOVb3n/ -Вb߱Sh&m @ +@W8}>?ٶT]/irɕL$6܈"zݮ?g%xrx& j:YVD FÑF|yK,7}Pل࡯_׷= 6OBU2I (o#{Qۆ 'e|Uo1JV1Cv~6! @@/x` 1^i`&i@m|S2sʇeF}c_Wzx'eq5!4|4}^ -W-\Ս8O}Hf. {ח@AWw">6Fʕ+h`N(x AdZ-w?gϻagqvai)v84UL(-h4sΫ?y\ROx1t3ܟ:>ȃoΦE?\АU U;P; ( $6ࡿ(lD?Z~-YLÿ2 7ۖ8]~K6|{`ω^Z)sHNzU^/+60 1,=8 aߛ{s,$4/@wl?>J|^!r?[MK@Ә'WEUpfKg9m+#e +yN3Bmc0z;_"Bwᔺ( *DW}_>?~p"*_*ŋ`}FlmYR.m%o *qjŤt<ab\*34'#@8|HDjHF dIQr˧X?Mk\\CRuR|lJEw}3 =T(h{g>H+_J| VFyR %Wavd*89'|wi(>H.3_!w9^⡢쮜gٽQT_J |\03,;.4̌qs,>  P?rO1_x,X @Ԝg}B!;z5{'"`'˟s*  ,QyUj$ITs91^E<6WQmdv\ |X.\!@ OggS,LIRnOQh`sf>FUUR)ܔ' \"u$,42f`VW^N-#^"poYsG*zVGV0@bNf?=7Zx4M?s;o]|/ c]_y&k;6rv9duqΨ r&4$:j;`"'D:| ׿~a}LZ{VWdTW% ڟLyXm.>~xQDPG)!yۉO?cm_,ƴ%!k`t7Pxbӌxn??ϛ_tNܲwG-8Y! S낗Wm<1̅i=Ħѱ'@sGa Je_cD.P\Bܫ&Icknڬn䩴\]o;q-r7 =mסZ|!rf DA u|ж]h#w8t%j~/6'uKadϡjҳU#oGQDƉk%b@Wȟ@Q LE?^^k䦠X?ӕ?-M  TVH2x P2uvP75: KE+r)51ۛ4_x=~J=JO+kv.Xwe_zk'8-Fӈ>$  y7|EEjŠ%MZiyzqNW\4Nɚ{9=kX\< ?mW&hzxġAP塀Ϡ/-1OC:l RBJK*`5 <>_[pWB a`TJojӷ6n-.o( //ہV~dIlv4t5o+S?&~%G1xmS&dIN&։%Յ;2" @4NKn4ƲgM8lMZdȽQuv!rJ,hnzuw) qܼ.CWo߻]J߮moќ׷E87?j| <+Zmw:LS; [٧Ou u?}ab ml~SPzܟwx| Zr.k -( .UU*n^(PYpHA@ I@4a l}7I~ ms>*ť929L/$]&Sq?ul lz 9rKo'b" ̟eēxjmJ5="RW躬ϯ u|=1*hANda}g'i$*G;8Hj@-/dfy];sUw|th^9+ O_G=\|<{dmW>ço`ݻ_.&`qa<=,9pe$ Q<]k@,M#0`A-o.|fb Hʰ@ ?)]6- TV@!xXW'.g Gqz8BhB_w6G'垮׮KfIӵ#<~ dX_V9gP ~q$虅'ɏˋ \* &aMyO߫΁%Dn*`K0}\7<1Mu0ߋLWrzԷVnl#`&?B$ؠ.l10F !+@ 0wc[ ,bs$(7䘒*!I2lrc#k\Zqq3ua3ۀRPcp$7QR}ѦoKs^FeQs_"X֯aPi9}S,ʝ誾sZTGd<Ǯ:uGĕdΫ{(犢i}ΐPs0R_}6܅~KL'.C933{CQrj0Wf{ E7n| 5BZ@–}[Hz{~l{wxD4~Ĉ/UU=z}$QyjXUoJ͵Nho_$ѫ [$ PO ܇~oR6A v,(DEN"/bv94Fy~<2F]ARkLhD<ӋGy9bBRk[ ?55A|NUň4b9ф./eELO'S0XaL/z[]HI:GdGN齟f8㨒]۞,3'g{`?QaWc<ٷ-e@dɒeVFb潌l*(J3ДIWERrؒ02o 8"`2?[ ki,e%VȧǗTG0VX \,:J(jCHݔρ`ZشZzi/ڢa ],o'p,xjȋ?*צ8=J=ףέ\mggfi÷" ϹaP@1{SKS8gXx~nV]Mg:t'p1ZˋD\kT&L {w]>n4.y뫹I_35|{7wLMd.j #YOowU;[Y{5t+@F⏜}{ Čۖu. I EP@b_FZ4|*q Ʉ(g3/Q my19;瓢~b#{Ct( \6Ji~_VqrVF|}4ﭫgW)O"'J]7Jy%9~sadg>Q$W;drʯ_">~/DA`dJI;nEX簟̵yHe̳0 f~]|un痫j٪'+}"3vaYm(it,ק XF!^/=׳{^/]ۭ m)AkPSM m Fa/gs'?kk/߽xA4M|y|A`oD [MB!Z̍2fͳU~: W5<I~ ħmqoK᲻p^zDjmm[hɞPw\1!~xaMvw_pgK|uZO??y%zy:&Ӂfkɧb}Fܿ'aV=u(]~(/!:&4YUd Y;H-']X*VX@5VEw^؟D1}MEp 4׻m]Hex_e?! 0 dIxy OggS-LIO%{odk}X~-1 3oyrt!WF4M#EZK_N5.hm׮dO1Q&}}/6oZ<ΚZO;x;{%6U.e PQQSd5jwj@WDs'Ĝs;]`gJN r'-t5\074{:gݻx545^f՟QӻjvJNf7e zkg:kg&&ଡ'w{wy&}Fa.PAhucQ ϙ?4ժ* ~ {9zjl,`YK]Iu32%dKÍ*|]4|}\(pw z<hjp/4b.`.vڢ'TumP,5&UQ"Q/6 m PCBg5}zP!3<^t22W{mDmn)5@T~i4fz69+ /SrOyc;mJ<8 )fR LWų߿/꺓g gC@TbN8>,),Eo TLԛ$ ֟o` E>Kd&">ٕg0f VרLbҹ'"x4o?j_`;zhq^_.j9'75DK~`'~O~-? 1'$ȅ1 g_@w g{r=Ybj?}L(@? 0?$2o *0J@0l $xp;i@U> wو S`o ^Wuv2V]3mdz3&O+5~}]wk_ K{l4 px4r% ."-yD4YͺZ~dx| G} @>WaY鵣t%oݢL '$! h~a\Cs'@[H4b#}Iu*?RvFBdҶ/4r>8 ?fKg@ A7E~:O,"ĭEO d6ͨ ]ddjK@5 S腕GDnݶૹͻ|Q ޕz= @@t-6\Vi 7 Q.Ȁ ; ~M+w26} fO5-m2ψ7C_7W7Uz ǯh{ ?4 M}LTd @OyjcC[{r.wO| Lx29H ^h<<-&Ty/$(ϯ"F @f~=NuG+"^?G-leveȲǷ_.0@}疓݁=>jM LpyL ~`qzou*HB34a#= c#`%; d @`RplHO 5+ mr Qf[gIKl33bށϣ/?:C>$͢Bp{:X(ضJ I>}nQ!@-K='۱guyW>9$ !˫\3;fuOp2vdm=%*XLO(\rۿ}A3< j ;ͅ%gU(i[e"dpxgcK]h !~ed{e>i{`J1 0Y{p/YN/$Qx^ Mj~772{14a*@ _Y Rh8^ܳ CzMG/WU3&+@à (כ~i/9_?@-p>o7/h[R7>. @ïuꎌ?;9|P{"4P8@IwOZP ۹*Bw&kZ^i1}.9Zӻ:6 9p] #->+S, $ATP|Q*z G*h@K&cVV읰* NoyFu|xG~80_~xU7xFv5R ~3>;=xKȹ[mˡŁ /#VGP]OكWGɕ۹P~ܝtpWݩ_c{2lhc;]gf{#v& ^@gdBsY(Q#hf m(?ʬi`x TNPPyHV%cn@-;{;@1+U@0a `V+M+0P`hlәlǏ`C_6?n`s@eI_߀̼g T-b1( | | MBw)bi/anu1v@'w * #nF_jzN}Ƿf6/zG)ONj T1+bpp'赣 N0$xeraL&88›_ z_WWAW~57ЯrSn0f<19㕼YQ]GWw[K9PvT7ˇxz)`x "6$XxodA i{(sU?aW4A¾MJ5 ?ITT|?5@ }(H`Y=z0*مy^i52Ƞq-6b1Ɲ '׿9ξV(Vdz?Qe9s]¹ΜFroՌW{ k w Vs|_}=_=$@r6yQ"bj}fe23)8{ ZQd(ힴ.h\P\d^ٽܾuB `#d9]i{YNU$./t!F05t3^ 菼ŮBSw'3)8k| ; 2G>95M[$T&xfPvB͸x#.k@w59MQ%;wzs У{(v9 w9=L_Wӊ6>Ջׯr1,]0C)зC0)YX @P5FLR+ʙ$"_`BCN!LJ<`l%?\@p77P@>Č>LMOw%@ Q 0 Dbk!{yz)F{Yq)gNbKC7,{?6wEj绻$56BSwσ 8]PWs% _iN/s5 \e3G1@ςh]̆`6G2̚eH%Hu+@֋, U @?+0}$ƶXd-#10J5H53Q7뫽A3?/4mc$ 08?~=:zpϦgX# UlU^;I;X3&dszm䪢jPPE&;ùȰnp C ^VfoPftV$>皢&c^Zo$<YY D.I-.5NB*(oۧY{_uн_YŴ44"OeiCsMKq~xlCnN5\K&bxMoK*gB)O^N8mf?g9\ w99'EZ? 6c${T_lveΰ[~u{5HܚtͶGhJk6_ + ȉ)C^95Mu#ڗޔ)|EV7.a3š@eLXdN4eƫ琢 Om_ vP! wcv ^ɕ%]&s5tLWhpV5jqkw0F_Nil5H%*e5&k'LufB `Znm<X.b *1#vAfk9 }^=V}y@T~ktkf.To[w .zgV5ӌ2<|ǟn~U`ynw8/9_trN?wi Lb,,D;D z0T' APWAY\?0 R\ \1fK4^(c9~aŌZ!_쯯}K`>im_EK8]3i9xm,򂪽{Q\:G]KU?~Jw;fl;AuX_)/?;nFPS4@¥,_ڬsmgS>y j20O-@1 +Uz˄li`QdeXF,84B?e 4ͼ} pE}14;H! cwiv||杭g+YoܵۖO(B @ָɴL8p/璢_gp\&=r&a>>L9ޫεOdh2zd#L ͺVUU=DO?&M#ϟ9h%a J{)b8ޱ,T_-м7@@> "}B Nu%^+6~~ -oZټn{RxwCS v~_ S_mw@۟kNxk￝1@"ɶ@.!=zP? P]OU<ӗPC} x ` \oD@{>@~*m><G)L4(| ,OggSv-LIF]]b 8_! PMJUx5"6|* z1 t|MV4P-Ɂǯ?=v?{4P}ŋvBb7.mkĨ!@exO ?2xrpZ"vK8drY~3>,{ '%P;(E!bQ-I`w6)iJ)^WaȐsAɝ{BkK Q=%`+9Ր_DMIF')?'3_P} &IiTkMRPbĹٍy`:=' h`5x.}jG1p̞aHP<|4 G+ѵi~6`ְ郵|La>Mܽi ln'^28 q %h XʅGFDU 3I+BxJG(>/m_'Eff}`|3ĺP %T@`/ 8V=+E"J{]:CrPd'V鹶j~WXof\&I5@QH* B }`[KpW?*#b[.$pkyL"U >p(M#2pܣ0a<#@|?e ?_"XBX~0j$ _rN̚+p{O+zg^nN@ȧ]/;iO!@ﺡ*_,{ ܹ7Ιy%`mp,x,Z՟{n}̏/6|?=9%Cfb8m(Kk *>³`v 쏨ދ)8rm?q l *TXƕ?yRAXpU*#NG1n]=yh |,uY݅5b(º3#ظ5o5:xW F,`Zrkdĕt: (ܫR n;n?޳Q ||1'Jz>N@pSi $Ssl$Ir%:3{?lCdӲ Os ؏;/F`or|ԯwB`m-SIR-q$0`JUPƁ g/͗ ^5Ǥ+e&mufIQ!!#72o% ;=0Gͷ8:C5£08cF"DvJdEo}p`ѝ=P6_ 2xwc^7 s\?R26K)d Vr37K+ źх-vWww9EPg&0T}= ?J8R e@–T7& 6Dho7@0k~ W, } W#>yknјvֈr *Si8u693xux+p_@ϩ476rnEo'kef%P|x~c)SG_KA4݅ ~oz|n@t>ʶ<`'Ŵ@뇄 [<'Wޚ<,~p s -)of^x5@d3q EjW.3O#g0׾oYz"@тH(!-UB=!YxOg`8LrۄD uHv@3nˇ;9Ʃ mϠzf1օo8_39RHv*{Γ:g`%={3;+9-,C!4}O > ښ*c1"n_m5 $7?ogrg%o 8^d Ɇ 9e"p>PK`C1A&$) _iIG؆GIo,?xU ܨb*FpmNZt/Rd^{f̂ED@^_T!H%{:Xp!KJ7:K3sF ]US+Bpdhw5_t:vLS>~XDP`b+6~up"RN_|G.Ov/_n$U``nXg"%4_3 <pP[y@7|BE@^<,%`\ `\2 eEFX oZ@hV_8 0W5m@HM%9}E^T@K /&oBے;  $NVB?Iz{ Ϝ_NC \DX|gfV2k3s}NȎ gbp,Z?,Y| fiF@v|;m:MV^yPHڇ v+;R1?{` qoD@b;BQPU>wl@T?((@NOggS-LI#lycfe~kٻpp8mA\,1hpuG#wW IHEmT }>l`wGÃ!SȘ(|n'hv= ~K5ϹI4vi  _NS:EU3Unclr)QV+֪eǯ[~[`!ԧ\'f0׭H>s>Gb K,ly.Et]@YyoONG>3KWUT800H6.I~J@6Bl0taص "U 7}`O88_b @ӷo~P 8uTڲ8s8F`~iU@HV$r-v/]!^Kt`T^Tz*Bއ._gl^؎f;}yx9?-[^y:qF(ue? 2 GqxnSor*ZT;/,1U"嵎zY H3-oY1}?+9]\`^9*"W?a|(z~޿y(6{ )00 C9:~ `( `3 !,l @@DU!Oa #X{ FwE@(-^Zٶ;ꉎ e)GN>,Zwsngr[IG|1]@`:nIUu5`tjekvJ1_R̿x|:ܿ}ڮ.iN2|x;YpO/uY1y|#W2d~&]f乤55s׼YO$1Wgbs~t O^V`j=>W=ugp 0OjenFpZ/;$+},/31( "Gd}7m ^ FZ=5J1םSU  f,nĽ8g\Ϣ" [~rG"_fNn+qwrWc79ޡgWoP~(OY /@'1_^^!`o6$oN{Ul^D;79Kp> c}'/-9|!\Jd8#ws:@U} Kk\hZK$;Y]ڧ=Cul ܡ/4}6T<*9]гafrV;M]Q~Qfm%, B._7X9ΟOĜ}G`Pzo)ix/u8ZʵrN[5 y=K`(kkX 4A=Olui,'a2oM } ěG2ɲ2~[sLе~];:aNob N*(iMwE]ZSz1'ǹ9~4YQoƽXg~ xTL cS>'6MsH>5ς} U`灂0gp|HN*raP=e,_ `@L $ [൉b@FS/IF=țgL ɮ=Я^:K[-u_4+."adR՝/ ?- [grQ( (^}ǽ啅x `/ZeL(om i/r~eqa?:AΡ_ŇUbάp823z|o5/>]"8]<b{?|1L j 55D`syc;NKWzb `i0n!'Sp@M~U= H(c_(IO ;~&#mI ] }iM[9 I|3fXν @~:[=J}kA >^&^r~mq^G}|FefmV v7j`p{Oe+Њ5:`Zij ~wyO~_q,X. g)s3Av8wwXne1V&6ũW<Y ,<^?};ߕjl齁迁8A;/N$>>2B+^@ =oMg,|_W@\5u #@k TW*6^T Z4ط-^o6xd~k nVzCp̛gokxk78:XptU[F[Ck-/n"tp|מa,ه\9~@-ixvm9 a3O#D+y:65ўT}`u?N55=&WԿN2 o aWUyk%8YxIfns=Uϳ$,N8\rpy ?lo`5mu|},>|!՗"ɫ`BH/( },lO a`ٺ~*KK1Է4c'P 1⋋w9gv_Hkw߈3ϟ{c'ثƿYymۯ/牉ޛ@Gu Gop`GIn *%U.5 ?/zZͼ.x P4χ |w}}\u W5TE/; MU _WlMX-P`# lp4 a`#` /I1 ;>OggS-LIp8S}?:?=>ARSR\ w&JpOkj|P43E|wzYb>;?C &hs]ۼm!A5ϖ~og^K\a#ՁP>6ӢimW&/HȮ ?$iqgXu}\,sey.c"Ą2wg8L43uϗ @sNҜ+r f^Բ` [0?U|(^Yth} Jΰ>0nh5K`g@jF"XsZ$4W =|j0Fk43*Q1_P3C^l ;|IZ[ 4OlI_dHLԉ߼bGPsο}˾|!zx.@T ~L̡c$/&ɗy!䪜6NއSZW; P_^q (S^9h,PQ c|}wΚǟ3Y'.xnt,\P  yT98OY\oTه)HNTA라v &}r[Uџ ($ />o>kű߈P{n"+:.>8j@> ]tk\ iDSֵ҆QBb\o+[V#N_ n7[hQF./蹘 d:RH!R4`@ 9Tm~{W+^ I=>|V8UaL*W @ iCl>;@ɜW؞Lm:Z֕ U1]@:N2"Z (XN_Kiў;|V欬d;3]VyzlP,>*>|ET_/S~ r*]@SP*** Q5l:^b ˜Qa.wg7)|팀Jqe?4+y1P7`X'+ :_n1p.tH!^|}; dR4~vN%շVMwޓnӷLk]-1!PȎn+ p 9Wfn ϰȼdx PI7H7Cv"{%i,fz0d]irS.w=W!H﹔Ֆx, jN'aPЕמRQo7-!p}E-@=;\|P+=e >}w =1 unJĪrFp2֡Wëey'C6Hs4io[C8ubB#>k+d䨀B2?C5@bvmn[{g?uywy>փUyܜ?V\,SfDr<a],/}Tp*yiHzF @4=|wPawU `5Sٜ=A+|גG%Z+y h2J~W 7.&j60 o"p8- eT͸w"?US  n-^,IBnf?B] lh #]%>KXy_d⦡|2| sxeZ [}iweOǽ. v>ֺ{';Jl7t:^; PW+q7SwV*ܤKX奧+ߎm_>ƌjUF"&KC {{OK!ګ__6/]ϛA{it"mF (;6|Py L5'Q.HwCs->=$!dN;.⁅RuK[A7Q55`H'ee¹yK3[PfzS*dRۍ:kNMTRzf^i,{+crDe\|J^2U\p}sɑpY#weebGӕчjo޾籚/"&ȢE^!խl* zMp}[ޔ 9*D &UZˣ;\o_NtKMi0^Yt>;*g}f.7۞tb}6j9g::q'ڡW3W(R~ݤ`' "r+;3Q^/=(<71uLJ}sQ@UT\w? >bo: ܻ^rf)?ҪKY_]@ovt7$P>@ϛhm/U7 46B7UDbu NFb|\N-$Z?k^ka.jMVVj1*y72PY]yu13[ơ-K*Po };|ǵu Sg\ݿPW|{C{*^?~2g,jCO2U׭y(pVRﲉ;5:\,wU8OÞa/|kiGjfz~xrͲ}UiK  g[_}-rtw( o*+z37bDD^{ܳo|-OggS-LI 9nsVdbg~ei?\vz+g>{I/=ܬQ֛m6jp+\h># nc1OHF:nLѐR-m=VƾZ^q[=͎d / +~nxQs2B¨ |,3<&<[}@{'6‰ng0 :p_Lf3 ';l:jpZ;j>[q_ pT]zsvCO;0 eñv40dC~vI6[1gw_ 񇃿8y%љF,nOe@yE')9=nc!GEp+ W@7VcB:t_jiZ$#.k!mQo[od2Y @ +?eO; d־oGJ , A3ȓ-;QaC' pl> ͞ӵ zN.gMWԢ$gPq HK[:3˭myؤ۠mC:B*ݭW@6lpџ0 [!;)V~.n#G6İDa-!b4-kye3{R*Q9y>oCL}pn6\g/b; 4]xK@2R%Dl$N2?QHN9CZ5]ؽP pƫc pƳ28fwyr˚y\Q??ߝ~} t oxm ϐ^B} v#2xܿx;DZ_{j(X9Fg'@pIxN;I=/@l0,7W /0b'\ˊl/|Phj3sK["Gޡ)9x"r !p>>'. {dAP$Ӑ(MYNj 6:_n6"+Jzqu { ?*+h Efzso7_ˋ;^n uxs[~Zr휍㬺8;Hڑkx f`Ww`z2^{۱IoyeCcn^ɍSf@`YՒ1A\|g@#YV ?՟1SOK>9;;*3v|ITGg~oLݳ͹@7x?3tCC/=D6@4RH[$ʍJ6 >lLRدf9P b&x*\lΏ eB08U\9ǾǵFAIYlOC/4 @0< '20$zu8d ]WR2FFV_jN>[V~Hv4 ޵?u#%֘`6C @7K qaW2 4Go8 e (qxOSL)U|*6פ&%`XWb-?0|1Cɭbb}4yށP!s9|2L~ˎ5b4VE4}Q}jy[?wOv6s"E6rn hcd2ag/vOR d=PսG#yΔ;Խ5o_0LMg{0}@9ðHlO~޳Y@;5 ڶ wFR)~C6Y(~m p yy8{c@GrիWa @>,s2ik^A\r (+񽿰'8tp? 4|HsS $v~*}tQkFrONtZgx=P2&ce7k%/_ӫ*j#thukuAl7=4Oem/V?<}Fpj t\-vkgP@HD=oŤ{ 4:hiyo#z;<]Ң9{13bYTT[3r@x5`#YVDD_( 6~f;,^>z +QA@c$ 0x!d? >%mť]c+s%G8U[oIgr󛏽#uUtKxisw G@ |q~XiHI!Q# ׹~<p^>R¤6;*YРh X%&`> A_WF_ E7|MףMBo7亚T%vo_M6 go.e{P7D^Ow /vpr"hK<P_8 x\UȔns+tCPnLۙɗ~9\=4%;řq誖L.9`fUP }4u8 S} 3jc ;l)0|~|<x dOggS).LIk_Vo`WYRJ:F:LIKxUXs~e'3&׈@W+~-3Jѧi[{O#5x` > 6z UI5uax mU;x?c0{ql`~y @P40. \;>&O7^W %3qxRf9[%]=n"W}K.\,@,c>*]N*wi@W ^jPI WeF 8\DN`e 0Th@ ^@PT`;'{ߗgdgV/߾W%،op6/zT*D DMh\ GVxRf70ELJ8Xh8/o|m#Yp_ZE/@^7'U{B^SfXYHފ;#7 9$L4g>@՝lši~ P Ӻ;}IrhT~ l%@! QO|*`Z"a@vBK"b\[~57%yqSqQf#QrbR@CpW" x, q)NdTY&`|쐟ȯ+ C]}L$W#gB;CĆVr+3@tߩOW=%/(/6 CU5a-4w"AUiv\&';m6-U׺8Z7\eN+0>P\=?9,לp.C!+0D|Re]" n0%1e``6U^iE+3)%@U'ɯMt޸f+gDfވ[hMӰhb07q8qVUm,kvܡ;N>KFt_2wf,eCwrx0%BV0*aܝ+бlL;ZZOw[#+C+⸍W{x@PX\mAsd?b;m,swc"yyW%'&k{b^/N} -$%.#LOv>nQexoQ^ˆusgC<@4?U89& #~,`]9rŅϟ?7sO[`g [NziJ=Ʃ6 :\u_kfrkg>zϚS݇nE <٭ƽB,UU|#=WSLSgQ5[2qq㦣e:Vq1΍)G u j+fw*!ww~ߛ|=5v@W{Է/m=7.τ-#~l0ѧË巈v4 i, >\ci5 J`a ya59qW%fǿ`% ̜?i;Ͽ  'X;v}2PyP+RxZ=$߷> TFS cH8tu̠[,K!qWHrƭQdKXczωaHUU9c9PnfWsK6?65wm\qw;-OdbuƜ./L3{?YPE xWUy38؎u^Tf?f⩢9I 8o#}j|fA HY}F}܉10!AT1{f]WRw@ _ jŮ{X:vPf&|p;/1delBڎ܄r (`d`qgO!=;}ר0X642;kbe%塋']Lk1j93#{],S~pשd5;_XbǣCxku}* *?L %! PD|. eFOSkVG"ÿϰUm]>e{^_{DDwO{צT=Gu!Q <)U\h*jBHϫ]kǛpc3cޛ3 Xc1dop V2.]@CP@n3d31^:)p?''{/e'KƇtUTeo;WMXݝ/׉}rdh;tY_zͩzCq7o|YUTEduH?;C*3N3?(#멧]t䷽XCJv<8j*/toC_  @zʺ vSz[Z@3yྏ(_\D` @߈*qqeɂgY |<zpЧ{֞{1^}J@ex*zzT2SyTA背1"!+7/18/| t? S EE14$Ep}Z3}/S.|Xu8-WBw+<@o;d nSʶu  ʋӛU P_w~5 xyNcՕ Iҳ>!@7 30M5@ ǐIa,8L&{ 1Imb5<~ր7H7:f"ȿzo̅HHA6}Ğe+?̩K3au:[!_}i$UzOkxO@Yp c/|$˱ O #FvE")h.lO2 +^`R@אO߿d>@ `RBP ͢՟wzsZrW.ؘs&;SrQqHh q@tb<p|?p(" SxV \|fY xpp0 CƫkR~Lө*<2ma8|[3q< ?l@ 9\ _Hc <]M颋!AD _*#Sժ?n'?~_> !xk<Yxﶡ-w<_@yF8`h}^ɕ0 N< aJv䦨ޥz12-1A˃x~\}s ~ 4W/|4. GҀn.]$j)>(}z;9^z!>^4V,{Uxn|]`zUP Y= ; 3Ds.j݊?0_~qK<٬9]|QUhBIL]YD(E%'E*Bns'@R`  %Yh2@D / d YКeꝵKOEUz췃,za(U/@ bk8q@dN 0ytGϊѐ si\e}^Zv{$'0@!75:q1@_R}kYD( уG3@7{/3ʤ nk'EBieZzG'?^SmMsW.Of@@٧=yI4^~oo0Q~0U=0 cOQ@{]*,jR.yqhgYAh }b;'7%9û_/}N M0_f!΅>Nro8J!0CJj1װ #G>O{| W&ZwІ" ͩQ{DB99w(=.o:\\ (:𕩨S<nj0_Qy/>_6jV3>X߄D_4݋/[ҚjpyiH#+yg;_i??3^7[s8Y^Bi{t;@G}s 2Q>}^EE$mE,*<"wJPٕda7Re=@_)m~)xʣw(.V&Rʡ=OT?59ޒFYq%Cp,? !.(n4 9Ƚ"Gp1v'գw͵I;wܖη<#NfTr--+  efI)J{D=MR@f_,9]ʃg ڿTU3-re@عs| gUZ7ˋP a[U@8B i-I!A\?_$9m9`Y& >D`E4*)%-;/%' iU~ 5 %J`,DDU1@Ԫw4hߝgspw{,Z%#*9T6D<κ}=9pvz7s|G?7mplg|a CB_b>0(+۴4Ii *Y2O>}2Jo?{>_ b'[oC\I! */.bU2"|]c ࢋ&L`bϖ_(b(ǎФ|%5K}ːM`Pyݱ8^ymvK~Ś_hnA3KD CR@i1#PAʗm(2qCdM8@n'g붗tLʍ{L.k, >̡NA%0='#{L.xV_@qTsc'0|i GO4n>ޘ5BT?(NM\rc 'W} %%@c!N?8s bw $n:-[%gJ/]l4&.oXN(@2_>$gY~ބq6fO@?|!pv@;j=~_qПZPCY_6a7uN.n9NWW5YYđg h02/o~&=ƀ,ӵ#`[ASǗ3/8&s0A[l %%"aTʈGvaݙ)` \|q~w ѓI)gstҹ8bVF=anv:da{e?yS-C #. `yepsg |>c -O$`kIF]50 0mhr`0o ^~xd#T8zy͔>Z"L c|}z_eo%8^/s".TSMShW=+ge~GZ2 (d !x?|_ 1BҮ=Ps1^\6w/k'@&rqr: =5pDY(n*p=~ \F;NLL1ԿnDdӛTUD׈4a!x.a?$bq>^p8`H<tGAw`|{2x 4e8)%-m!# kͭNMM21ǟ~zءC H0T:zΏmJQn[jcpW̦z:@/oRZl}؅CQח01^E2:Z{KUP Ǧ|fY߯;j|ۏ|7hk22W.~/d&inwj]oŧGZ,A|( `%J6HFĬ|*X~zF өkB?SPd kS$矾lHЗi~m`̩]-i*mzhYU%bB&cթ@ŞW{5X-w_ uA"(*)i#8$;\gGy,K<~P,vw2ufT/7P>]^{Uoo/D h=,KaôK95 bDKH}!5tCuT8|y5qTڠy]|o@7W@_<`}r@TGEcI p̏$$* OggS.LI),HimQFe`M`?OPY|QXɶ?۝sHL&:J~~@C`?m|@~ G@CŢCU b6&u]0ov ~U~dூ]>u<c3v@-t8.jg;rga)j+LϨ4O@k:=-wJFs bm}h  uT)ՙ~Y'SW'|@~`{ yŴ4Z0c 64n x09|\QPC^#& D4G9m0B )τVh:s̋st+ h7xE[@VOژۯ;|l-U5-K Sn:ʪ1 !w {=zid f""B?Mp "Vf٪Lj b@BC7'.M -cڴapw>l!"u}ڛ=>ȟ k>kv!yLݝ=2myW,oP}(z?kLjf&74CULN_BzXPBa˳;J5;vg4h:/"9)*} EaQPz6l@Z-@@_+ZWvj*%"W?s)Iz4`kFl˻T_R,>j6+[0Z3y'*5Fpi!Hq)@Q+wΈ7séwj\ϴ@qYܵ.L(\36p~/*7M%O>L^IM}[ **hd,<=ܡ(5 N`n~,`<s de;jh GI# `z18|t8( *z6c78ETETEQ(J4eݽmGڷW o M:_ yV:o;jm& ,]W2rf AǺZ{,P?KܰDG6=p0~*ߖ @n/ĖwГ PjR4B{70S)ߝ8=:xy,y_F<?Ճ -hNJ.h_,C@la thf1^@^x 9>ua`.3p|?U@&C/29EP@UUU0 )쾭CH, ~9Ho K>> fPl! kBHT@_~j]# 'b(OD;;w\(rN8D}^Lo2 ×HAD{/n/8 C>Eq* NXCPC/C%Iѫttf#Ax@)[ǖ@~6p 0@@ YKV$וfut?.Հ-ۣ<8t;"dQofÛo Us=t02Ӣ:xLlyZ_lpPRG#XXi@mfr6L)@ 8`vĞ&:4J`v哙YɤTS a^g[u_sS1#SD4*JP КP'$4q'sg(oKi齑A7rzieΚs>cʵ~~Yy P l4&jQ"s56"b ѾT?_0rnZ2JOȡ3*+~?OPFB "n䏵5_5Cvyai(5I ac|@]0B\Q" 6@jBcȽX~OwRx -w[L~9:CmpNU;?L5sd<}[K~FZM^7*^ ׫g-oiaW]$|2͎s5lx۪u9n%7g?2dW\J!~4LZkr-sΎ0 _ NӓIIOֺwYԟe \XiT9yEC -bBX`J*B gX¼!^Oܔ\8Q`[>1r!N&auko?|l]ˁ.lC{IMg^پ) 6f3i0fn'QQ(٣>q_Q1FQ[?WPGg9ئ.v?P,6> bݟ}0e>TInǵ?q?y0]dGTWT5` b=̼at^np8sDʼr..[bSQLe&`&q?v8䨦i?@|wF!$x&rWaФW0("xX"Ϊ )jF>*t[:9SVRjbGz=fRl+@)m9At4k\˷8K >%(R9jMR ~ ݆˱vas@S(}@O[,ba4=-2ze&%)<``C~};z7@pVK~:IraZGT!k~q {|;kbQ/ws'@#.%(97WI  |miGk}iǾ/}[ibB洜m< 7stO}^@͒[躮BCI1 @Ɋ>;"ku$HryՔŲi /c*nW^fļ} 7J5Ks@{c lb6D/$fzP_ٲP ZE+sʐO8ȂX+?e||`?c0OggS.LIOR<9=:;9;LOP╻ Cg5Gy8$ kwUz;֎/ա|vx`#gAA`z9m)y4g<ﰲsom'UPt91#C9`^kNS jQ]ڗ<-Pyia8~׉@nz~GaQG`ϋl7̓$l? :8N`2/,/AEGL%ِ#Pyf-Pl",@~Ҭ)xdj}/=bR=5EPfJ]#+] p Z?n&gg|l `5R/(۬c/7B>{oRjX÷?po5C_̩Xޏ>/dsCk`<u|,GlEP!Ex40:/Jܟx|]w4y/^}cV5/:0~x>r~(Uuk˅d{*@؂<? 6? o&?svBH,|76)-ĚymJ+ݦ{" BdV nz<Ԩ{_^tNfo{GK];O=Cwa)eoJnVf*f2<:N(zyY#3(_~ck rS oOȚߒ*sNAO@]@v 7Gq+J޿228pl kDE0%dHVw,dI Y*+']"R SS { ~g/Wt/Btd9\9O3 r8T^&|&]t@Z3'?Sk8M8DtW)2N}L Su_acb+8Ѵ2Wi-5NrL@2l2qK{ Cx40fm&:ZNkrE?j_8oM|w^w9M5b+k+"gz41~71<$:مQ1d~1&HZ7 ls//a (5\'\p5~ɋ#ZOkEҸ jx} +ymI/cm{o0nρ@Rx֢rvZZߕ Ѣ+ Q)1fAS(} He:bm~f{3^iϬ ohڲs9_<(3q#|zps/ id;/{0S9[r@'! ƒb7gzloU֟|Ɖӷ|(3]]9`$E+nY***Ǫ T$·=etUx"ye͛vo=+fK6e(*HTm3,,$=1:3ɶ*q k|4۵?4C?@:`=l_s/ d("wn;R r8^ jP |CL`G?O9)xԴ~*^}8́_ٻggLܺ+^t~'^Ћ'@?y 3 j6˛ ^Χ]vN/q+l; rV]YUCyris;Ejf9PY/c1M o ?zv4޷oLTEW41<ٳ%Aj0?@ -&#aH ӭ3bX9 ?[:h8zP~4 .Z}Nn `\Ak(GУ_&!O j2 0fsPt>@:oYelsu(fjO-<=vG]0Po/gIJ\nlQْ~} hЮ4+! Ѝ{ne;|X@PUMLa.p/. l'(nDDڟWPb@`bp{g?W5}$t3J_(q FrtWVy'm9Yioj' O?U u<׳s:gT77SzlK NP.IN2tj.[T@eLG'wof{v qcݞ ާ[j˱/\9 h~0\d.adiKF(DD U. )>5;wQRs ʧ,mmZBϤ75;c9W`7=K%X'`rs}(v/? o^Q?W4Rp/нspڵxޜ53 Vova?CO7-[ciPj0C]?ˀp2+jt)pϸ9ٯt[o?n;ې@K2?^ ̙ *o{ ?p`d ۝QB'j8ཁ yQ_Am+&nß GQPj pu+_u?QÒEј cqX/On[K+ʳ@v_hɴ ec<ܐ}* @z~c]̜ti`WhhxH'4 .1B7Onz; v!GcC PG: <@OAAGq@yiw6O`}BH+@^T'SgQ\\\@C@_^J34?;`b[z6`J2n+@obOggS.LIsdg\ayKaMj4HHNLީ+)3A&c&8jr"=͓/?` H* HB`1ף& ^~tvP9]{jsB&O`^g@ "@k5 ׋x=ѩG/YU!+(ٙ@io9҃JVXLA7o~89 2AD@S-Ký1ҷx 6`""*lb6,,2KxE @|3 2`ږ[^gtfmGg )ϘYG<ɰa<\| 8wF8#`ovщHaD&+ D PC!mɵٓd+H,!K rܻ<HɯA6Drlos})s7!htع pf3gAf puYl(*=xD~y߹8@ڽ;}v<f!N por<=x$iA_`Y{7p 2D`0\s`P"DxS,@HY-+γiYDlv;|qGqr lؿJ8AtXYܺ7?QvM/?x_[w!o_ <w];kPݫ{>VCYiB}B&d}v|^\iB(OgJ PMN6:3__4$jU6AR@fy_Z {]=3|op ux9b$ms%uR3'`0(. ikD`1P;qLw|7=~-p" T1܉xA#5F efm +| l/q8isr( \E"A`BDw%{Ѝw\CCNE5dB=QHnN f#$A7o߽P "rWbn CCm -M&|@kzR;y@|/7fV{W 0XW@,$[Az,_p мe"8Tpn@bZl+No` E~M5іA2W~&d:""8A(O.(7ik" Aq=?l^>Neȅ ?xmS=jV޵-^(ַnT: m; c)gnƿ̟s QNib;sO{b}[ryP?{*;?BNSARCgum6}tQ$83 upTd{כ; NPZi>*϶ؾ;@$E|5boTo"4[cI .- V"1Hxl^Y5h0l#qSLee_X;Op=|޿;ߐLQ6X?{";fW82zr-Y@7X4gy̑kli9Y).Z$6ϧLTO< <}u4jHDx*E?};s(/ߙ~_Ξ ~fxx=ih?\3g ;+93!=tɬ{owc(-UV0` 5v$ʞ}c0p' ?:d,g c@2̇@?Yc(A1ք{2iL,/xw&[lqk@66p9f~epi.vyC/_R\UOK͕;`z +iN:xY>А^x! /e:i'at%FTR۸']ue7fQ6[jsYTYwUdxY2ACVgߎ 0}Qso]cKe[o0@N4RH|zKa~Twk mlfO6 Y`'AJu;V$q*/~ֽ2&DQTm-2EDZcO^o>Q BP ;\Y!w_tV% φwB,9s?>+ǜ_u\_S -Y'З=jeh ?/~~o $^vַ{xM{yIXrfrt 3>9HQI˲u`o0<7*6@ Dl* +zXÀKh 1P>(̮ 0V  imܶLH]h94D?_~/]=;hk ̍64U</=q{~V!z-6eWCwu=k šͼifw2zyC5@C84U L>M,5*jreT,XM$Fi)IUUP["ydۂf5s˪?3zD 0`o&T)`b ʶe 7㚞`a i"ӮI8`Ow"6rsB\{_SN9&T k&@i'fhcyg9cn]\볥56.Xqtq}ٴ\132zW @.PȮ^<7l7~IT=MCI ФIWV6NddF8.|ͷ(IE0C\~ūOwx@'Em hR mv?|ꮪv|D/2ށ߬m6 $Sgh0XoDl6yWn;kӮGqYp(Z;Bfؽ_tkEwFNKk3Ro{tj t.0=oY98x~l6nC~\Z;충Y(fD>3hl1"~'X2Jz{^jjc D z;Lw{X+A6 ]xMS/ߗ|U9_[N8A7\҆ +9I߄삉_2ialDnx%&*v˘uQ).S<1>%9c~IQXX3d9츧\qdzOM9 \uooD ]`HRiƥ[v?%zTW>Hp+z7ė\HsCVF;K}Ja>@W =70gN85j{[wqwku~O:&^x֐@ug{Dv/1 #9u zz5ݣbXi9r ,6%شB h"ӳP-mebF7!ؗMC 9?ITQQQW`,ėdy!-QE@p6kb@$+MU>Y`[KOggS/LIHJaglY[AiQ=Cfu)FA-E>|M%Ch=;CLodX~ٸxlO/M#TxcC?4p.-еUb$+!yxVY>䟁dܪnY:d|%샇@7[EJ!NS!&>gS@6/f%lk}j]pXW>; Yۿ2܇G.bU ߅=u޺ǁsݷƲ[Mbc8}7XXP_E旸PVۋTFk@!8 @Z6 Wy&Fa.MW L3p`)FڪSǠA0ft y,[8 y3n ֆK%W  8kC $#_(@5hir׌&*^X4o_Py&*^o ۛ^'db;>moI%1UcOc5(6ì`PA59ȫ[M* !ΪuMgt=R̄6M/}=)>@OY8#ܼxF (ݔV5oB(=Xro `:~ RJs3ҟ4Pגa]VD qx`4^`\Lwpn$/D-reϽle@7GL!,~m0]t[+K5- _ &l%d(]<{6墾ގv(6L!ϊKÑېO<;}m3AcpNej& ,?L(Am˗o+^kÓ-pQy<wcElRGb{QDwE<ֶu`FLm4oM_e!, 'o7nh4h_ǁƟM 0oW }&γ"@yUX(|[Ut<JЖnLǧGǚ>ϵg\ %2v{|mR ^ȅ^Wݵ@`q]WؘlH e|_(10#@"KCɒ:_u5(8&5hÆgt \x(@l nz=M|}9>_}*ty4O£ ?]Zr2TY{ N}u"~eZ…LB୯s`Q_Dм}6?I"JQۗU&I`>Fh70oA2# qqzmX}#rܽe9Nx,ot4}}y~ p'8]C,".g+}@ ª phq:TލYy6O:iXfo{f^eo ?-ƚ;P+\(䮶qh~57۳2fr>![u\F'$Ĥ|:fϡ; @k]rpwAts}U$Fi5%.Fo?us/'yq@ݥalXQ 8Qt /AaҀ{I!JdOsCjkz}_8Gg`z, ί.8 m7kFRV(dyü~>^@S[,;pi4n ^k^2mulz=.L˼x`tqm`oDl pp0A Dn.3]CArO{-+^8W }rzb0`;yJ3xXJ/fhԷ5~AC}yb@4;mQEۛtV]g϶TؓhHnvVt𪎞:pp_w4q:*8^{ƇWl`J[2,cʭVwץj_ `z#Owm f9]W?! x(X>ܣilr$2bq}|̾xF\5p 5 x#g jlf8x}DsrnOԄG\e@Ψ"(ds[Ru2LXVL euE7U24F۞t9'v^mg79NwSYb/LIQ^eO}cd\nlzp>e} :Ha8R>pJa?Js8ذo/Z ACxOqk6oU@fR &O>@)og-FPnFm%wLh7ߐJ )3gf'JK˿/!neXY֨{O%GIo>G 9ej:wZ,XJ7&+:GONC\v18:ׯ"?{| +bFc@Iu"DG@-Ó0 @S^'!ިueZ&*S͟Mb~)_4?Q<֨;p4y@Uと` ~O8xpV^!83ZrtQ@@^slΕA;a:@53/Nև[. +rQdlK{ o~ˡcRxwD hy0@vrkO@^(x<9p(f:>@ryՒ g}z:Sǹ0`7?㉢ D& Ӥ$?Xȧ6Z A-hy r/$S gG1lFBވ( xL(T` }Zkf_Հ>~U6n' Vз{~<3PW ]H~1OϺ#-B)]wNHI˄Ը}Ftp ,t5g꠿UtI95C+ ޿Yh3Sԙkg(BGay8;XO2?/l"<Niro9%j-ilp2 ,WpKwY@ bP(=6bp6~@!C)zm* oei9p秎|u ohPqP5MMrrer7ywy^ ?wpVr4@7M?L]`}l1@ ί(a'dKG/!Ҕ< ${i1ޚ]-l:,=ѳ91xTF{љ ;Fwx}qRl`{-7Aꄘ p˱IeikP-q 0z `.J)˶5ŌJ`TEFOGKO}yˬ,^inHWF.YC2ϧm<ʟu`h_GKTq˻GuzXD gM__م89w1vh3%M<>J` $]&@vh(c 0T 6 :?z%@qm)o pUxޚun'((!Zܴ?Vݻbhxtqo %:F+󓯃DQ51 o>=zNn›=oYaݸ,Z GLguux6K ס-)ȥiTN?^]$mrx1Rl&(#Nt/#a׳N 35'[^{DZ~~C[`';^"V8; UE~#:6d`Ay;2 // ?Y[Pzb`&GX8}@Je<ųY2- XU;g <~YVc}Wv 5w`#5~w3@2 @a ێۺ}gF};j߁t<Ǵ۱ޢXʮ!dp߷|+plsAh'/?+ ,yf^d:J\꿳<@nξԧpܞ ZY typy뫊z $Ǻ_ض{^axr~Lǀ7 k=-&1p |9R<=^/w?^s 2s]#0`5~~ y86` ?=XO O09~?))J/DtLVm8fy`[2_&iQvB^ ά,-+*S?.dirY,gQ;8fOgS0伕k(fOUk@e_O~WI8 ݾ\4,}>]prGcnN27 '/7 q*ߎm+ H3s&!B,}MJP!w=ٻl`=髜L"mmZrW9|ijFZ\g t\gIJPY O|?;f<~.x!xa9&8tf]H{;ި>+mDXlCIux&s(s r;Dŝ 5lz@+\|~4ݕgr95b/)w^.yws8V WП7 p"@wv P~U9g٨e}{0?u ^b ";|@ {QuE |țT>&;[l0"}e j=-&AJMK P(n+ߧYhCAa  u^́^t}aqpV}i#cbM &8Ǎo9}w&trO5ΪwJ kf(E{o=j :i <"Nß;O}9\% yerMuM/q KYSi2H ԛ򚛦`y`߆NZ3`] &ԚyYDAE"mX ` ɀ>)`~6pٚd ၦ#y@`:$Cf-m !] hc ^Gy1;-$2Krn k+W?h/s5BEyFT[b ɱoAr?biÛ`S+Za{֭罽~V-7=\S19W3sץ={p_O^UE$Խׯ/mTARߟgayg2w&?ykE9c%MB]'۞ݝYvoyz^mVJLhӯVw?={# gWHpt`F ,oNt]Z_۶ #Vfl#f +%Dj1UOggSj/LI ?o qls~=;"sn,϶ʣx#r6sv-7w``4Δ8Co,qDlɱºml" @S^m 8Cˑ6*O{#}Ȫ+=ʥCZ6ޣ!}_BXƿ!TW[UX Ƀ\E|r~agfLvx/{gU>qx3k)s)5n^|4'o ,)s?{s_dr'SvI)kVUd&@֟%u]i>ޖ|YoHm_pdTjٵZ,w&(!(eB_L-WaCN9;&;Vh~M/{Fq?h .~|v3|~[-4DbI튌F>-aYm5aqFП~U)J1MA}驂螜.6> 113@U*y_7u]t zFv:{@5s=qNM3>?*50aG_)\_ƙ&/]~pǙ_-P+mi^w)'gyapGz7PAPGl M@ _ުIuADT DL'g_~1UlP+ xd%R6Nu|1#,qプm>&9_^Ϲ$ߟ[8PD?]&+d<ᕦ |V;o.<5k^ ??oꣳu&ן*s*o.>ݼ8YS?yUIȆҹnlNjn }u?Ž ͳR@d@^l 2-7m.R(p-`R 0XͫEeP#+dScjex ohbn,]R Oc* wT4(DհliWsc}zV2EV Qė[Wx;[̙\nJ?F0:!l@0t=qBt Sԉ"K`Rҧޜ  uiE0; D)Y|*ui~w 3’OJ7_ kEZ &R}T?9}a(IX(49{m Єaa:E@~0 j~ٳuc A ,ZM4>6Xw(5Sg ZPqJά_B=}Ka;|)cI9=&7'ݢYi!tet1K"@?|.>-kZJ)Į6"Z`tGUs^=,Y6 a7Gtޛ`0s}t}}03|un_=f:+$ʼn,z_xN\o]>x6|7?R`~|dMx5' 3й0(2=,;T(-_=;άJ -.ߓ >ȴǬG|uKd͚csuqsd?<4`?Ŭ-NHJ̒Z=$NWħ7?k340NȽևL-A{.Prn>]ެJ;yhcEEL@/ ?t`?m F$?8R0 ^7g|/sW|;`:ph&k~l@`U _|oxcA$@@DV#Y2yY  z!~髌 lV ~ N0}߻P闋SAa}ݛ HEB^ f}c:/`ZB^j7[p@ߎӦB9: Yp|i{Vs.c:(}[fphB=:]S3g}gD耞X恳.?9 /wVTnoDdl@.*=jf:0ׯy_syr\HP`{@lYmz h]0} :\g3 $6B 6e2kzW+ZwUX>՜A,8)mM47A1ˍ:>8K AS 'dF|Q^gw/XƋ_/ɢ];8^q޵V+xp?x=:[L p+%0ܖ`-&r