messaging-app-0.1+16.04.20160323/0000755000015600001650000000000012674565500016460 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/COPYING.CC-BY-SA-30000644000015600001650000005333612674565025020764 0ustar pbuserpbgroup00000000000000Creative Commons Legal Code Attribution-ShareAlike 3.0 Unported CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. License THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. 1. Definitions a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License. c. "Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License. d. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. e. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. f. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. g. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. h. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. i. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. j. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. k. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, d. to Distribute and Publicly Perform Adaptations. e. For the avoidance of doubt: i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested. b. You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License. c. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. d. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. 5. Representations, Warranties and Disclaimer UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. Termination a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. 8. Miscellaneous a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. Creative Commons Notice Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of the License. Creative Commons may be contacted at http://creativecommons.org/. messaging-app-0.1+16.04.20160323/TODO.convergence0000644000015600001650000000025512674565025021451 0ustar pbuserpbgroup00000000000000- Right now if you call startChat() in the two panel layout, it won't select the thread on the left side, and if you resize it to one panel, the conversation is closed. messaging-app-0.1+16.04.20160323/cmake/0000755000015600001650000000000012674565500017540 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/cmake/modules/0000755000015600001650000000000012674565500021210 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/cmake/modules/EnableCoverageReport.cmake0000644000015600001650000001531112674565025026253 0ustar pbuserpbgroup00000000000000# - Creates a special coverage build type and target on GCC. # # Defines a function ENABLE_COVERAGE_REPORT which generates the coverage target # for selected targets. Optional arguments to this function are used to filter # unwanted results using globbing expressions. Moreover targets with tests for # the source code can be specified to trigger regenerating the report if the # test has changed # # ENABLE_COVERAGE_REPORT(TARGETS target... [FILTER filter...] [TESTS test targets...]) # # To generate a coverage report first build the project with # CMAKE_BUILD_TYPE=coverage, then call make test and afterwards make coverage. # # The coverage report is based on gcov. Depending on the availability of lcov # a HTML report will be generated and/or an XML report of gcovr is found. # The generated coverage target executes all found solutions. Special targets # exist to create e.g. only the xml report: coverage-xml. # # Copyright (C) 2010 by Johannes Wienke # # 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 2, 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. # INCLUDE(ParseArguments) FIND_PACKAGE(Lcov) FIND_PACKAGE(gcovr) FUNCTION(ENABLE_COVERAGE_REPORT) # argument parsing PARSE_ARGUMENTS(ARG "FILTER;TARGETS;TESTS" "" ${ARGN}) SET(COVERAGE_RAW_FILE "${CMAKE_BINARY_DIR}/coverage.raw.info") SET(COVERAGE_FILTERED_FILE "${CMAKE_BINARY_DIR}/coverage.info") SET(COVERAGE_REPORT_DIR "${CMAKE_BINARY_DIR}/coveragereport") SET(COVERAGE_XML_FILE "${CMAKE_BINARY_DIR}/coverage.xml") SET(COVERAGE_XML_COMMAND_FILE "${CMAKE_BINARY_DIR}/coverage-xml.cmake") # decide if there is any tool to create coverage data SET(TOOL_FOUND FALSE) IF(LCOV_FOUND OR GCOVR_FOUND) SET(TOOL_FOUND TRUE) ENDIF() IF(NOT TOOL_FOUND) MESSAGE(STATUS "Cannot enable coverage targets because neither lcov nor gcovr are found.") ENDIF() STRING(TOLOWER "${CMAKE_BUILD_TYPE}" COVERAGE_BUILD_TYPE) IF(CMAKE_COMPILER_IS_GNUCXX AND TOOL_FOUND AND "${COVERAGE_BUILD_TYPE}" MATCHES "coverage") MESSAGE(STATUS "Coverage support enabled for targets: ${ARG_TARGETS}") # create coverage build type SET(CMAKE_CXX_FLAGS_COVERAGE ${CMAKE_CXX_FLAGS_DEBUG} PARENT_SCOPE) SET(CMAKE_C_FLAGS_COVERAGE ${CMAKE_C_FLAGS_DEBUG} PARENT_SCOPE) SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES} coverage PARENT_SCOPE) # instrument targets SET_TARGET_PROPERTIES(${ARG_TARGETS} PROPERTIES COMPILE_FLAGS --coverage LINK_FLAGS --coverage) # html report IF (LCOV_FOUND) MESSAGE(STATUS "Enabling HTML coverage report") # set up coverage target ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_RAW_FILE} COMMAND ${LCOV_EXECUTABLE} -c -d ${CMAKE_BINARY_DIR} -o ${COVERAGE_RAW_FILE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Collecting coverage data" DEPENDS ${ARG_TARGETS} ${ARG_TESTS} VERBATIM) # filter unwanted stuff LIST(LENGTH ARG_FILTER FILTER_LENGTH) IF(${FILTER_LENGTH} GREATER 0) SET(FILTER COMMAND ${LCOV_EXECUTABLE}) FOREACH(F ${ARG_FILTER}) SET(FILTER ${FILTER} -r ${COVERAGE_FILTERED_FILE} ${F}) ENDFOREACH() SET(FILTER ${FILTER} -o ${COVERAGE_FILTERED_FILE}) ELSE() SET(FILTER "") ENDIF() ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_FILTERED_FILE} COMMAND ${LCOV_EXECUTABLE} -e ${COVERAGE_RAW_FILE} "${CMAKE_SOURCE_DIR}*" -o ${COVERAGE_FILTERED_FILE} ${FILTER} DEPENDS ${COVERAGE_RAW_FILE} COMMENT "Filtering recorded coverage data for project-relevant entries" VERBATIM) ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_REPORT_DIR} COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_REPORT_DIR} COMMAND ${GENHTML_EXECUTABLE} --legend --show-details -t "${PROJECT_NAME} test coverage" -o ${COVERAGE_REPORT_DIR} ${COVERAGE_FILTERED_FILE} DEPENDS ${COVERAGE_FILTERED_FILE} COMMENT "Generating HTML coverage report in ${COVERAGE_REPORT_DIR}" VERBATIM) ADD_CUSTOM_TARGET(coverage-html DEPENDS ${COVERAGE_REPORT_DIR}) ENDIF() # xml coverage report IF(GCOVR_FOUND) MESSAGE(STATUS "Enabling XML coverage report") # gcovr cannot write directly to a file so the execution needs to # be wrapped in a cmake file that generates the file output FILE(WRITE ${COVERAGE_XML_COMMAND_FILE} "SET(ENV{LANG} en)\n") FILE(APPEND ${COVERAGE_XML_COMMAND_FILE} "EXECUTE_PROCESS(COMMAND \"${GCOVR_EXECUTABLE}\" -x -r \"${CMAKE_SOURCE_DIR}\" OUTPUT_FILE \"${COVERAGE_XML_FILE}\" WORKING_DIRECTORY \"${CMAKE_BINARY_DIR}\")\n") ADD_CUSTOM_COMMAND(OUTPUT ${COVERAGE_XML_FILE} COMMAND ${CMAKE_COMMAND} ARGS -P ${COVERAGE_XML_COMMAND_FILE} COMMENT "Generating coverage XML report" VERBATIM) ADD_CUSTOM_TARGET(coverage-xml DEPENDS ${COVERAGE_XML_FILE}) ENDIF() # provide a global coverage target executing both steps if available SET(GLOBAL_DEPENDS "") IF(LCOV_FOUND) LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_REPORT_DIR}) ENDIF() IF(GCOVR_FOUND) LIST(APPEND GLOBAL_DEPENDS ${COVERAGE_XML_FILE}) ENDIF() IF(LCOV_FOUND OR GCOVR_FOUND) ADD_CUSTOM_TARGET(coverage DEPENDS ${GLOBAL_DEPENDS}) ENDIF() ENDIF() ENDFUNCTION() messaging-app-0.1+16.04.20160323/cmake/modules/Findgcovr.cmake0000644000015600001650000000170212674565025024135 0ustar pbuserpbgroup00000000000000# - Find gcovr scrip # Will define: # # GCOVR_EXECUTABLE - the gcovr script # # Uses: # # GCOVR_ROOT - root to search for the script # # Copyright (C) 2011 by Johannes Wienke # # 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 2, 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. # INCLUDE(FindPackageHandleStandardArgs) FIND_PROGRAM(GCOVR_EXECUTABLE gcovr HINTS ${GCOVR_ROOT} "${GCOVR_ROOT}/bin") FIND_PACKAGE_HANDLE_STANDARD_ARGS(gcovr DEFAULT_MSG GCOVR_EXECUTABLE) # only visible in advanced view MARK_AS_ADVANCED(GCOVR_EXECUTABLE) messaging-app-0.1+16.04.20160323/cmake/modules/qt5.cmake0000644000015600001650000000310612674565025022725 0ustar pbuserpbgroup00000000000000# shamelessly copied over from oxide’s build system # to enable ARM cross compilation if(CMAKE_CROSSCOMPILING) # QT_MOC_EXECUTABLE is set by Qt5CoreConfigExtras, but it sets it to # the target executable rather than the host executable, which is no # use for cross-compiling. For cross-compiling, we have a guess and # override it ourselves if(NOT TARGET Qt5::moc) find_program( QT_MOC_EXECUTABLE moc PATHS /usr/lib/qt5/bin /usr/lib/${HOST_ARCHITECTURE}/qt5/bin NO_DEFAULT_PATH) if(QT_MOC_EXECUTABLE STREQUAL "QT_MOC_EXECUTABLE-NOTFOUND") message(FATAL_ERROR "Can't find a moc executable for the host arch") endif() add_executable(Qt5::moc IMPORTED) set_target_properties(Qt5::moc PROPERTIES IMPORTED_LOCATION "${QT_MOC_EXECUTABLE}") endif() # Dummy targets - not used anywhere, but this stops Qt5CoreConfigExtras.cmake # from creating them and checking if the binary exists, which is broken when # cross-building because it checks for the target system binary. We need the # host system binaries installed, because they are in the same package as the # moc in Ubuntu (qtbase5-dev-tools), which is not currently multi-arch if(NOT TARGET Qt5::qmake) add_executable(Qt5::qmake IMPORTED) endif() if(NOT TARGET Qt5::rcc) add_executable(Qt5::rcc IMPORTED) endif() if(NOT TARGET Qt5::uic) add_executable(Qt5::uic IMPORTED) endif() if(NOT TARGET Qt5::DBus) add_executable(Qt5::DBus IMPORTED) endif() else() # This should be enough to initialize QT_MOC_EXECUTABLE find_package(Qt5Core) endif() messaging-app-0.1+16.04.20160323/cmake/modules/ParseArguments.cmake0000644000015600001650000000340612674565025025157 0ustar pbuserpbgroup00000000000000# Parse arguments passed to a function into several lists separated by # upper-case identifiers and options that do not have an associated list e.g.: # # SET(arguments # hello OPTION3 world # LIST3 foo bar # OPTION2 # LIST1 fuz baz # ) # PARSE_ARGUMENTS(ARG "LIST1;LIST2;LIST3" "OPTION1;OPTION2;OPTION3" ${arguments}) # # results in 7 distinct variables: # * ARG_DEFAULT_ARGS: hello;world # * ARG_LIST1: fuz;baz # * ARG_LIST2: # * ARG_LIST3: foo;bar # * ARG_OPTION1: FALSE # * ARG_OPTION2: TRUE # * ARG_OPTION3: TRUE # # taken from http://www.cmake.org/Wiki/CMakeMacroParseArguments MACRO(PARSE_ARGUMENTS prefix arg_names option_names) SET(DEFAULT_ARGS) FOREACH(arg_name ${arg_names}) SET(${prefix}_${arg_name}) ENDFOREACH(arg_name) FOREACH(option ${option_names}) SET(${prefix}_${option} FALSE) ENDFOREACH(option) SET(current_arg_name DEFAULT_ARGS) SET(current_arg_list) FOREACH(arg ${ARGN}) SET(larg_names ${arg_names}) LIST(FIND larg_names "${arg}" is_arg_name) IF (is_arg_name GREATER -1) SET(${prefix}_${current_arg_name} ${current_arg_list}) SET(current_arg_name ${arg}) SET(current_arg_list) ELSE (is_arg_name GREATER -1) SET(loption_names ${option_names}) LIST(FIND loption_names "${arg}" is_option) IF (is_option GREATER -1) SET(${prefix}_${arg} TRUE) ELSE (is_option GREATER -1) SET(current_arg_list ${current_arg_list} ${arg}) ENDIF (is_option GREATER -1) ENDIF (is_arg_name GREATER -1) ENDFOREACH(arg) SET(${prefix}_${current_arg_name} ${current_arg_list}) ENDMACRO(PARSE_ARGUMENTS) messaging-app-0.1+16.04.20160323/cmake/modules/FindLcov.cmake0000644000015600001650000000172012674565025023720 0ustar pbuserpbgroup00000000000000# - Find lcov # Will define: # # LCOV_EXECUTABLE - the lcov binary # GENHTML_EXECUTABLE - the genhtml executable # # Copyright (C) 2010 by Johannes Wienke # # 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 2, 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. # INCLUDE(FindPackageHandleStandardArgs) FIND_PROGRAM(LCOV_EXECUTABLE lcov) FIND_PROGRAM(GENHTML_EXECUTABLE genhtml) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lcov DEFAULT_MSG LCOV_EXECUTABLE GENHTML_EXECUTABLE) # only visible in advanced view MARK_AS_ADVANCED(LCOV_EXECUTABLE GENHTML_EXECUTABLE) messaging-app-0.1+16.04.20160323/tests/0000755000015600001650000000000012674565500017622 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/tests/qml/0000755000015600001650000000000012674565500020413 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/tests/qml/tst_MessagesView.qml0000644000015600001650000001316212674565025024427 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtTest 1.0 import Ubuntu.Test 0.1 import Ubuntu.Telephony 0.1 import Ubuntu.History 0.1 Item { id: root width: units.gu(40) height: units.gu(70) ListModel { id: messagesModel ListElement { accountId: "ofono/ofono/account0" threadId: "1234567" participants: [] type: HistoryThreadModel.EventTypeText properties: [] eventId: "id1" senderId: "1234567" timestamp: 1439486685400 date: "" newEvent: true textMessage: "test" textMessageType: HistoryThreadModel.MessageTypeText textMessageStatus: HistoryThreadModel.MessageStatusDelivered textMessageAttachments: [] textReadTimestamp: 1439486685400 textSubject: "" remoteParticipant: "" } ListElement { accountId: "ofono/ofono/account0" threadId: "1234567" participants: [] type: HistoryThreadModel.EventTypeText properties: [] eventId: "id2" senderId: "1234567" timestamp: 1439486685400 date: "" newEvent: true textMessage: "test2" textMessageType: HistoryThreadModel.MessageTypeText textMessageStatus: HistoryThreadModel.MessageStatusDelivered textMessageAttachments: [] textReadTimestamp: 1439486685400 textSubject: "" remoteParticipant: "" } } Item { id: application function findMessagingChild(name) { return null } } QtObject { id: testAccount property string accountId: "ofono/ofono/account0" property var emergencyNumbers: [ "444", "555"] property int type: AccountEntry.PhoneAccount property string displayName: "SIM 1" property bool connected: true property bool emergencyCallsAvailable: true property bool active: true property string networkName: "Network name" property bool simLocked: false property var addressableVCardFields: ["tel"] } Item { id: telepathyHelper function registerChannelObserver() {} function unregisterChannelObserver() {} property var activeAccounts: [testAccount] property alias accounts: telepathyHelper.activeAccounts } Item { id: chatManager signal messageAcknowledged function acknowledgeMessage(recipients, messageId, accountId) { chatManager.messageAcknowledged(recipients, messageId, accountId) } } Loader { id: mainViewLoader property string i18nDirectory: "" source: '../../src/qml/messaging-app.qml' } SignalSpy { id: messageAcknowledgeSpy target: chatManager signalName: "messageAcknowledged" } UbuntuTestCase { id: swipeItemTestCase name: 'swipeItemTestCase' when: windowShown // we reimplement the function here and add a special // case to deal with a null child without failing function findChild(obj,objectName) { var childs = new Array(0); childs.push(obj) while (childs.length > 0) { // this is the special case if (!childs[0]) { childs.splice(0, 1); } if (childs[0].objectName == objectName) { return childs[0] } for (var i in childs[0].children) { childs.push(childs[0].children[i]) } childs.splice(0, 1); } return null; } function init() { } function cleanup() { } function test_messagesViewAcknowledgeMessage() { var senderId = "1234567" var stack = findChild(mainViewLoader, "mainStack") tryCompare(mainViewLoader.item, 'applicationActive', true) // if messaging-app has no account set, it will not try to get the thread from history // and instead will generate the list of participants, take advantage of that var account = mainViewLoader.item.account mainViewLoader.item.account = null mainViewLoader.item.startChat(senderId, "") mainViewLoader.item.account = account var messageList while (true) { messageList = findChild(mainViewLoader, "messageList") if (messageList) { break } wait(200) } messageList.listModel = messagesModel tryCompare(messageList, 'count', 2) compare(messageAcknowledgeSpy.count, 0) mainViewLoader.item.applicationActive = true tryCompare(messageAcknowledgeSpy, 'count', 2) } } } messaging-app-0.1+16.04.20160323/tests/qml/tst_MMSDelegate.qml0000644000015600001650000001420612674565025024114 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * Authors: * Arthur Mello * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtTest 1.0 import Ubuntu.Test 0.1 import '../../src/qml/' Item { id: root width: units.gu(40) height: units.gu(40) MMSDelegate { id: mmsDelegate objectName: "mmsDelegate" function startsWith(str, prefix) { return str.toLowerCase().slice(0, prefix.length) === prefix.toLowerCase(); } anchors.fill: parent messageData: { "participants": [], "sender": {"alias": ""}, "textMessageAttachments": [], } } UbuntuTestCase { id: mmsImageDelegateTestCase name: 'mmsImageDelegateTestCase' when: windowShown function test_load_image() { mmsDelegate.messageData = { "newEvent": false, "participants": [], "sender": {"alias": ""}, "senderId": "self", "textMessage": "Message Delegate QML Test", "textMessageAttachments": [ { "contentType": "image/png", "filePath": Qt.resolvedUrl("./data/sample.png") } ], "textMessageStatus": 1, "textReadTimestamp": new Date(), "timestamp": new Date() } var image = findChild(mmsDelegate, "imageAttachment") verify(image != null) waitForRendering(image) verify(image.source != "image://theme/image-missing") } function test_load_invalid_path() { mmsDelegate.messageData = { "newEvent": false, "participants": [], "sender": {"alias": ""}, "senderId": "self", "textMessage": "Message Delegate QML Test", "textMessageAttachments": [ { "contentType": "image/png", "filePath": "/wrong/path/file.png" } ], "textMessageStatus": 1, "textReadTimestamp": new Date(), "timestamp": new Date() } var image = findChild(mmsDelegate, "imageAttachment") verify(image != null) waitForRendering(image) tryCompare(image, "source", "image://theme/image-missing") } } UbuntuTestCase { id: mmsVideoDelegateTestCase name: 'mmsVideoDelegateTestCase' when: windowShown function test_load_video() { mmsDelegate.messageData = { "newEvent": false, "participants": [], "sender": {"alias": ""}, "senderId": "self", "textMessage": "Message Delegate QML Test", "textMessageAttachments": [ { "contentType": "video/mp4", "filePath": Qt.resolvedUrl("./data/sample.mp4") } ], "textMessageStatus": 1, "textReadTimestamp": new Date(), "timestamp": new Date() } var video = findChild(mmsDelegate, "videoAttachment") verify(video != null) waitForRendering(video) verify(video.source != "image://theme/image-missing") var icon = findChild(mmsDelegate, "playbackStartIcon") verify(icon != null) waitForRendering(icon) verify(icon.visible) } function test_load_invalid_path() { skip("image://thumbnailer is not reporting an error for wrong file path") mmsDelegate.messageData = { "newEvent": false, "participants": [], "sender": {"alias": ""}, "senderId": "self", "textMessage": "Message Delegate QML Test", "textMessageAttachments": [ { "contentType": "video/mp4", "filePath": "/wrong/path/file.mp4" } ], "textMessageStatus": 1, "textReadTimestamp": new Date(), "timestamp": new Date() } var video = findChild(mmsDelegate, "videoAttachment") verify(video != null) waitForRendering(video) compare(video.source, "image://theme/image-missing") } } UbuntuTestCase { id: mmsAudioDelegateTestCase name: 'mmsAudioDelegateTestCase' when: windowShown function test_load_audio() { mmsDelegate.messageData = { "newEvent": false, "participants": [], "sender": {"alias": ""}, "senderId": "self", "textMessage": "Message Delegate QML Test", "textMessageAttachments": [ { "contentType": "audio/ogg", "filePath": Qt.resolvedUrl("./data/sample.ogg") } ], "textMessageStatus": 1, "textReadTimestamp": new Date(), "timestamp": new Date() } var playButton = findChild(mmsDelegate, "playButton") verify(playButton != null) tryCompare(playButton, "visible", true) } } } messaging-app-0.1+16.04.20160323/tests/qml/tst_QmlTests.cpp0000644000015600001650000000470412674565025023574 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2015 Canonical, Ltd. * * Authors: * Arthur Mello * Ugo Riboni * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ // Qt #include #include // local #include "audiorecorder.h" #include "fileoperations.h" #include "stickers-history-model.h" class TestContext : public QObject { Q_OBJECT Q_PROPERTY(QString testDir READ testDir CONSTANT) public: explicit TestContext(QObject* parent=0) : QObject(parent) { QDir dir(m_temporary.path()); dir.mkpath("stickers"); } QString testDir() const { return m_temporary.path(); } QTemporaryDir m_temporary; }; static QObject* TestContext_singleton_factory(QQmlEngine* engine, QJSEngine* scriptEngine) { Q_UNUSED(engine); Q_UNUSED(scriptEngine); return new TestContext(); } static QObject* FileOperations_singleton_factory(QQmlEngine* engine, QJSEngine* scriptEngine) { Q_UNUSED(engine); Q_UNUSED(scriptEngine); return new FileOperations(); } static QObject* StickersHistoryModel_singleton_factory(QQmlEngine* engine, QJSEngine* scriptEngine) { Q_UNUSED(engine); Q_UNUSED(scriptEngine); return new StickersHistoryModel(); } int main(int argc, char** argv) { const char* uri = "messagingapp.private"; qmlRegisterType(uri, 0, 1, "AudioRecorder"); qmlRegisterSingletonType(uri, 0, 1, "FileOperations", FileOperations_singleton_factory); qmlRegisterSingletonType(uri, 0, 1, "StickersHistoryModel", StickersHistoryModel_singleton_factory); const char* testUri = "messagingapptest.private"; qmlRegisterSingletonType(testUri, 0, 1, "TestContext", TestContext_singleton_factory); return quick_test_main(argc, argv, "QmlTests", 0); } #include "tst_QmlTests.moc" messaging-app-0.1+16.04.20160323/tests/qml/tst_PreviewerVideo.qml.disabled0000644000015600001650000000454212674565025026534 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * Authors: * Arthur Mello * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtTest 1.0 import Ubuntu.Content 1.3 import Ubuntu.Test 0.1 import '../../src/qml/MMS' Item { id: root width: units.gu(40) height: units.gu(40) PreviewerVideo { id: previewerVideo objectName: "previewerVideo" property var application: QtObject { property bool fullscreen: false } function getContentType(filePath) { return ContentType.Videos } anchors.fill: parent attachment: { "contentType": "video/mp4", "filePath": Qt.resolvedUrl("./data/sample.mp4") } } UbuntuTestCase { id: previewerVideoTestCase name: 'peviewerVideoTestCase' when: windowShown function test_load_video() { var videoPlayer = findChild(previewerVideo, "videoPlayer") verify(videoPlayer != null) tryCompare(videoPlayer, "visible", true) var toolbar = findChild(previewerVideo, "toolbar") verify(toolbar != null) tryCompare(toolbar, "collapsed", true) } function test_toggle_toolbar() { var videoPlayer = findChild(previewerVideo, "videoPlayer") verify(videoPlayer != null) tryCompare(videoPlayer, "visible", true) var toolbar = findChild(previewerVideo, "toolbar") verify(toolbar != null) tryCompare(toolbar, "collapsed", true) mouseClick(videoPlayer) tryCompare(toolbar, "collapsed", false) mouseClick(videoPlayer) tryCompare(toolbar, "collapsed", true) } } } messaging-app-0.1+16.04.20160323/tests/qml/data/0000755000015600001650000000000012674565500021324 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/tests/qml/data/sample.mp40000644000015600001650000135521712674565025023247 0ustar pbuserpbgroup00000000000000ftypmp42mp42isomavc1freemdat EH, #x264 - core 79 - H.264/MPEG-4 AVC codec - Copyleft 2003-2009 - http://www.videolan.org/x264.html - options: cabac=0 ref=2 deblock=1:0:0 analyse=0x1:0x111 me=umh subme=6 psy=1 psy_rd=1.0:0.0 mixed_ref=1 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 chroma_qp_offset=-2 threads=6 nr=0 decimate=1 mbaff=0 constrained_intra=0 bframes=0 wpredp=0 keyint=300 keyint_min=30 scenecut=40 rc_lookahead=40 rc=crf mbtree=1 crf=20.0 qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 ip_ratio=1.40 aq=1:1.00Te "!@F8E?y~Q) 2Yx Xx*z*rWo_QK=ѥGŠX||PwRt1i'D2>)Iz5||FHկocT D~?v@ ##a޿Cȿ e5pN8NTxtV2(l: UOx(kރnYr; 1Y牕?ä(82܄7eDQ"aGk2 1p Y|,-xG1.3jh?Z{"v@a@pBKp׃'p(4AtP`B@]^SvYLHB$pQ Xe;F`ɅaK*Zӿ'M;`\ONI6"{D`BgNχ] P7P[Sk|?o>'#N~uJޟ9"S/'$\kj~{$5In)c. 3Aë`Qf*dL7d5mQ?T@9 hllI?C` d -⃎ylZ$%~zƅOGMC "pTz}C (XIdTE Ɩ ҠਈiKm$F:P1I?ְo ka`EF}Vʙʕo}24\,jAZY `ee0N`pC+چQ=MV\:YN`P/-%A:0VbϤW tA ^ʙX #'-ڻ!'XᶶAD˻7u|wvfy)CK0mB,~Rx0(AwpE*3g-Mm}bY-j]WwɆ՛SU~VͶ!<4|hq*MQ/әJtϱ߃zʙAUcomTzFq83."RC VB  slP` CQ\x$W:{(^P-?ϧѤ׉ّ0:1FF̵vE?#NωVN%XQ[:kpu4~1Y,'0N`*/l o@V9 gE5Ţ$%#r/uqj(Eə~8:,12Oi\i2, 3 2[d=JTPo]SWQrVr285TS 620OiRjW?lRf0  |LHpu% Fp¦'q˟"9vT2[xaCt",WI94LN]?TiUQ^BIV$/@$`|!fɞM֟u<ѺO8N/SmⲤJ؋w?i^UrرRq=E*O!=fuw`P D˳l=bu5*vT$T FZ * X~zd]' HPLRF E64+g<ᬿK˸%EQ8(.rZt5^?qΈt)=KuUNN5Ϋœ*^U/:$JK'<i>ޚr&!' dT^E: {*TV7կUOoe(xWu *0 QO֪u Ϊ*)N/4vqObu-D8E8^^?D` 5 f5=2*ܕc/EK Ž7wkQquqQĵag'30,8I }GXls]&#0[~}/$"H)@yXR:eXzݐ˦F!aY{x28ڃ{'ÜqE"|7ve$C*+b7rBwȬOݗ"rދĬ:☕_JӓHJjl]?/㟳\<=H ,&?ܖB.{ 8 ^9s4FW74 *"4hf1߁A c8w7ԅѠ? QDK\ n),ͩ!XѢmطbqv11p'v4C6Q5`I gqm-xc0NR1}Gw5P`ttJXE# p3+Mw|.; EB9hcd1(H߱>A񱾰 -s*|(Aj pv=r ZBD%߫\3Uc﹂!gCG#w\#MFA5` 6KX ٤^[3F}}Q6ǩ]t2BNX=ia!PgvU :8(+ P@G@Izl Nt+ip% K?3u~L@=v灃@xni@9  IQ# |\C耕8X`p*nd K{H<mxGDž2{ >tDq8|䤊\Ē\NF׉wDstt$Uyqq*x|_\Oyϓ?3t;Nf p2HK!𿧴rcWIcA%R~lr*@ WveLpc`00$ ܩ|wYFDDZˁ槿ުI'ª|fQ`m)syWg$Su -`2C5_ׂ>H`E3  [+)&݂oU(n s/}H>(iFJ&LhAyT7[EMeW {,+C|LnZ]>7c o~*UDi^*L讀343RgvRёst>  azz*`php=;jɠ`!]( ԝ* DkX@B|O`I?߫=A#33UKy~_B`vBBFpRy$o^Z-ETgJ~tmg!a/6[93>Zwq(7o XO?[f>5 *YN ԯo@ NjV Cjy*VsH>-,W*i" AS(h:@ k`T](}qewe8^g6+sI=?2Ew0A5 c =I|B 0@`4 Y8trYQo9x*. T#ob qe] [Wo6^a$[™~k@q Pװ|< B{!Q2˗B,[@vF+6nj]ihY*EdNق|/)vmdP.Cn(j0)MOR,|m Y \^4{Qg_WQi'FGr+TQCwO\C`::AJH ?]i"jğ,*}S_ I8xQREJM@ ?=Mnp{8 `$z@IY s[< rXj"(?qKKQu'³ fV%; Ap҂HF ̼eƩD&? Ga"o"5~pV}>j eyS{YnP/E$ˎn!h̒,$& 8@D< 2BzM@,TbJ״xaQRӦ4^vZ,9+mNX0 ,ACa7#%H!ϼ.|7cUy)56{Cw"xv_"Z@g@s5_ B_A 2JYg}(U_"Y $l<́|7hxtiîǕ5ݧ3FA,xҿ!ނa9du~Z 0%R+z2?yL$:~p_ΐp| ?NZ6 ~P$,t4/j#BHǖUVP-dbǯROsq!%n <o˥#(< Ó<|?2?'OU_iRì_@]|V5U1# ~9q\ ^ llP@`= p K,Z,cp`a WlP QUu6rHFAe`Hw){kNM&G~ YeP 3Q}y圯T+_q7V5@ q !}ţ#W| +5Sk04K;Ɓfw'L"m^1Ǐ{B J:{J#k 6yT&ƨGdlFBTP`\7 ,]l8LT$ fk&<ܒަ$_r gafhpXT;3l0Rs 8u oW}]&70Lh- %<@ #0 Ac%rWd%_Q+*D'%W<QF*Ɖ>32MuܸHyH[lvul5DKeFbGF2$vj0HcM5&?A [pS)FF늈ꪩk ̯qn@{y!Md,oW!VQ4EՠB!EZ ڀ*Fch@1@O<:+3p~x2zv6~MR,(jw(L3 1NC_)Pd&R˅EvR n]4 m!p> ? &B &ѳ#B9Sp:6dca(}?;*@ʶtd@^8;BfXc|޺a&PdBhŞ1W1+J"X TVREbqZ@RS6 %8\UGwyoGqss֫U"ΟoaSg-_AaNn0ED5FGltV}&A|"'yjizcJ"_{(A -ܯEKў#6xowpz5"(Pzf,gIƙ *`*- i8ly:h%h$k7\%8'2fk<ă^5<de`dK#ZY3Q, = s7 t _w="Q]ũRp2> ; /j|]ni#bh*rY](MH3w#.b_6ɾkau_r(&Ok`N榍:gp- Xa,B SH{S`L 9U>KS0/yOV/k;7ᤊ 7 s1/MȀCIWdD$da/2giWD8NF~_=Do)H;ߧS5N] W::E-9XH}דlyI#\} sk𿶋(ȑ8޸3E.D̘g;R %)%CtOO ־KX rk`_ ("Dv2 ߑּ; 3fcw8yi4A(tJ _Vv\؟.7Ot&ChA쵴!bna^~hزZcT [pzQ؃ 80 a=WuӬ')p?8=8(]b 2A ~0ޏn|xH~+ gwڹRy`En81jJv5ۙhG"C >;ǯ(a+hY͐3*f߱EOlS6C!~]<Լ> ֩^_}@kL \ӂS\Sb>NϾ0C#3 5^᤿\B}Z|Ts& ((xH P5!al4xc 4ǒ'i 4k_nM@ NUihtJE>t8`E^ ~wld477"0 b)XΫc(]( X-ѢiwdLX8?8a`$ Cm;[6S$. ^ĆK|P7D~vbS#!-ȴ B]x `CNpT2 !BqChN4l]&\* ["@s! M3%6^:TK銔"@ " `#M>vvcMsa&) ?HWT~b#ޑF9(u-'}B6 ]zA>5̓"_6Ub9]&޼̂c?j -rFtl4c=9 h/0u2? @H@H3( Ea3)ED0c#%~R0 6b.a_wB1(μ`뇊b  c%#V*ynO$Θ,{^)*+WI & 9ͫ7" `Qlj/n uAx;E]]gCqn1fDy۩|DQj/;RliNeaM4ڙAV2VLfTW#Zl*h8Ӈ 'l<~MU6'$)g} `@6|u?0{, W D":ut5䶅hѣ1o/PZ^ޯlIoR10rܨ;Wnx*k +A;ۋn[/3 ml  H SǀWL# `$zob3Vޖ!oU@ykbҪ!'pY ˃j&G_U<ѡ o✲ӉiYCt4=1`1K۬c1soqpQJ=v3K3Dn?fàA؍j@bM%PĸF, v@ 9*H `/F, (G_|:t>\x {d cF ;ޡ- y9JE]pPv0A*G88x5`JSVz|${TF!zD <!Y3`84]3H 0>&tg'|G$[Q; L nYcI\P̄oP_pkpL}aF ~ d H;N)ap 9X`S )y &"lCBWW}ߵGbI?*J)DKM@愅AxN#d7NiGM+2ĽZe,E P Œ@ |r)Z2_o NbΝ jwmv_Лo(v6+kFC4H]ۤ3аgh~A ,)І!)DZtn"ԬK>_g>Uxcoؚ%X#h"xN  4]0[}&Wh&+Y:a-[W/Y3QU[5g?%g5KjŽP9=ٰ򅀻ߊ Bc|ШCNW 'lcW7N舯Icb4Gɹ\nU MF~1SО* (#Y JS)1;A8ޙ+~TB|s=k5wt|8⶝þ:Oi߼R )?5;W+~fjh 2B;f;S%TR"JaA݄:s\g5|,z?ޗ QD;R/5Rʦ:%b\W8Ir`sOv'j.˾<`$܁B!]EU+!$/p1lx ֿ$)O\*4`c0KN$(8 *Qb& Dgxt% &g͆cz"0^VGH,:n7_;zX4[@j M fCǻ$YxPpHC 2!I)j7A~ 2Hx.(N|yT6=@~ FaqZUSbYQ9 E]<6p)CwD-$ggi uB6 +}Q/=w4y̍% 4ȉݰ덁9:FA%}('{E%-iW{8j@Q6H (Ǧ# ӟ2$0>D3P 2 ѿH,۷~&10\ aucRخ/||EU)8Gh74{̂CDPkHcVv-! +e #_T X=B0C`XbO& k8nBЇ*f9 < *)) &/뜬4<^M}:`S('r H(M* LGXEA@%!t|nQD@9)Pi4DoV@Q%q2/<&ϰ7 G%l &?!ɟlB)nN7'L H\`Cd%f\Yi';. o=gLw) B 0Il/ ׺I"B*uɎe11n:ZN.,}. a v 2xp|4(YbʚaV51vF6v]MuΏj@{5D%)_4nhZBIqM& \١b́ou( @@0.n߫ᡕ\a0֨Pcp^%oHɥ"َ8]-Q&߻],6ׇGH AgDl`拌I@+H*XRA/P6,p3 m2u2z!o0Rd?0[Go@r1`Xecjև3VgsaTKTk;@J1[r|r᯴iގ c_%I 7&` A3:E60]FU ?Iv@I0ZLb "i&t51YO0 :2H* />A!`Hu;AEt:rH0 PVZ&:kϿr5G_m +p,|$yIv!ʯ#ٍ öT>&`7'g3GBH-I=ߴ2\.ا"vl.5s Trͩ{.%R,@az"Ssōs?7i<0Veb`ZD-cQhWfab ~<k87[_pݹnD(@B7ID,~X A .U(? jLA!&06'V MP~pD%8oܰe r".h5/0x1`+UנDϡ>[Qa wo V̒M$1xt݄X~ˬD`G)\1-]aC ./5>!EZx6;w;21z9R#Q!9K\N弿EUꫬҺbwnPc=?J*_\@0 9x((3pt3=9GV ɑA{/r0S`L_ P]cad ¢Up5y1}Rh C1֤u몮,fqxY/Jb?#.UXW f^>$HT_ptmV6\BY)J䨩F :/3Y@oHaI )H([- ) S?#@tA ` @N'G8ײ 0X}~9B?Ѭ>1(g ʰ}g!];o2տH+O>a:tG0LlԩV5** c0``X;ʐ昽`4~6\F`7 q^+~썕E0dt'\dn8{!m0~DΟu@07{a H[d{U& EG8 ZdفU>L-Դcx|B? ;VTz'+>,)j (>Hk];;_Ҁx4 *4=%!ذ>V1)_N>a(d 0߀C&QyȳѦd2 ŒorQvr5I*mHrmΖU󂗐A2;Hr{`h?sC&=O'(,n'Aː&+o*( `$pAI+/;r508.@q1fiSIPO]s&Pa^(8}Mu&K}8R x *&-ރ,= /x9X`0Wd'oYzy8 Ŋ/\U>Pl4 !4o 6YZ=#1YDKMLCW+Q8Sk 81u>^_Eupar2b[m,7ݷ8wt.@ӈ_`\p90[g@7e1O?GLhN"pĢ"Av.8#+ZWúaw1/b Ef VDuQjkPaq ã{4%@ix҃ni~Y/ͪ־(jЪ߷ۦhEAIKS+}~?ZꪹJ3^ToԴ1a8y^[j`Gu ѿ ̽Q=Mdd`|Z@4DŽS? }%m#p`]F'wj>ƚw!_R. ejT,4HqA8Eʵ^e YCa+]ORw04|a少N=P l2IDt dWģS *\WiڳePRώ^p}>@!);O 1)O& )q[V*DAQCBT8.~V10 > ]t}uQ! gŪP0c3/6cc&0 ֽ1z$l(cl΁&`ůگN]:5Y4/5&d-6 /iT(VNCU0 S07낸ԪA sbn͜uAPew\,Hj [yL:Cx2A2D7C0`$d O&`9"]1N|h3vvŠ6Ul1Q @%Zr @ .}nlEUsF0xC1)Goy`JЈUz%5wxD&0`FAok֏g@b.f+Ч_]nr(abՅl灇HJ7oRR9]9)^MSw* r_jpaA@·Jt2c倱 6^=TC  8oE7F\yڄ云CXz*,@3iP+ SۃUr/ Ö`hD[±#b5cG̙xN*)wmH8zQP}J݂%7L2X0'^S'b.P>;G'r}qf=[<܍B7q4cdYQ(7-XAaGG ;O dU'U$5+){8aЊ_re^¯=9L.CK)|k*rl;bdLq$DH !zFɀ'(#=JnIX}$À56q"~ǘ` 1@1} X65P,x3`h.q8 <;PBV+tX19 (a) EB̜U6E,$S,(~ʉO J5޷>8F2 bn`O9a=AB_b]! %?eD 4wu؆s@V+0ϥnA7y b?:% +wH\GSw;|UK?}Ʋ]`X4 C_|{y9/ 3h,a=9,YgRֵj\u&C8.(@2Hh:gnC|WI. >2 :DVY§17bHj ks /Y, <꾥x[8?NWƨ\eƽuњ#MA`?^q1ؔՕRx|Z E*]YH-=MdFw{r>v? Yw^%':STH,"@R@G}pWєǑAV Pw-`аBpt{byF7OQe(i!@N5%L>@Q3d (ispa\J嗍G`tjH[z3Q(vit>șbAi.+] (t 8r0wYg'` K|1 =Ϳ>ot |CV~]Pf 3:rDŽ'GJ+UdwvH*:_yO R (q@aLZq1M=ak Δ.[r 9m8 eMt$dkQE y @^K_t 0@ti)T4˼q,0vr0,I _<<8KѣQ,a KBAmm3l@#J0 #x( %N@) z!埖 +7,^F@]2@(N85Sa0 oNbP7 E}N"܄NOk${\,ʰ[P~tK[fe|ʶSm0&!@,AS4z$8Ʊs%^ьZ>7wi5=b \(Rw?(}HZwEY(Ȓ텟u[owà=  ~K~Ђl(2|h AE~paC(+8ڂy(2ЎQtтvb7hyvs Kn~ {]&؅s 8z:\W&yh{f>r{$`wP14<^|4uK>20(pGK~ 8Y$+rWa }q8GqK/u0}.-!Bw-?r>#~ 9yd( U금qòQɃ#E'S4`pH]s}6@z< !bM [RYqZIm@1 t.bU=gvS\-X;|"&`g<g+HDA'vKӦxl Cc cWuѠ֢FL( j1t{J^B~Aq hv1Ira`0BA$o緃"Q+b]Z.]J'fGVWU))V :iHT7Oߌ@Uxa:FA}?©ƕ@A|e?-q4ʖ+]А!9@4J>?Մ? P6>3XTE' a5؏+ʰy훨qЖf<cQ` zo3qo ?T5+e[.Iyj_"8;+ ƿ99t <[w:BD!q2XOy-YW%U57]D)cD/OrOP֌q_0:KaU)zmd"#)M3p58j+V[XeNr_2`&GD 0؇S06-@r7,f֋&$A ,?hT& Ixa+eJv'6lA6( =%ua0jt8! `BmL U8Z H('~/'m10W]w)X"@  bgڮ,;$\&+c7s?bŦhyrFdh2SdA{=Og⼛m7hJ%@U8Kp'DY:qpXyzOCH?n5P*Ò=GYC%שε$+`U(v }{`;$0PNvuX(O_j%Qi"S&x ~KEaE`TyMT:]7d1D_l`dQaQWɝ ! N hAt \pydL+ e UxWUa;ڥAWYlq \$; D T^BdD 0pĸ` `jMcjU+.5}C`$L(Wmea\(񁂯}FD䘀Q1`u0 3:4w$+ĸ^ɥXU+DL&PXhK1<*+âsc˛[5^@ƪ1P߆*{WZWaE5_,fN~)|;7+aSwk >fsAԯdt޼lWE;urz]^gW>B"?YWeȨ|#˷}5Hf&zfzl Guc\"^iq+.+WuXolWk{n͎ E/B~ѫW9W#dWaE)9cOawz_Ji:)f<_Z;ybV~&QDL^ͩ]kcTw>1cۇ(DiN\ ;Y]v#_t—SY`Rr MGy/(AP(u0ȶl [/vrK/SeQGdSG'T4.Hftl5F2TvXk̯|J;Qإ{^-+Zߋ6ri`ߋ5tj5|u Di/0,.AE\ iǴ"n=U*W$/ YQmd ^gyM[Gk؎K8CpQN'+͗V<τ`̫E~ ~b*?V^k0.#|TG4׏׫'^/}zs7 ~欞WEy~wu)!Y+XF.h'# '&e4J6<Я:nlja7+)%AfgaZcf I_>läo{ 223>#S&憒E,? >?_Z^%tֵ} *'zw+ 4,-_uOĵY4CR/MDZ>M3ȼ`-bOJXZ]k/w0qXp9DD;(ׇ46 !w?ÊԵ>ʅ[!fu뱜@bdRK`ݺ}%vi- mj\;ٌ?+IX"} 0?'Uo"݂r|trt [hƀӪA s:zMicvsf/{䡭6jzm:z †7:\t\hҥ}}jq*S˻yFc#WŗP%\N>俋bt @n+  /Qϖϳ=吏ZZ[UAGg!r w16S'#>Rq.TVɢ+= \^/nU ޑgqv > ǻ/.|iENt]|#G Iuj)zWDq|濗w!z4&-D@c*A}|b_W1r|"ԡeܐdۗ ʿ>:c\'zꞠ/yoR^NZoH?f]=-z*[ҵEVU|!c< \/Ĝ2]u75܌i٤W6AiY\Iw} |Tīe/~6mW/]*?uw[DwRO)Tu8X Ƙ'ج;׶կZ׋ .H GRc~ɗEJQDc&5ժAJw+:?rZW}WYc1^_l_ ?wZ/]P{> 9̔_u^/}uczaYsw'kԡagY=nga`,~&k荛 ZJ&_)29T-eâ(zw%Jrzj\O딤-z wPӋwRDn_ڥDO.;|v^""wT󾥯VU~%bbDWu՘K՗LbzXKsk~כUWV #ߡ3@xzu tվn+to;.I XW*U}"]բ?hN]!nW^D\TaoO]Je71k,hgA/< MُLf֩ :ivk-O]2UӍ^p b'Tf1OG+gEkN)\lq)az_XWx|rTzV>]}xqe5jv;|xcRze^*f0~O@pڽؔnc/kkVWZ-}-]W~^ocXxֻ[Ԋ [lG$ЩQG7@۱l-H4c#HŠDJS۸|wnZR$3QY3GKt1iVըBm`!.QhؗA }B8t:wgΘpjUNToK~`v\dxjiIV %[KJk -z?IҭSV՟UKb`[3y{Miڷ{)TȤOUHUVkVlt▭rUX؏n_hڳ[}['}7׺Gq34{OFt3Hn7xw1ۿj;/݌Jzj]X߫`uvr-s;ʽZ8 B`Wþ0es;2ٍluN FҺ\!էenlQma>) y{ttT>qFC8~<ŏ !WS))CJ*ֱ_ʬM~ʬsjjaj>a鍠i96Emv2feE2cw`i"|p}lch.˹_~qU}WիW* RA>~]t;b)ˏq&q&|̒{Z߅{qooJ2ԃ )WVR q)/A/*1)I]{#ջja~!1Pi}bD5r9'ꄱ5Z"ݫ_WDRҮ0;;]w"_$KJ0]yvw(!w}I8@1u_֒mjֻY}OXDIVoWr'I 7H)?>?⽛(/AY'vճŶK'֌4:yiNl`px. 鰻Þ\WY7fwQ0_rB}._#5 Eocy6c&ykTA1#&6617>4B*| qthVV߼~RF\K6&[,|2YAA]*m!At+oEFiX+oZH 3*d^Qs.v*o/x$̕ _9[{x9v-;~l⨭TR]{.׹_y}.xݙwzXF!)6纱KVZ:n]plibfaac 1.28<) (7 C0P$#0.2sy5J-Wܖr>߃>bٛe;߳~>=);$g:?GZ_{C3G ߲tM!mԐBK|\m&=Tu*S- |),U)49R:`3W}ඟ`mw?UC~0IF8m1W$,4@,;¡ TS\䬼RD˩Yr:izkjؽzο>.pFX\?  0尔)N!)rG Lk݋%--{u8:~U פC6>{{r9^ {)f|>e!=uqg;ؖ J9ԭbߞuf&HF l*pDJ2UE$Pd?{F~<'\Uz2buIoWʿ? y0I~Lu@'8WZ(z$~ݞac})[~sTpW G7p Ljrݻ^=cC4EN^Qu!EJSG-uD-iA=Ԯ߈鎠$$ XH`( Dn e]*U$Dƥn=ߙx6]>MŽI/Tt?yg^<[~8O~Ml@nfP ]{*o M[욠|EuF`: YwyyS s¥UK+UΑ:xkkW}GejӣqU?5rVu5k]:(~J0s_G=,<&/>/mlGt&W~XL-pQ,Mn=5P1?-\_)@Ȗ/"O2#NAl1_У핕abVfJ:^^X)}VX&( Ba@, ,4 a(P*!)*Ud޶ *]RU.*7|Qҩse _ඌwxm;}|s0ip.dfva{)ρ>ĝraA&aC^ GJ|aCJ ꘒ֔ gQގpB?A)ﷇ` ״(^Rú>$(#`X6 PP,% #0-rzd^uu'@u>_:^;U|sM8KzM0 Mskz#귕oj[7jH־( Tl__0 ^)X :`YacBWg so' BA\9sMp~YZ]U_+]՟@pAt_И2︚*zntVOϿսbk.ZDhA'?D 1+kZt_[|$4#7%_v?}߂R JU7_:{<\|ζ;=}_E'=ڸV-&_V:Z[^VӴkq^^-[ר]}_uxTRz1 JvN.ʲj[R*TWݬWkz^< ^?*ײ}mAFoWJt_=;{)Yz.~J׿VV!dx)Tz|Y,6ڏFoױJП!%Wv6 q.)d5b*l|Z$~>u뗵zzzἰ`mJdwpLQ/8rAkj1>~\ך?͝=V%XPw~՝լ-3 ՠK\A$"=M,m(nDֿE%'!VO.Hԧ w7tZ + lې0O4w;Gc53LK 'zC0kkB'|fcXLƷݟ~>C-/aDdo7̦l5>_^7AY?!˚׭vW^wڿk/*O}wBhkఅ i"~\y! >MVcT;n8nia%ӹ;o/G>cckq;~J*%V+b(ku#A|^:0.o P@g; 6yS[J +~mW }ZuD__fjg%*)B7 QHX2 o fj,>?FA bqdQ*/B.:!4<KX}7زͷHe]kn^O9uZeW-@}y{ mʷC޽^J$^#kr"d^4ɞMЛN$1gKN_nЖz ~v R [RVWe3AsՌ+Տפ\ջ^;^_c]-~$N]ܜ}+*!~W/Zq^+Wp^RMZ1W;;ik\DA Y Ai>jiFDgi*4E#䃝o:%݊Wj=^#䴙Ua}k?*]V\ [Q43 W^I fL_,wD^wWVU7Iʋ+Zv\J?~x_:+V[ W`Z-ֺx^W u^ezW%*|Q4(kըwoW=cژf/#~_]6]/Dt'՛fuOMJ NCOV I]%$v16kUԩ7}u_r^ 5~ND-|`& ԙ2 `ZQ_篍S  bq>]ڿ>CPݛb_2|_5 ܖ <ՎOׯ*bZkՖ^Gw9d*a\A\bMN_5V4-43F66%U.Uy\O6O?#J )#haK&@k_EzV}_vO=N8H|g%?+Cw6F}'^+\RD`N~F%4kBX|/0s/:;G~d7Q7`x!)GDiGK z~•Iim~.j\JVV5Ƒ>/K_&ѱ/2u $ikو 7% w}LU^ԿUȽˡ}a׫$՚Anp\%9DWE֕g]z{iΫڱ$]zUׂ,oSGj{kYjX^KXb3z" 7TA1\/+WdWWXT{j_;Ec[Z B4TWy|Z#w&׫Uի*W]~^%'wgYמ:ʒ èIR4'H)W_oxZ݆+\ ./-k=S6SVw^O׻/aՊ]Y6[{ORr\~VwgUW!^u/Kָ/[TcCF5 ^W_]}ZW[Q#X?^7RsܣO?ֻy`ufH8^%uZ'^b7O+F`vK8`=^kyjm$@.hujY[k'}U`^R&t27?e'$,rK<**Z.U߫IrYW.>ܢ}֤n** ףA~~T9O )0sWX/"%Z!`Xܷsi׮__j2y|uLk[Oajz/I={55Է1}:c]4'W?ZW k&j]vNflv߂"j˱{` 鎜<| e)oC[T^yT$'%uz+/Ѻz_@I&q~[P jg'^z:n_V?7 kٳ:~嚄ŗ:W}̙?ѲEIiﺳfVۭzʦJwTWޫU\bY߫YzV`jݓ6FEӪoa82_V IMۓkk_s#9;B*wUm;NO}Z.~7UZeژt.TK.\hUo!qWU10A}\DZW?\־6KV%_sפw z{^ArŪXcj_K08U/v]7]~_Mӹ~ &*uK( 2 RׯտV.1X&W|GRk-zV;T_'7vvCZzת[]w~K[f굍\Wwjzz/_D-I{,]knU՗ZLy{V_L&NqW'U]߬U*Ҍ4;z_1>?7U2g=ϟW~W/1rZZ?T\[ҿ׷$ƈ[&{)G y/Un3z+x'!N E!3 jl [&Q"71l>TGFJLe~DYv߄2^Oo]WF~D!i)-Tt;;dt =_'Ɓor篔ĹvWWg6"% U汯{ұd{}zr\}jQK%ENtHO}@Q5$_!n/. =]߫_Knu"X$6\W?Z7D>U՞7~i1!*dgC/~߂IҊK~'6XD4_1-wV|*=y_+  IB z,ݔzi_uY??ЎEOtUjfV?-Rտ)/kUL/nZȈCr~rcy~k{բ9迉X( wj_hֿ_ի;0;K]ߢ}%zxR$T(6 b`,$A0P,5 !Mc3qE]KUrB~sk"ߞKOk6~+¬R~%iMonYkt?q)_:j8V'Tqh,hW/x mQ:'T"f m}5@2\2NY\^k9kחV?'Mw "2`l+dd+gZ k5qa &Hr*u%beĘ3o\ '9h<SDȐ9}o5>Zb:?%8{a'KQ"X?\ۋwP_L5]"Ӻ|AWZKHJRԳgn#B-_QLnncOejɍU䋉hg^- NxoprKuE Ի1+ (Zcw"Ԑ B H% D! L" YO\sWYrT8.kj|*μ3fwGgys?Y2Z7@Gx6z>DM7B5[-,nW_5tu b.rw(I'b6͕e.;mWU^ (& PPJBPD$ Ds{u*Uu4WP|ԽOLݢ=Ě{_)/}3Y3B?ɛGc =nJV\zZ3ELhw:I w(_Rtug"_w?tЬ̀3[_eG)'݅)bCیlaV타AA 1~~^UbKO^?]OV%㗜Z+^J*OX}L)'=Ĕiٳ?Տ*OW&9oU/Wj`[We_׫#->[1*;9 _/2n]kBv ɂEvW~,òx=^r1(/ʫTJv/G/P2d8$}?o 'Lah9)"-th _WV>'$ejcb1 ]a#⃷oRc̥PWŒ6t,*%JZULka8 3>6|kOE\0} .FN}(tx?,3ei޽-w{_(pA/BP5/eTb;SZZܺTZ뵕br.Uj+xWH{)qcw_آ\\ctz.\xJ肛o @EbOBx(QPgA_1IHj-ʾX82Ӡ W}Z+{VVkaW52{{$7&7L\_r<:?m@14yƍkkmxoWx"!-B ^mP#~׋F2F6 g5y+A3Pp .|z^WzJ(+P̔!4|# 5O.yq*q/ösT SBC=?jPVef/c[i~ ~v9a4y8hМFaNTqnyzXc6 O䆚-J[Z"]*Oz}k p32,H^cA~oher.7)T6sXP⍥0MR{L=xOK}W[7'ͳ׿WԄ6])}!7N>;hy~_ɼk mffl.Zya4|~;[>U>eԯu8/XҭtTīz o{'zIX׺s֯6 oʭ[X$sZ6t갿GYWXYj'ןS/Dͼ}"KJ_oA*w}B7x~?V%\ת_Y=z]WW+ʺ,GWIֿZaj9e6iHs/I/b[_{K]Z~ե~;굩LcVMڹ?v+|]]׫zjɭ{ջZ[jo\\Z\{srj~Gz-ˌ_Y%W_|w7!/W5_fmꉔgU!o&Wz+sUx$Z6|V{WWڵwj~oj=ֿ=iH8iO h@%c%ɍF ?J`$۶%Z}z%z̐fw_ߜ}JKSkO=zOV=~yXY\wOעjמuy;16O׻ W-ZsQ?=y|_z2veo5lyYzࢷ]Xb})EOmIJZ޽WY?n%?w%W\cW]u*O@99UyyhuI]z&[ׯtI&VYYZXДz*eeܮ%ZKO es-m( Y뒋 w׫#'cKu~/z.蚯%!}LW~-N^~עk߬__~rZ|_4^~+/ŕ_YI~Z嵿!iOjA|3Xz?~Kz*ݪp^B~"v3AJz fGW+Εmz[׾+~knV>_~Zwb=0Vtm0#s;+t;{_K/t}Ud[WE^5F:miWpq\dK^YڼR.k['ީ>Di0% ?Y%W-_^wJ_j+U3W/?uu,U݌\]N&cjȾ=׻Xry2ޯ%S:p 9D,%N4Gd] *W -r:Zժ_׻X|lmqKv+ZFX4XQw_64p3^]|WV_wWTJ٣lN :C\V 8aZTw`@_\HJs\o\S`+,ݞDW8gNg׻뮕&_EՒzTl,8b.|y~( s/H`|'%)%]=h}!g5rG~"4=..vլw_TTa+ɘQNzWa A LhrBA^9뜟`"[KO|h> YiDm.]7jڿv-Fb ͚Bኼ 8 D 5sv7cPdEz~^zzﹸ. M$>:6Kh3cLVHC&l9}NcM^^E@ӴvC7Wz=eq%g>j>zM÷++G =?~ZrUZPWws|N)ּQT1%}OE+Ɠ6ֻ1԰ z;*5D_@^Jڳ/?!?=/纾wqGi.`׻]}}]Z"IbU׿VF~F/c;izY l5={24]$1.WڶOJ^UM͞&E}ewoCF[L mZz}akn?H[IZ Kd"~G ɏ1 6rAM:D Kzw kuW=H+er'.J]]@"Aj/76#x\~9Wr^XO\wk\Ojv巓ϻS+ӯ}D$Uj>~}P_^[_k)u^Y1/-~WUׯ~=W+ uՋ{*Kbk[X֯Xժ湭TnKʿ)=r_V]wIjO+znjzy=_oֿFFFNz>R/RbI[t^I~zܖWZW_Uy??~]kK-Vw^%¼nV+Qp.߫nfO74?{U~/<._|e2DIݫv-e$+gY'z3D_~bM#]/˒ &^Znn{ ɇVwݫ&X/N:cl'n_\M^Q=a:oaO/,?p( ~KEz?fJtFvq蟗hWwwo⫈kt}8u_2=䞭or(^?7 {5~ nxHl) r![)ػz;fZYw^(@{O۠~OkѲ^jBH.ߣ"O\Ow?Id݉vjKS?%w^'()XWEs&* @P, A0T(U  Hb&5JT ݲVEEu/GI6wKHW~ŧp_|Cj2tWw7{PHV9v?OJ Z9N?S(qeT ~1۝|}R]G'zn,i8j}i]YTD9L& ĀP,$3B`P$# s./4 Iix| ݶg_pU"6ֽ-Y\L0S~wSmUpv*꬇,1>aPI8X.#Ui0_DwMSFYep4 YS~ 3_'4&Dҟ2s>ObxP8$ BX PT(& !0\ֳW2&$*KkjOyx7GNm~ז@}WL8 6&-fЍO(Q1WDs7f 6I96قYS@-fQzA|%_e<.N: lDn`vT^| j&Sp0:J:2|CۖGU"(a Y `J BA3o\s/ ˒JH^e^ =Go_8PcBki̲ ɤSqEߍAY揝}u%ktzڔ-&20xD]r p6WYDVjq%>AkB+$y+ogV_8JV+}/am8 X &35BD0Pd1z{Mn^qXRC7O诉iv e$_$峥f{4爦𕷗Y __S}N=?}W8X+;yq)v8lD9lSZ@=@KD玩C+³>hҿIu֥iZQ7k{Bʥ KVVV J!@X S$s(5nRRJDtmM?}TWĻ8xD֟ۋKEo~,*ڡ#^Fg/"烐$ Tu-Tv+3釜]saǢW=Ɉ>"E{n/VNfO5wJ99beO(s bXh 0!P.^Nx)YsV^KU;p~Hk|k/Tk Ⴓ낱JS.K_tL┞?Fگ"qXzk:W˹ʞ͈mg{uN9pG{Ʉ?ey%T~aҏGN_.n QUgSF,TBAuL_P,Y=zy/륊nVYez{Ue/Ij)۵}H/\ߘW~SإZz/)ў_8}+ҷ]Z+ut^Uի]*/ -XKW +ջ浊OW=kGHICu˻_]Kj*ֿWr<* Է}Vw#ۮ"o wDcD'WH}{Cs_W^w%w%^ȶWh.[_2YFЄ!1A^_!rjg y{c='?=[1޽zu?]ɓ^>_׻1.V^B_|ފ3EzpslozXzk0=/_]f}KWw=ԗT`]_~Kb'ݐߩ^Fs2GAW;ey2ƿ*o9Wz?X/<]__rq3yi~j4f~iASFKg!=r{.T!Lk_{Eeֵ%|~~*IxI#~w;퉫hO`wJ'asqWbh_׫^:K={D[tMz]fHWw被((OHFwA1__㿫[_/:_Z/z/ W݂8r޽Xﵬv_)=^^X~n4Iw'+?V?0*^xFcJ>OR((߫D]zɽ| z>)_ׯUuį]~oȊBXr^K^ikrrZ_\[xj"m}3*K^Hz}zs~5~xh Q_{jQ]IWRyK{^ߩ7^WRC4ֶ]RW,{ާN`+oKa~Q%w3hLRr!#IyeYVzrZ/IdOGrS_BޞY2ɽ$Ex KVG.t _V+đ9VzI /կץR\任m]`a39%SVr1[սNXz%ZgG~^>> O>(Gjz]X&#rӿէc2:%hioói=S5iCT[T)=]~>dhO~U}m-1>z.Zն˾!׻&).>S5_/ ֻu3+_~FA}m_V%>Wq/ZdR"qv vcjձ޽k_X=rb{sjO庯U}|ʖ'ׯ-\ԶRIt1K_^WWS_j~%\躼VX6]WWZ\'. {y})z-_-2h-sWcV-vo$)f~_UTO}MrWMW2ZxLˇ#/v|jD~vN̥o:lvAv {r'Hk12OB(-3`S{ZKg ߫a~KrYak7Kή빯"E⮼'/M~ﲸԟ=Qhݢy{ZCON\)#dq s'8!-^۫KZb K5,[DzR~sa \U}jY}`Y~X^\FI\ܷ^zȷ(WZZxE\ob+l|nd7貖KXa ]MRWY4ehފ[X;UL-syrG5dU5700ժG?l׿U*z# %ߓwLU-sg{[+h58^}#UµzZ`Wwws]Z("5~N|9gAwK&ﵛh=Y'q B; _ovݎn־5^_P;U*Rt)j9U7EZQVFfa:LWE6_cWBGwrZ'En.w*z/ڱq]W]jzo/?WR߮_jukW{;_gu0,GB` ܖ~EW։[RZO,<8?ڱW[Mj_KXժy-/ϛ;ֹUM\ߢz!٩t]wڷ`41%'ܷ7jGhOU/ o–z#I}w+~]w~%S4#Q]hO"qɺM0EsW+[\ % Bb+]zɏ9{&{{wWrx"r|~.ܗKevWm4U$5tֱBV2Ͻ4U .{T+;WQҡ~bY^b!C{zovD'jkuҞ.0C2M2[V5|da~~ 3^ZcJ.^y>K+n{i6Ga-ՐɺNkY;VKF~][k/DnQm$~Q2v?ZlZWߗӽ#z-~|JDyu]}!=V\W|'^~ڿͷWkz#~Iu,l+ aXh A(*mk[kUJM¬Z_LM|K}tFR|G{8?.tf4ۂUkP+{;oz4:3Bgyxw3ӺvTż*d 'm#}֧KRzz24g % ä*.Pv T屹'Bg", a p b!(% B@Jǽkv"o7oQ7__xDGwz)W QF|7wҦ96|P{jDx2W:TsNΘ#=Ϳ@dQaA٬9_t9;z_Up.] j* ( ;yaƬZ IUnwAmJ8${hm~cTl#@,$ `T(& PL.fMzq%5U WF.K|ˢs]]Gr-g`j0Z{|j*kM~ԧ>'CiKNoң|h7wF8JNLը2P[EujfQYy} __,czߊFjjbR2bMA-B.–m5Yj, AP$ @/]{z*E]TxIϠZ/!l5l~Y/ ˀ~Ɠu) yׇ{١Q8^z\õ?cIKs! L/ZOrv|{@-$H_ M+.߯uNnkZ/6mm=XOVXvN,i JIfLɨ(l @L aH.!ιwRRTɔFϯjtQ |+xuՐv2ܥQOmmR״@`- m cuqw`oӪzN|0+ %,fOQj .ͬʠ9+icfBKmdE*c" ,ψS:5E&: qn(*C@,BP\$ ¾ҕꦷ!*RNoߍZ_9.a~_F_= =)_ e[q/ky®%8 S}A# & Q7NoH&7 Zy^NK$* `X( D0P,BA[L[)/$Ib]ߐot_ܾ}}=:^5Α"]|y6MR D僣-腳YOB)G~5 ڃA>WϜkP N`>ΐˋ}CN}aAXT@W.|hfVƕ{*d e$o=o A }oW{'"տVՇ\V?K֮:Ѱk_[X}z#9We j-W__\{w%j^.~DU_vwڤZ&.rڽrhv;H+oՒڵY/Ѕkվz^z{3Kܾ.Ld^V^Os|sMfppwB]$iz^J֯*C߫Q>nUwZZzMzfve77߇:4A& eQ'uKkK߯t'I6+w=[Kea#ߒ׿{u gЎz'׻Ew+ѹx$*&Urz']꼢Iz,T_j_Ev*R/~w|yoTvRn\/VwW^NuhW7rZ}ReZf>1s}WQ<7BMmM9b" `zpKj`Ywv =iWڽW"? Ch?]YMzw&%eAzԘ؟hVPWպ'</.e_ Surz&U}HA*rЖZջ\}_uu\uuzvܞ=EcA$]-^ Rɯ|Iy1 dCfЮ$:[\@ĝ.n_ZDՀ)XV+W>_j =z/}MO~^O4;y>)Y\L'|bjK뺿֥_x'(brk'G)5[%k5]yrѯk`};'٥LzuK篌$V<=b ڴt_Ca'͆D./֫ԅ7^a+ڧ8FGᨌ+ukX @l_UKpjHGֿZjkY~b!͵.4yטF,> +3zVvcXdfW+`Y]U4JL[wY< Od\dLC.>1@؛Շի/{w^ ە|s1=޻w)4//Cɗ5q>I:[pwVx$1FSo{x(*:Ty75(݆^"=nJz'8!(_~4Oww]4/tVD_Ld]/a|4U`(]|}"zԸGwv̢*Ez<HZ_BYW^ծ\vA Jsބ?K_!jz֫׬wbeUWW\y=k/DW'"xH.4=h}?`+}e%֨Yc|#ꉻꓗȿ^keEsz^vIk1/-]a('Uz_sU+uuEk篠Cn\/J'WVܞ/uK{}jlw/V~߫wV`uU}W-ܵޯ1ҲG仿K H#]++ X{y|U:V+΢[XF`}o|֫ʮ"O.{'%~x-Wc]NB4=jF~nzC開䵂_FN,w-?%X{&_kg4DRP(Z(ľwKYWM[p+CT='g URE#o~J?X$G~rb6n]2.|v% !@)}` 6cܘW_8vSЮk/j͈9yݗ$3ث ONϰDPn={Kw^H[wWOU;^XN4cDO~jO.oAkٱ8ɞqߖ4WʹUGlՊl3SZٴfw} {9 k#>X|P~}]ɬA5Soe!iDsҮ%|py<ހN~vjK]W'/~أ"I}=*q־WR3RעԖ/k/"(V P( $xC$]LV[5_~#Vm81SWi\d-#)yKoɂ~qAw? U; v{gi+=&#_ wTխ{i,DȺ4ߙv0j01X RAm>hJκcD#p"J BaA1,$1 @H"~_=fU]JLҦRHt_Kx ߛRKH]eZj-5G? ;;9Omչj^^EmD+a5^!][=&csKΠvÓklz!0bBXAKap G^*Ԏ- x%/^3=>Hrr[v34i kzvǎkE7!tުntEi I;Ω!}q8FHo%]wv~mYA PЦ:oAuy#)UOqRalHpawgѥI[py*qYw`ZdzإR΋nL˾}u7f|eIbܦL `)lY+'!亹dK)w4J%3ûL6G|th/+}4X\$L4fٴq0^.4ѻVmH16T@1_.d+ ZvMF7t#a&%;)$\$(e  " YW+9S3UttFDl8}}p\rPM [2$N( T ޅn?~Wwԍ^Ha/oPBD$v(d3YՔSK0΀5cZjfzyxl$Ca^miAE 'E)(#Gȅ1dKdpp*A }ס, Ҽ^5W_+]/Mk}]ڵz+kU.:_K/!F윘KVjO^YtOW꺻_Kj_^zuqW/I}WOڢ9f;_hkcW-TMk|55+ nj#{ jzr7:D޽rQ#rUuDyy\?5RDz.Χei]2YXy]=Ցկh5r^LW'IS]U׫߂N:tMl'WްMt)XPZzZZ=e__,| N.ᓕEU P_g?^)*֮U .Mg?_heoS8c> h.-?އmww/ߟ_ _*_#_%3~^c-\+ՊvU"cڗωBjbkޯ׿W\y A wu[?I]_Z\W?Suz՟~'Uݫ׬W|C=GQ3W]~}-Z^WU>_DU_FM䰉O U[~ע9gz&^WVWU2TM~wwˆ~zUݎ~W~ QDx՟K~O}pVi=rG~bV\r߽z{-ҫ֪N?A}ܾ)}bVz/rGj]~l85Y}bkW8;LPb*e lV$y=j4NG,/tlޜB_&/}Hɳ6OoY=ҧc;& `OI+|DqO&Y2/'B_*U{1 h6j}Z;VՄ]zZ[9 LtzoD5Z/E(%h*3իU-e~[v'#JJܷg{YRt3zZOz\߫nͽ\]'OGwVUu`E]z3"A r/%V;W;j˦K܂^eoo\镗Z)nVWҭXjb5=|dKՒZ]:_ 䧯]I~]$Bvҽb^"ֿWZ+:m<}r?7Kr˹}]'~~Msz}߯~b6nDW2'//Rʹ=ea-!{^!K keo^o.֪W=/UZ+v~蒞eoG¼0_"mzZXC]/B>zQuwWXw^ʽ+ey Ɓ|E פԞ~߫^w멽e?Mt`v'KsYF;/KWw7's/HGz{><݁}ޣHj%אׂ)DVMR9)zި{W]_vqJ⿫ن\GcSw|)+WP${A HL_~<)4wWu~^IwwK~(f;vXXwkW\yսj޵~ڽz[m~WuE^/y=ev׆U/K]ʩGk]U۬Pzw$jW׮ (jJ,hUW闱ݏֺzW Z^e!8I}{b^_~"jK宋=\Nf߮Vb)-ry߭Kv?9Ȝ`_n\ }yrmwm=1o!IVZ#_(@&uqK\rzWG/'Ov1Uo*ɋKuG]߯W\W~[ķu-\ یח Zy)K_B\VwuR /h /^ז?V8FN3^b|4_ \h ]?ư1姧wW%WR׬]Cgt'B%4_RO/\&'qծT(2 X ]K*McYyjWYSCSn[oυzUE_ gOfOjaVI";ܮgݺhܺH򏦣kD,OR[掺f {b/aRٗJ+j.+MyEGWYWD, }} }܌'{?7qL/Z\ppphK%o,!f :x?D<'KԲ`EYTYp7f6G~}8r~Icunୄ됁\f,k*jp$jgLZR,ɎsuWhacKhv*s * Krem+  ™ԐJUpA^=V&g| =.xu{MMَ1:3S8,M,)eUTwl|{g;%ۜ2r#Вb۞_kvINU!fxMF0v\LNϢ>qW>bTR4"SkOֳB& !10?u4ln!96؎IWp*#v^}@mcB (Ԉj P`,$ PD* Fb*n~2ْ$=9-/wqS__&~DRÄx?kgQ[uȣ5H4M R0ʓQhNm0ft'Zű[0{#+gTnrN #&$ A0H,$ !(B" BAPDz{z+&7R].R~ܞ[EoH'fڬzֆ0:w:0d5.X1KusǠqZwn. 7P\ȧ{*a|wT%Nňu*ha/ȼsu%V5u u J?ϺD!-$gGq4:T\]KitMCޓMl[5ippA  }mڵ~W'w^R/EГjKw^[io˅kPן'HK~*Z >1cbh9V/{\oiOķY?Ge׵r_F,]yMdHKտVV}j7׫Ozz^߬]_Ԣ?j= PWKUaKurzՓg) A *uKJ<딷%kڵz-wb|5zԞW[kr{V,sܖiF+Uy;h#߯P߫cW]DRzn?uZKI}z".Nzwi{z{{~ˢ.׬rkYzZڴEz]KZUbR%9!Wk}j/䞼֤`bM'&hFOZz_X߬Qw^W_5YdYe_՗̿zqTR /jzGg__ڴm߯_K/-v_F]_whX/Krz/_"dcA1/M%jf~d*ƞZK^W^avRz%w7MCW7!k^de^]]]uh~>'W5EnU{qӫwk_A J,~{;פ^蒯X%{urڳkbY'vʛ~JXD{פפrZ2ߵת䞭z{URԗ%]Тߴsb֬R\Vzjބ-ENW~`ws[_~_v rtV)X}T_1i|׭w٤oqR_wz&Rz.RZ-~?ړ(޵Tqv. W ?|^oWWM~{*Eѻ#W:>Rz#MUg%nzk[jGK,^߫W9%֊RK^\_WwrX#W7>[E !8{zkWK|"7V_K^eW5D]ݗjZ;_ߵUծA j}ס9~_2xk-Xg*~ynoT\UWzcr|LWTR}+j|OwD׬.-z o֪Y߫׭D5RH֫֫%r_w~']+E^~wIYN;YvZZ!J/ݶ_4j;Yjrʪw^h ^JJx_ʽZb:w~~{{{n{{&4u:~zRe~MWk\޲UuZZ$~ }-k%n/͔3_B.ʇ"->om^kbޙ Y} ./׫FzZXB}UUDy,~%*8v 9su}^Ha׹u׫\.V=N6Zo4D?}ZVI5Rϝd*L&H2$N":Gxo>iXxd(F'OӪ^0>?7:UT*AF'fyf>_ئ$ASx^Ul`ø5qNE)[S/lNygW\#-H)_7'H!Ku,D BဨPL( BT"2 0sߏ׺euZ笌/%eTwCSOKulE RAuz;m=?t&[Hc6j8)iZ]m8Ï8!i`O[PT|,"eDtQ9)teBk4((" (PH*aL*9eUEZTr7O^';ʎOOFh9qs]Sc.c(T)'W|z-4bM/i^8/;0 iF˯&( BP*  @P$$ aP&1*~u"꫍亩Jn.>F~5q&qhO\ks6_o(xఋT*hs|k)BAuhMw\USb?K=^VՅ:Z&Պ_WDz꿊WV/(_ZՇ =\߹[[`#j$^޽]]ܻ4؍Qj"ץe^=N+?WzN Nj߫IܞMj5/K @zYW.\pWפ$KOUb:ԩ{Uj7wWUugkwY9okz_=}_KjRHE:XSEߢT3OkjS޵^zRz෍C5mW O5K?hEX#mm}bѠ׿!4L'W[%BmV\עz֭ZVM;R,ՏYvܷ^WVZ$QV+О.5H_zע4V>~7[eHAtO/О^kbo_wƫv^E}]⿚>iwUX[k]'/%z&_٨t+SKu\Bznp^*Rt?Тgի߯W|SzwկV}-}++wk;UzKkݮ׻Jne{ɫ\ծ^潮ֿV.zo^׫ՑމrʽֻZ=_^rWOVZ#/{EnO ٪zs/FE/q[NRz+.տEJ*Ќ+~~=-rXL7=#W5]zDinq7^KK5֦HXzOVi-I篇Aߓ'GլWsK+Obe]$Y>妇/^}TEq[V+S/|ZZk{վ'{ۯ^勵Z5I upn#kcbVkU&k~%KuR|_wkjrj]k^7~WJݫiR-`KZWy<ԟޯ-浔~]"uĦ_sy.BZfcu*wu |rNF]yIwKu2z2S\{QzM_>A'ލE6vw$vW^ ._)frKܷ-bꤿ&\ވ}pMC+w~-k';E{*T$עt#R9ڞzoD^a_LHߩ_/~^*JRni=Aw}yPoU_}-oWW^woZ'IUy>ZZK^i}G?`U+READ:7jjGAJ?MWie$}X}WipZUb{ֿ]VzOuRwŮ]ȩ. W*n[Z=iG?ɺH?^{[WP[XX^OU$Z-},ͬ1\\5 ]:W~WH~~\WkzNlWs]\DvtFW?W"_|WܗEin8t ~ЇEy}rb^|˲Gz6/zMw茋q]z^RzOrQwxε*D]_'?踢p~~A mw%~Dv_:~}U|2ʬv^o׻rZNU֯_>^^9ww=Pfwx)Ww%urԊD)^bczD`et_Jzz[WKS4OoX/S'ww֥Ջ׫vՊ&skNI2bu~d[j]k pzoWww5uRO&_|boDrw]n.U>k>U=lܔ_q\޲Y9 Wz˺תuOWWDxBe#+~3YU<ռO~~aՉ+֥y.[%WY)yW=(oќ]~^#b&צV;nܳޅ7wpkH&_˿FhOɢzԞE~^ezc AJrrx^|%UjN\OX^y=ZK/Ve篒=rz/;rrׯ d,WK_'һܩޭ~b7%֋/U]~\߯W/wڷz'~/W*z`v+_]ެWU_֯oԵ_zz˦IUY\|A깩YMOZ zrWVסՑ7kߢEWw/E~7^E-'zڱ'm{m\VsU$$~5_rzOE3תLlB2*_зt^\ލR'_la%7BNoե=Nz_Kk+}uM篫ir;gb=AjwKNdЏE/jڷ}})_ʋ)Ḫeq]ǒ[r^Y%˪ Z\^5^_\կ׿^V WSE\ܖg w&oozҁ{Y~M^/-/WzV+ oYI:䯺[ֿXV^^YgU߭U"WuU&oDjw\Ey.3ߎO&Ғe,>j^_գzע=ej֢.Du~|ԑ-*Q/7E5pIu\e5Z;wW?3p[b%^j3* uIt`j_1ݢzEע5z?KWڼ(( A`X$ a ("BdQ ²~|핪*UI2*T;'>݋äKBpK۬ J֟7!IQ j?+ah ͒2ֲюz/+7P'wz݁wW7&v~#uؚBnڡ`gAV)ŠiP8 'S4j$* @Pl4 PX*aQ T"v7U*8*^U8C8;n[ybZ3a2`$T_9듚R܄M| YU)Y=|yFYe/ZЗobɎn\dUڬ` %xX" a\( D`*q;Ty//|BU;}ma'9wuOoeN:令i)pY_/LNܙ\4>:%INo q潜iˌ[ {c]49g7i2&6+GYy;vLW~E(* @,8 BTN 1(*'nn~Nr_i&ҢV]CwaΜTUs`q9|z@x5*p*笜!}X=)EK^ A@{+i]\\.7pB"9T(*+ @X2 BP&! PfJ|޷Lxׇ|hvuxf9"?Q&_@^1wve@Am߭f?E~wᯅ++ؔ68ͫ8Oe6B^)C!(^b k8(D a(PJ CAP$ HaD*C7w3s5zG|Ѵ?t&|6O<޾X~o[+/{\Yi:TNvI@M>`!{-&o\7kDIr\-V@I:ԃ_z?5iPho&Xb}_qץ>v~urzM2MWT^?Ju˵z^^X\/8 Uup4_#mXoi-zn.Kж;E_hw-~< -!+'דs.0D;SW~zAW~W!WzOEjF9dA/]ֿZMRzjj굩}k딞/6CWӷZok__K_W'VVֱ֫N^V^/kj_CCX]zZ]OUD՗']OM b.z.'K5wW-{jՕޮ~~X?VIzw%׫z޵߮jz]^B=e.]nVuUjߢa-5zkinc./׼-͋딞Gn?I+^*ѫZ2׿YW>Wz#]ˉވ˹.9+OR_uUܗ+c1=֤^*ZA}؏ rN'Տ/ZkW螖OD7Ve\߮_5k`z"/{ۢ;ץ_WXrZ{"kќ-y+]z_Wפ!ս'_h|Wr\^pǸW+U|uz/.H/zK^ՂԗZ,Jz"n'"]}\O=G]q{HZVwY+sܛRKZ#k+VVT_פg:3Ww~]}UݢZzO}TYfkG?uz_ڷ!^MV])._FQkh K^-^ջKbG*EZ7vpAv_'G7u}/{]wڳ׻Z/׿^Z=5de_75~Uܙ+QU]z~uw^_~Z~@zQKKs˝zk^vKwW/=~{ۖb_嫖֫ehj#XJjRb]S-WjޭW!'BmY z4xz~.o垜7_~^/W'Tg/kW}w7$/%r \|VZtZ}S}SHڹ^z~z%m+Z~wW]z#(4]> hw *$ѝoE/{\ס -A:W*պ*u~'_r^sGWR@"( P,D CAPH.@D*!K㏟R˹yy񦒡s㿟';y/OI[/>%/W]<W󫬠C㜵8:7eί{9>; \zsqqdԜpẼ@:t"d `X* DAP$ BaPTBqܬ{s+'f}{9r8#Ίo%Cr74 hkz;<j:k^UQK\brBxл҂XlO "wLT ~7j˃ oսs-pbj_!|-|/U=qVRDׂ? I wmp((% b*" . ϝ>>>Ty+\*GA˺9=YyqsIvZvmGk>w_.ĽG 8%|쑎|\(1En_Qd>ǺPbݨi/׵rL/qWKʼn].fU8;{C(sDpPrF(ADd$!9L$*" A0P,% BPTH D1P*k?/;޹g5uz2m; OE΋ݫf˾ ^=p J ?/Ut20Ε$儐8r= , @, BPT(& DApLBgί\ĺhDţCuZ.zO7I LBU__ F}3? Q {*[/[dO!lt kkM߯'/b^9rk#U~)n3_{W/UÕz_r{ZOv^/z%׭~B*%v/I'_")3[z/*W1ο$ojXO߄LL˞1ljjXX>bߖ^kkko]׵\L|frK=~RͿl,׸bG;p_Mf֟bHbRn`E } ʵV+Q,Q~h,/5X vzgշ%u_ltΡH"E"jy߿'!" Z VٟB_hv i6ꪪ5$nj!%T{Bv5/((;/4^)S[.t׶ gmؔ4ٔpApNKbR-X>%/ի׿^{ץDR%-{-}̜u7\N5)么 q^s/׿^{"6و G%Rߎ_~ [:d%09 ѻZ]΁"a93Qˡ.2Lk8JgOi57wQ3// J_'":^t}M~ `D/rW9dC dXVNrz!EoԮzL\EEo/Ly}]v$sA uYDJЯ \wdgY~DW,?/Ӻ͛ x~L_BV_ )a__lQד5W f/ΊQP7cwڤk .茲ڊ4l?!c`A+'uV,d|^gf-j;'0\6sbXN_758l'Mr-wuv_S5?͏'邒9ks-'Ӿm/ G1s TTz#; [LK/hޝBFQ `h1GnOkAֺߠ赊VjoCG^W$5#r}}!{`gƲcD'.B7I&O7/#&!vO5CIֻd^Il8m+BFWZ!@^_ݪOEwMW/PL–Dف(UG{_L/mAJ}3qRڷɈM4*]ׯeU9c>S9W;W;_*_Vbk}}oK1,%Xͤ[?W^MRU}/NaMq&Jw6 >n>#O\ZZ`{%'=UK;ꥫkRݡYV?d>W\Gb^et߮^r{uw_9ѠG;彄kjDj·?.go5uU]y4*BxYd-qh {r3iסuw{"$޵^5҉)B6.qdž3gvj|#Z9/.S5B٪A]h~~\t}_X8`\s5P~O5U=w$)eČTgtXCd/OO|8\{5e״,奮Q k.FbDlz7=uvd7C˼Tf^?_3ϯqaHo nuF *;$tKު j?`lT^\(>|Lp&o}T8`gӰ07#/k+|&a}!<:ZhwYk19`y0´&LOm-tC*A20EZƪKp|WT_FPen$*:[ g 8'՗'>^_DwB'嵙=)Q_)Y~<7$w ?,DIZI#*pV{^Ċo[c` vQsz+\)g$w^Vrg"\W_Ld/rM(D \6rC9? /, d)jzGތ'6\9uw[ױ"~_O]%n92t^Bh?YU{s׆ѓ1yxn9UV8c[׬Zbj٨Կޠ 2o!ϟ-uƏe/~_TҤ&ξB!|VKb{29/|GTPvQ2zʲ^iۀvAj}ZkKҹn׿^ջユ{Γ]ڷkЊ/wԪDK_㉷}7fYǢ1$ОZO^^^e^_v}b/2#gTd+O_Uj{Ъj#Vu bx7'U~Ve'vY-Z=c=u넺ZWz/UwՌBou}׻YWW^_ܶ~!&oSa>boR'DILmf& ەȽJX w-ݫ,٨iy>g 3a:S n6kw)b+ 6SPTh0䩘}^z_Uj/ E={YRr{9~&hL23Y3Z ?}Jr d| ZVW='*j ,Bqy]WȢ%lrem]rod,>At)y%OC`/OTOX o'1 N$-߸mqz@yn^_ִZRkXuc22 ,w8ȈՀN L Ak4u&Q58 Õ՗a]d!7=u!2jquՃ#ګ eԌSpE11Ά/wu*C0$?l'ct%+E x:cޮ:$yqa#L˷tAp  Gb'ó15*_Y?2dW_%]'\U}LT-,ɋ$m-E]^U^7;!|(6(/AU t=bǮ203=,"jaTa TD Bb|{o5ǭaJ7p]p5#~^J*uw|{?qlz{_1p#ɪ0SU(~?:Ԛ d#Ivwgq}<0XRbξ:$x{ZY#8YxiB8DTɊ6Pp( BA1h,% @P& Bb-]un\2SU$ M#j}ܩt.9wV︭V;#ye[ƌ7Gn wfwknNby6Z ڟ)k4+mP<:vWNIη> ow4ҵBiOB-l]*'Ð&*( aa(X(& APL*7SVJdyTQ#|uDut'|On9o„y< ؽ-O&K5 {'~n 4fl!ښxÇ-3ط,lc ]p(L~-ђZǔU. xҿ6 9𖀡9֒&U ;`$*$ `X4$ BPTh N*Ou[]Qư*T'[U>-oo)k?? sk_nF!B>^*h͹0F7,S8%Xz)tU[';yHܶFmSKu-S-<4&_ų;_&6[O V,;i&>* ,Z pL* LA=jOӪM[5^VtHiukmQ?WO~Y]o Gf$ޝ -2vŸ=FbQe0=cq(RR8c #X5~:i۹F_THGWdJuG${2ܲdwڗ1ug;"#y҉8GHxLb@XP B`(5 ¡ 'u%-+.@NO-󯔟F2կ~[t&d 曆$Ԥ{PШ+M[2# 3IAk—~zc:ojthT_ =}Vő>YN90(kh6K*eXyBOҼ/Y^LMG$,`XppP,% p( BaS'dk~L&5[ D^Χ{俻y~OTOVfe4?W!Xp13{ci#?OsC{`\+7)Zw""a < C=kfv|.r1xzO ݦWAC\/k BAfqKF,9d'D)()Zr~[ Auh[UFtKҮﻩceR"z^::֯ׯձܷukO''u OĭvmV'^^_^uƉ's/$)|RT O|W}zKF>vQϫB[RVnN[z^]!N;Cſ |6bdq%ek_}W+ՏRB K^ ~ j5]ZWudrV/h`Br@$֘*y2V_CSv+rOW "{&:Q+4PIYhm<l.:y.O\V{s0PטDb*g|7~x7?|Alڏ+'zR;KԐ!s-IA ?9$Z~Mq gm7߱x,u;m d|1W ^ O3OZ #"۷x[ȈkʽQ1&< ROzR}WܘJ 8Vr!BWV?(Z я.F(<+堑BŊ9ቘ<:tBF:%+L' "Cٜ AR]NRF#lmjy[۴AMDϙzH>NpFR³N/LjKmOh{Ss'y2_u ?}]Ql]65G |a6 V[^:y ` wŐX;QEBFU\P@xl/F MR0*zEIZ]7x}JՊ(ʔ|tJ[?v=-\h_Gd4 O}Qx!v-Ŀ 57u'-FZgJIq TD2WZJ Dd_/X ?_HYef!Iln _-썟Vq.oWVrJnߵ{#ܞ|$:Խk|-F:{e9:_|5~qUll,x Ю!6%vPZ[Js/{ {h½y+Ƕ"Q^Ͱ5eY.7T|3a 6b L [T^^i¾\p`jĝM <8!%a~p_y3w%H"p<FZ2('2W>@Ȱk3^4s<7R{ KO= U)!֕|.-!%HO `XJ$m'K~^"т>B쇯Ew.m?>lgUU}%OO7)e%s C_|%r_L9?@g|Hr0'ܞhH%jY"'o@rAii9؜:oHzWq*o]udFW ^&JÕx:/>nrƗ*u{Ȫ"욖0AFMu24K1*[H 4eO"S.i1 o_([Qc4f7/mVC{,ُ@U1B7WV76MXzC[E6;'nV Mi-wB:Cg+"%ߥ2]}Q]cc x@sUv_# wIu:+WkR.tNBk.6d ?ѱ, 갰3ސfB>sdsm+6sC|ى>|<ר΂y#yiFF, OieB <#F{ё.LmI i" qM*Rj_wd,oO_~6߷Kg̎^9{k u9 {F%a|1{jXLiAe֚ 3U:2u8o,_Aob~߂bv auu4t(l_|rm:˗Ļ=!W1W,ǿ wCޗxh=8A4)}Y/t5zO[S4 eWKEI%.sf20Mq^:Z}o-tRf̾!Vd%t06C◷/7^/Wv~'ezuɓ[kT/(G:Vk (Ao|Dk>BfOsDKmh /('"3hAfQC|2H(1y 7@&lW5z=]w]j# jrdi *{9i0bݘHJُƌ8 9p>G)o돷) #3gY{Z#e ߖ^3+\FY)OAC?>{ @l#E6n{'k*^K?.@(:bbr -zaXq>e _W;'Uc}vz܋?_wiR0(!29!]޿(@דۭڐ@CÇ2WLOŤ2M SsCZ3S;դnCa>F=Ӽ%A ~]zz(_Ad> 5*5CK!.VLDVqSCl7os Byʱ~{/ px֓nlT~hWBy;ТafaF_l#0 = h&:zi7ѺL9w\Auʽ ^_p I)JO|2ii~̪#.h.Pa E5f95v([gIrG9B^nݻ]fDI_H%ƫxHs y7͊;w}rt𠊙79=i1_3QF!ݧgu~)T]g^2p]Orп3KVILv-hбis3 ~OZ+[չcd߬U%ݕߋ}X*`bcg;&MO*pPEozRRcRCගHݯ1`'Kẉ,?r;H eW!)} γuȪKgWɿC$/)R{kL̂:o:nAׅt`Hlh7y/jm'ѺoS^D' /UMs/,)%{}(Zp7p+$ܸo~[zrS1`^OIØOjoDH"ϊF?.~ 0թۼqDPc5^b{]պTwmF[HdZfKEf;1iVi#U.a_>N6V g${?&ZI2bM$k/(DMXlVx#ZỻC>% ;eȗQ5ǹ>S2Өכ}:[>8zHZď9c%Xi3yȑ}+nx|Tdy(P$-^UlRhw%Ww&$T[soIFk9;ի~.J}><D0@b=P |7תԭSZ+ʼG5es^췀 xArȯW_OW~ڿwzZ޵tПʥ7!yc;X2(`!\8 PUtv)!Fndxl׫W;V[-߃*w/ ,3* 44٣$_aq q%p_48 %$0KD,PSX9 ;4\ ocm2Qt*ڛE~:|1cdZsov~*n_-l`^+G P . (Y0`d-ڃbP=s>IJ+W):Vr_B ^'m!wi`?RoMYB gUIB.j)4lS'T@Pb{fQ ocrhGK֮bs|%VqS-Ip |$^Uv+\W8šR |'= Qz\4wePgPw=.@4q4KI )e&b a_F%Ba,wI{x8׀Km`@l ;b ?h4n!TVwV%|]U+v $,.:wgTPV Y0N|CP C+}~Mu[cPW",/+"$e hbKG꯺"] ӊ P,xymJWAQ:"dx׿/'nX4c/ab%8P *t1o [Ȼq"B6nK=b[$ :,*"w/e6%1eb Щl3>ܯwk.ПUq}wV>>t`G3bG|]xbSA: J -9`Ԕկ`iu˽[B/%rXne|dԡovQeP'Xb9V&b/SF}?b<\o5(Ϛ> heUzm+[k-t*ǚZ_ձqgepцb>={ˬGt*Z%$fAc&-~c.JҤ_b<R{n\o_C ݹ:zٹx`!O5~v6:ETTB,YMDkl&`<z|j}f6X`%fǮMuLAnyթ"/gіHS-mĔhĸ:(1+%6'POOsvr~N1 Ɓ&@UxBwۿf$_P@R[~k -ގ` (Gƶ=p0@Z-h}EZF?s;{O6(<>MՋFRXyFz>{9탿f7 'uM0XD z >1 :G  :lduET~ʮUotɻJL bl3jc*G q[쑪N{jcT4:DZANv[<_V_V/dKápcx$8G1_:AM-~$Bpj0[p~\KQcbcmN2Eth*?A,Lb;5c/4jƨ\[:#ى0Jd6?Aϵ+?4=~(1d 7QO>Xzv$Kew'G>qdʶ֙םt-Uu-s%ɿ]zܷVd/)ϠBEaT!I0D~> iESWRo..te VMM8|+ ZQqvrɟ]F1W&wCx:R5rթn7W`eg"Lg&[.8A2GEk~2][T4K/_dNlBWcI̹Zn+Bhmt_O=L߭KWko+`8G{,)PpyCfÜ@ {'ձ 7JVԾjS^9P7zU;+KyO,5>)fr~5O9hZ`2{i#DT3XB4tMkB>ϟ. O$ q] \{V]z/RVIFDI '9wh9hê#ߓ1D?>iz wH_pQ qdCh`@%[İ@lyY/:N\qeFI5c _nMPJ. ι=׭~VWMV_8\-I#@q PEG]$Q`U]"VRF7ӑ/+65z%`%_ nZ(ɽڨzj)>ֻ wI 7 f!%a]!r$OקKǿ  NnxO@H}zA1ģ3>[뚅t6l> Ah+k|2*( K_s`E}x-GX$^ġapQ b}t,B`(1FuW~qrMgpW%+d}sFkmM} B`mS+p)7`/Я_{Fm2+_'keoe^\{؏on|vѣ!_i 'эsc>O'V^hc*>9+E OQh¶lx,dlg/__1߼JShC 8!ttYqQ&tp5lܿMPp! PR yXe3Leu0}p]aq Qgk ښ6VfiVgc{>kW)zFRq+~Oy}c+j(BJR1,j0U[LgޟֶR S 0: +xRdC5+yiwcfdkoI4J\<:*?"2/Nwғ',2~BfOp3'qXu zBr 2 WkNwE{?6x{կ+fN/6I *j6TD \MBkOUz'hPJbuf.2xbBSAJ<9Ir%X~=/20ӳ[ xHx4zq@~Cߍmv_N ْf-~gaq#ϮXzk!c~3Mc=CO=0wp^G/_]Bq\wqڻoF_M39`c0{֒bvÄ "~nb?w0čDЯ.Eu|X aC%g*u a eٰo$v ߓM e$!tVSʣH#יOL8Lno5yYvD2r}7oJ ΪqLAij7ʿ1~&-;>*=i&Y6uE!4mS!vV Ng5B[5@' %/* T_-oj$g5-?f̛d.2/V'fJdvo^SO,i> "WCXeG4ml$X,Û<=6Hi1~>gO1ot̟pF,ZJ <pfuc~@u5;otLJϡcKa *Kve}\ϝݜnSH̊,6 ֛o֋2Uϕ};z2ˈO_7 &V_% ζѭ"oGn:^K~O8`8*zi/KiM6|㩢N>z]3UѤ\O*NmM|)8T[}Ofg ȍ_A!t0{ڼN!.7o!`q20qd{f:AqF쿵LjF}y`FlV. GTFQ0_ =)^_T#hKLԾ9VGuކ,%VݪA:m~{ToM-K"ӫnj|޷n\r9q V)=ڂ#@Zow锾< y F[b @ɒL4Ⱦ()hxD!xeU[&f؜wq^p~z/׾N'y=~/[ Zÿcha<v!? ߾~v9L a˻kkJZ[4" KH%ABZ,tQ'Te8nIA|nt;;~҂};-vzXUgǗIUbɉilI:W-X({ &B`,$*a@X0 #0lɗu J)5 W{?Y>cns fZ0wU>Q+4sOYоX4//vbA_7Ŵw=NkɈݳY3 Bp-ZD wx4a{`իC [:*sbN}F}SUHLS_Sh˾+y, @P, )@PL " D}frr~rO&\j)OI+&Nz|,l8Yk5j-}Qfn.3:f,؋uaqs>JV W &E9H(;f5b1a}6 E-I& 6 ܁PS&;o?q}G(*Wz(ӿZSu 8,$ @,( a X #Nr{Uku)tZc*s:o_֥vͪ7Ϗ$MGH5_?䍛couz$Y-"q# €3T4irR[_=4l%wUZ)VԲ0c7ʊ1Pt);e]W|:>χ7_*kV0a0^6LގvJ4d8[\j , a@bX(&+.j/yr]]%⪕Z/=𿂿F#]}&]5>+Ё`b6 &~/JG P lքe9MS'AM^YOÛWy "ވekרRR ,:.M3l 5k@*jǰ/jQ =d$3v؎( 4H0pJc@, @$Bawos8IUˊS'C+>{> <_?DioǠ4h[O k,[_ X6+>#`QN-zJs(='9^y3G)@ ݈S8=<-m3J)zj=Wϗϛ!sM0seO??*}?r_C$,aL 0P*" ~99w*UeCr/#/Ҽ(N2,M$oqakܾ}]ӷ(SlkWK깸.Io[ҿ}ysLzUzQ\Ldm|YWQgƷ|jz˺k]z|xpuɒe%kHa4|}S`OFBٗ75uIʒ#LY(iEgqYUr#ܣo$pZw Skd[^ (_Oj;}u/U}9^s?"5 RH45UZ`(cg1?n}jOT`ҢNj//v ҙE $Ez AQ`zF*GJH,Vfv@S;3FbFVAw|SQ7~՟KmUJإW &_7 `¶ķ*FUoԡ繆@n⁁4 M hPWh4ByTѸ-%CqxgZjZ[VOG%[ dƱs(]ĩDrO# r'OUZc޽*[+\yG|#B _f SnhQ>n<1q{SI/v0cF669DFiR V$^$ND'ץZ_Wv~}>_]w]dwmr15֙1¦E;m?'&uk#BI%ÿHke.)pl<ŻZ@ ۊ( 2ULTW^"v VGTB+w]^e_?xhGj̫HxDaRVB G+ 3Z2d@k|?+E"hXŐjMR <oE|=NE)Rɪ/MBZַᰞ, _Z bL@)%՛ͻ|~'jk](( G`B/M.ʱ /,]4n$W҆L|oNdQOU^e%8{%cAAL(؀\FԼa$wD]FPlW ."!%B\qF{].7;\qF+/5?Fom7Wpǂk@@}%6D##?q. aor*VarJ 7hO\ac#9_u7 R\,LcquZh![a_B7ߢzԮZF~FCVlIv`3+5]ȷ^ jjQ%d+e<@-TK>zlZd,j M [ e=n cg3uf ORO?%?doZZ +%<>=~% ˏ POPuؼ +hk˒=/GĊ~_VM0|\ =gL3*{zGdI]/8 @) nLރr8E>MPUP͕8Cwm6/8@b˸mec|@_}w䴗>~OH&KݯMt[.>a^Ri~ȿ"cFU#֦2t7IP% c_5ɓ_^Ukne^pXxyh\w/xFk=S۸ںYq$;j]U0~3lm&+ɏ8ijhzovs9} ,,nS%sX0zCRv{܄ڞq :a' AB V {w+m0(wl̲msy35*^$r,cToYY>^&#ylqֿ5>*FGdv!-_˵N!/'p NA*HO~^ٻ+:~W֥y~){={Ok߯b{!ŏEn+P<Ń݉MZv =iV~@09A%_\  x /{ Gΐ"E߻7Yvq ^\=B*0K߭XV*kW *U/2u*@-0,Xk> Oyf)bczùhf⿮I} 8Ӏqɀ) y`LGLu2%셊3u2ˋ). UkZo'&W$>;wԵwڽ]U#(0Lꎔ2jcr^9ed ` Qc?T66uMS5"*Lg/$!ѪרV+W7KD[D^ #e|oĊ(`jD5PIF}A>׻^^}ڕ^Jz}.9}~z0]1;ePE=%1+x4α!7\, W(%tJ&Xuʽt>n 7TO׿^횗͹ּ/JCӿCJ7KAO .l0uv;i.z^ V\VI%JA\xݳ0K P-4]D! joX n/,*|olf=+(tia6ޙ62V{פ @ ".Ϙ2 Hq^+wbBqAN..|4/$p8j`+0%0ttБ]z^DxO{~ [*}KvNN"L0 v)YAğ} moW@ɕVM|+Z]/FW5_t,Bu^ W9{b4)7 ]lbewub{匼xL廽{>4\tnR\8׶*[﵂x~^BG~. aXN{e4E=|`H=G!a˨2/=^?7U?0G{泦իX^_*>O?#GjߡU&2]r¢7f:UNP5ܾ_28 1>!#ʍ J7@ i/>_&Z?m׼9>Ci="w^ p`_!xG5 >2|6;(s 'e5XM`Wݕf"#`tM)_^.YQDzqUPL)l0ZFY>vUhznfXa>uM엓Iz+(*s =s>F?u8*(i>׺Y}\oKYS5/ }[5"+_ff9,a :IZ2s-EWeʈIxOa73#Cj>KH#8@7%*qk/2ցfӧ>h[(\8WmEtw]}> iUw^xH;Y ~~-!ԾnS~$\ԛ 2/%)ɟ!hq~bQR뇮O(ͭG(L)/AK_)Jr-?{*-|2=A>QpW|٬zt8)%~\Q.8_N_Q|{˼>X;;_y[Ct ZՇɭ4-&{^/>+%A[΄r>򠑇˅V|ěN0mSm߽f?h|y=j+ yxnBy1V_s7ܳ"kFd&,\FYc{ ,8G!T |̹㜵+P窕1_rڵzV[ۉxCo D? AJ}o_sZ֧IV䪽jZZֺZ!\i rۈif#(hzy!6XOzM^ L0@f- :=@:P%Ft+JrW{Xn{c쟴`;(K64^.MG8PA~rpK`1XL^yΦۉ(.҄cX{4$L/Q~((?2O(;"gҸXhOҪFd $.8uzus=RNw8LKTvL4-W5upaHֺYQ4#_OS'"?XckCWleS{B{Rr׬=JS}XאP15oWK;/MUr}LB9UlS Fk2tX0EuRRLr<52̏2^xj`$̿WTmGU{Qd$1bia$8k`Ay}~wkv{^GCbtqb}?+'O%3QtC8,We +_TR eäԹ -E(euA_=y=9:BuV!ݡh"riܟO\7=FehKIU+UZq]y_p?&(`$D+x#F` Uн3̣{g#!}|=_e Il6ކpvS⼞"rj闍,24ݏ Aۑܞ?NdAU&/,MXĢWNqIht|-`!7PN2ꪪBɱk$D%$pU/0F #͋@^pkc}e(QTڥ.5_)Cw^m^LJ: xpfW -dQԼV/~}S|b/55+TSӯ VPC{' 9.j }zpH5:C\AzO^DXiFDt~65BׅNQU6-zWpL0P3*gDUT_!W_}ʣ^yR5=9| bYFsAwՠH! /op+Op?ptasD)A5_ GR6ǚA K*)DxV5 l }_1_y$49^O5$tțM"dgf퓿g4A4>0ʐ>=4<:w TS Iw-!wAFQEP\I0xfw6:"Z.XN27B0<:">_xȓR$C\H!Dq}W#4pJ$[k("mb1\ {"Q 8q2{]dYJb ƒV>]2Aُp>R" x1 -[N6;"MHju-hCMVvn3+ V{B W/\[vD|JY >tp*qJwqہ;O4ۊrw,ŋ}ijO(Az|jp@%YƠ+ __|/ȭ,ۏࠥH;L od_^s+O\۟GéEȤqV0ZLcCbODV#ua֙_0W~ўSY ^ʢ exb<[-TQYpT(Y_ѧQ~rT%q @ 9Ɩac^S'FѰ\^k-)Cř%B Ks^z5l R[0~orM߻pVYQDmz1׾@C<ݖ$v{I䋅bD^KG Ơy`^Ii%暔> ]U 1;?4_Qu?"J'0m(l~H/ږMs~Ym4}C U>g&,P@n BXXw A`hgJoay꼋ĒmW{W5NR%"n!0Й17 Ajm|w_E־֤uZ+_^~%wiT\L3/>[aYW0٠qc~3&@jt,cC$L` Xn ol&ڧ_[@9&zT[jU~KuLrz}$CyU@_/}^ -ay`1^ۏVn#6ԳWj-Ѩ(-Gkf g !~<!-dqNX|j3AM>M6<aMޜE3xaˈU4'Pv 4|%Fh0&ܛ4_uukWUbf<ЈȁH容VV6&kjoZ\ @vjH:2z8=2J8'-o-~0[3ӳiSa,b/G.ݴO'QkgcP8; 8#,MdPT<e1Nl3֜lTHfʤ;&b#֤֯Ww1Ap1nMgg_^x,`x89+ZRTةoŪDqBeTu"žp{?%$\rT erߏWJH9eQM(y{AŨrY[s.ۏ& &x>6V]"1z@q$` -Gu-o@l E3 ivX jx!*qu T6]0XH 3N-i! Nb*N:2 9dc 3{^} ' dw҉u":W:$/ ?NT+18Hލ7)Du%-K,սs_'3cE.%xT"Q|$), D:ձۿP__- H%/Xf)0ӟ<8./8 gvJC#P &HN5;EC Qz3߸y%8%ǟoq07 p=F<>. a#yVѢz fS)OSւwm<~ k2tjC@8 Xv'_?sN?]HeH9u:M-py:pS.C& O.´3}:R\y2ѳXVj 7"F%xpEwhۉ⽙VQ k `֥5 pᰢX(Y:ER(x& /3V0DqThiB `0TChsv'E ["c/_1!ܺ{ wq] 1#; r{O^җ!?a.+  , 5FpJ% 0'm/Xأ! ٝǽȆ28]qT$; oqƟjfή^LiD ʔ,eR/PΘNei k_Out1 jIrbR1g7nz/0D5t;w|-K0yh~֪%>0iWרXl<¹sv)0e j8~ӨONO/`I?L+h% iz8|N2uԓOdA Rքo8`sᦒ4_ǓYۄń<|ܒ#V$g=gCM{ ":(ÑX|PYٮɮukwuDwՓ]~ulEIUBdKz/~XBfm*aF{7w%+ř7D[rI<ē.bBY>-W}e%=vvo{\Yg%z/I8{iZ =K'ϗ*_45. Y)_W ><. G.TI:D|/I)B[Ͼ֠p2 ngTQ>3J5ѸonIMAxyv:qI5ܵ&|+6ea-v1nk~O+Y|pjM'zQ$88^|W6 8Q^?_w|\bk~菓_yEWݢ޲"˭3 e^Y![7qYͅϒ/eO/ N`ֽȷ{N;wܷں?޽ `9iw uL ÀhLh 0(% "0Nu2zTiZ*G Z'{Du;y(t;ug'U^om `#òPE!~.KdRl#RZ9vy;HcInEF,o:vGzߦ*iCOؕo4аJ^7m3ê |5"L`РLH B(& HNneꢦ. ɗ+؜uޱjۻGzf $|\&UjZ]}Ov-8S*tj4bPE+)xi[~{ [O?TpGS7]y5O_%qߦe{/K\ܯJRд֋+Gr t)~VM)f€`2 PX*B'w̛߶wNj\RXh8'+^TjKy_ch8|Yf|YL{7 ea(I {~1!۾J=Ew +F&!  .;G|ח]NǷcnz~% gW=XȴnkIw FV3]Te8*#, @"2eVu.pޠ}m;8̜_wWGzį5tN,}"XF7qPGWneגhXcQg~OMt7].Q>>\4U㪰$\Oc}Q|/%)ԪTu@&A04Q , &m1kw=\īdYRN m7и4?|.ѿ`+p=}Ή>]-z-yvR9df=6=E}V*)E@B~no+/';rB֤=Aυqqg@-Gj-eE*ga3pf>4/)?K U,$* b@(& `HBc2RQ |>[w+0t6Z <^+;zCdFȗ^|f\ZULum\NV5f:M=Wo&jJ )CZcEMcrF(3Rs}([$CK0rm&ce ӯw!u)pAs?##F\'k^_]\!uOs eOZ8$ d# & F]H)3X0n*b> _ ҭ /hj^o^_ݫu5}%'VfK_WԚ]Mj/p[X(P,Q.Y0OC[~jg@Dtp=8l( Z0jrGBRdX# `>E7Q`#.iZHAADZf JP6}ja/%CY/XG<)G\FS{D)hthi[~Y﵊oּYfTS#-)+ xAWW-" D[0x$#H⻞?m!,ŁteUSRzGT/$3**MwalG'WR߮blwk?  Q_>Gɛ2)jdu|20!]+*2r&Zy|A2p7r]"i۾wxJ\13u"RkY}+]u}z1 @Y, t:>K(( Q7^"`pI-c_R.քkRZjoBD j?gbeYn+T,Z x.\KWv1,J*tSFak.]A22%^aꪦh($9  }y/X" K݌%na2D w֋gM5,`̾Ħ%S 1W:\Dִ85^3țx \h1eJ8Dvu=iNaL>%v{S q.YI 5!o'KxVM[\Ywf;o`Q0*:$HN~Fm6mu??GoʔSsH]b]>62(X 8ceSg39O/G r|,+!AVGQR;ID=%W/+txG ZbU )dN{Oj6!_`3mg}(8tHJ4ݶ}Ldjr/K25uN#C"1~>}:p世6X%b FVW|?^ZZ X h%фOl| R B*g~Sd|N>ʿ]f\-y+^ J@c 8P[ȓXcZ659}utAQ(ϗ_@F[AlطsÇ(XcNJwěᢼIZcW6fۃ0#T7bW2鞔|;Gagҥ'ox xG(H :uC:X ];ꃿ4KߖH<'?^ I>'E i0Jps3~^e$sQzI>H?~EXL2 įnuv]ǽb.VaϿM~,GCNOhF;`{U7,p0ۄ~8 Ardvr}R|0Ϥ̟^ת^BE{b~ [Pѹzy .~,f ab+ս@ @ĀAW|7LYDሴ2W$)N~w>z{C*#L|0PҙXG]>njʳA_ F Ttzn8!b ;&\eTc S,p1]-7 Y"kY?. 2"pw.06V9x%Ns! MweDsVH{q;ƤE "X/QNvj{[=࿫r}sw6S$Ev u2{Dȃ%+Sx8tEOaH %+;w3_=~O9ܴ H6jFp%"T_'47ݜL'(9_8זh& qi$(̚^VPtLPJ+X=tEhLc0L|2!z/4wmmE/#uxIo`kqa$Jލƚą6f=L +;b'6?y)\59K~'fZ/^RM}^1iPA@, Ӿ<`dr&K'2 +"8}P/0UOe(5@Ξ$o FA=a:g>>L$xhe=~t$_|.-֩Ir)?<+džPv 5nػxZ|#I ]˓èLB8,@h#tRC{)!FmVRTh #L'Ņb #6 ;KW kud7:d'] pv䧰(nl"T+CcZh"qMAE|שyKкۋծOPa0$-6Htw/qL7,HFߋz<.YsjKxc_ w- rio0U7|&M0(2 :2+bn^qp6Gf FZܑb=?AND!#rŏX*|q:ᨹqb@&]Wj}wU/~" L ˴H"7Qj^"0c~n+ D8W|إ8#yQnǗ9p <WRM|<Όs&{}R e*ox始 cU^tTBկ~UUP'ӎVo| 4LE u DSpPa0K_"&aV:ђ<Pr{l|: u~?5nF/|% |a q +Awp7v\TPO3SU/$Gqamj1g9mknO@<]]hb &YUT8}pBۏ>=f x@.BwEbxErq?uW2cmbj8TD/8BF BBM'.MֿXÚFڋg͗A%%X %SD)ٻkAv9 ҍÒyvM*zKF>h0:HB ү_`Y9)(#5ى*N-%[Bs`GȬn}+5z H7MwFO%qFUHw:C]z1B `ח1Ix=nArjP Ҳ[;Cxa,phӌ䭴a7D' 0 w!o"R%nHޣ}&׈(T?3QxLPM3OE֖_JOTP9TA}m>{y޲djvdb5?jn AMO=LiJGs;~м-V[1"ZU8txAEƈ YBA`@ s(Π3S6|Z({T~fsNė^{tJ_7X{ O 1vY~qVRjwqxeG7fdn8 G Cl3$l}wͽ:b `e_)k&[i8%տo_#o!ZUy`KOI4kxJ`* NƔRFz5[ٝ-W;nuguH7`8FP|_^$ )BGһoO kTetp %^l!E'W=OY.//z ]QL*H}ԁbF /ǢW]8/PBh~pI\S߯r/r8i).^oogT}r^n/79I{ SvJYHtR2L)]Cr~]AJ=]*dv1!dlY'Hh;_,v[ ءm:z9|6V4( x%nyʌ@@v?yPPk3(#-]( (1 3_?sIƋgcAE#$1|eD+d``e$Au}q!14 ZOզ̻qܔo ICo$qam#7JzgG ۀukLpkƗYƴBN7?kq[ 6En:TnE602zmquP˸ìH>_t.3)i[HB+ D[WE[؋@Lr p49 S4ތ'7#Un܂d *AAP—r-.7ی1[ c[ GwU@ p1q-6 Xs"Y#W~{ C G}K cgjܗ=gǐ#]XJr?Ƞ4=p|iLw{pѰ?`! R0ģ|? Z"~b\F}H/R6r?_o ƌkײ$ٸDߘ`Ʒ %}\2];6fb_tgʖ|XnBxJ41Iw=F'6Q1/6\O)4&UaW>T1T@ky滅\GyBWqcKϐySx␡,ib0^&H#WZ%ZEůq̮|>jK >U􍙕Ws򟡏m?TXB@1rOm>X|c|QzJ#TK,ǷEuGT\gY!"arF]''%UAn|@f@QQFd& *[!.10uS*k5hU`!s*[!gtˈuL&er0fP;Q9\ @M 1`@)a{cN_оk>>n%˟15'rDq?[%P-KQ?'TN'I"d`MHki/- iLG$Eu҂SbxEcDA7'Cxh#UnUi+Ipo/NwzW/Ivƾyy#x)ޢ(@-o2}uUwK<|AuuKЍk}R_Ec&Z$nTW{V ע7UkTZĄ2} a OV.3]\\.`jQX| Cu)tzp"f{о'WBfœ,)ž2B—Z E 3Â6 Rmsa$@Kc|2)ࡖ 1 o,0g̝bWow@x@X9cz~; NI.BEYLd}6)9|JT11 ۻ| [_৻>8'WrA]!q~'JW} a`X&b"x- wP wР>Ĕ@2_a q:P^*hJ #n7E0f$fL͍{a:[?.YK~qI}{UۦWqK/zS5hpJVJ |!_+D^]Rߡ/wW/W^A@ (xL6FfB D 072VF ?@&P|>lޭTو#Ѓߒ4I2i+1H?G A_M)LhwS͹œܳW 6wɯ C8o N_ TK_.BzB~˺\5johArd1* &7X6raPBU"5%8EΕB=zy;}<(J Ϫ@<||`k0}R _se)q J`l]L{wB8^Och@I %N9-CfsTx.F3p_l{C~_U`^5 GFvKݯ|Mzk.$a >|Wlbb|4fG}~_:<?_҈ 8TM!nGoO" .Noh/ /^rEU7a+j <3iK"Q[=6'-K:Ơ~|Vv6gΧvrhZ ,FhHh`xjŬ'?ne'ڙH#$ Uv܋ d<ന=ˋff ^}(f+ kCli*􂙋ֳ?}|#TݭIp!dwB9W{͗#f2L&)2Pl;-&~,&ݽZ,J_UF$pWiNR9GxtTIijz3(B9+ !aMd7{7qCfCΔ!/cEhf6^L7Y|Δ,:h"sj0b$cmJ |Ar/w)цߍ(,2r;*쿮_m=\iƍPh3Y46})33Ҏ}(R  4(F[aGۿ"{rܞvDz6tэQZ. ^Яw#:"5ֻ7׭&OR ahT m*x5 2P TNüz1gI~ְt(_(?1qe'7+a i0|e4TUmY~q}~2ѪbKSW>xTʄqw(]OvkCL!½I00{= 3Z'#~SzCW;WR]k _/$ QthgP;&TbۨX/mP@̿ ֍½0vT^L3eLD n1Seٽ2f̢Q=c&IorzT,'-ڷ*ͼ`D qd" ʾ 漬oޭbAS N|`c=5h%ͤfvAF;aƕXw&~S5z< W'B ˋ*.{٩wa? 6< 9ew%5z|n^.r]@/SU\20h a-Qy`4^wQe%h$шwÅG .W*a$i(! zuљ$08Dñ8j:?z&}2Ҽg bre#XDL\KV*ae0'G-^_ðy߃aї]d2С2ӞlւV"2ZL`h:EUKܝV\:b}7ثp2|>vɫ<`Bi6^`H8,}OL_U1Q\tTYԠAL TgzLa2m{]Z@= fF~CYecZeƃɤ+|#?ہԿ:_9 }:a ?O(Jj4OKFĆvkuo_/:u joM[d;><:_~;-%=A&c૯uVA) !k./ H/O7Æꁠ<__\S2 N,ce& F(iڷ>:'CPn/oy^f~i?LC)ܽ J~o~}*m̗a°V]F{F[٫w2c&mڰ%&Dzyhtjog@(cs9epqopvχv+KjOaӣoL [4a)ݹM-Qʻ0B$\NyIEɇrO _Q}SJ)S^"KtV5e]RVϙITryģn1&$ 0~n0UCmtmp .C?u5/jbWf^ϊN}zMrs8 +tU㇥篎zjwUYE~)<)fEZ}=[F9 84'XRgKo {J TE'i ;(b:^Z~[Ti9>؊JtAT᫓-쀖9No 5}g1R悞'xsg6Rfdǚq<6R\_l6"6K1Oqٗtqmrl˖*_oǭ,uRXYp#9uA7U?XZ k$w3I5U{q}㬖}y])}Ɯ}I,oX=Q"DoiF7PܺPqfA} 齤kU+,;/{dH͓otYR! W#z5CFKL$m=lґ O$#E>Q eX6G'ξBC 5.M i$  "U(dۍMxTh%LU# k\_ ]ǀ#+t|R,\i&koUl3{}DW^'+@" %釽eE_.]Ar_~_wwrZ_}%gV3/{W"dX`V3WZ5˭h!굓4 ,S8~8 @UC‰"̂A 0F 8[K5ni={\\s 3./\]E̅>QAL6 kF6y ͊^.8fHry!`@Tҍ5iF[/|OEao~Yԧ*J(`ީG ]rZڛk)N$rgq̐i:Vzw.-0R#RH_2 ܪu 9F.mUM5^OvrQRկU j/xdT^ HTd @Aj<>so ,Lҹg |>(P. ӱ:M[p@.T:&UΥ*kߤl#4 xwv (@O\%c-Zp}Bɸgt`vkWPujOO[sy~|PW"Vs\BYDhw$תտ^z[ pjX4=x| B, B4cʛt<63gdr$3Ӵ~_w\(5IeDNLujVCMAzn(v׮s~wִiLӫ5/H+Ӽ3]23W_,4O\ ޵jT ƙ==\ pTd& a01\glRccBڃwzњgFZök`4PwxEt_{`F6@2E Il&&Ji`0an`]!FAA;9xO#~C _=|$ۈĠI`6\O&P+m |`)t`h&el_r8_z=s`':x6,,8,@Ow`^S£}0 o<ᚰ7f_"/CʜDŽ5`=jַl)n_I9 Όu3LEc9&4 T.iT\'] e ~z5K [/!luvq ٺ>L: ?p. V?d@5$L!G s1Mo }21sQ:_4wu 5EbuX~J??y!b<*1BA!V.\Cb Fֽ񍳹xRcb2ucbZ84`1wM,pjI7WXT7^b.+h]K!=vwCmʁ8͈5Ph̨|FH.PqBB5_J<+Huq$u:>e9ξ^~ZN'f_cB>J(&*9|iBjo(.U/{Tt/Ì!;0YRo7) JGȗ [ )S dD+ҡ|Te+ΑOloƾ8__e 5WVLLY~J&}y=v? Ih`&&ŕ'$N fD&Hyz54rTK\V t@F5Uɕ]Ҿ}(n84x!+>É>Ϛ9~o@s4ppgp).̕f1')1 ",]Ը- BHIh⬞E :y1u;A G߄ 2$|%ۿ5ŜuQ2")Il$  w/݂.'C2(_;#N^:­|Oo}ɖev`yI){$F8ީ5v2"YcgPm.=Cw}B>R) H&-5Giְ_eV[ڃirC3hZ_1V<5=swpB$_:ϭDgi];c{R1)Raou%/ sgԨ[G?FQ\ F =̷J‚ez0cLˢ9G` Azb nY.}y( 2زa1!.0D0* ,8 -@$ Ĥֹʈʺ{߮ˈtO/\,+DuQ>GWGzrTOίUP%*o?3fᦽcƙ|8"SemηA ,""]&0aIW@*x5x'>fxJ>  l?wВ|F U _gE=UϲհyOm7S6 IMNzeU63If7u_JҔvvˀP~qO *xևt Az swH<NJ_5dk{1 v=#Ԏ O֑)gM)F}E" A0L B HB &=,]UH˪/Ye?ߥџaɭ=ggp{Of{tٱrd=E.m9H}+sСF*ij34~S_lRON1!Xb g^rn)t5LRYqrC=gd N+)c_&6I*'9JaA, B@, a@XH`HB]Us*V^jk(Q7y|bU|T~ڿˡc}H:uں7ȷX獝Erזk[[4g&]#&r[jW'E_%/LjsGn1:U4aDe{^ZE5zcot~D.>rg,[۝W|*60tR9}!7-fA\Fu&\-Ƈkf.SZyh{8(_6~SmAtg@%,Ez֪(@?%]8ϝ1dZ6QMc{ԘcQ=W $( ƀ`,H )Ȧ5MeIZڢbG?|G˟~Fr\0|K4WFKGzix8a._NM Sf)}Doe7X$09lT=TRkL`S8N3 ͈߂;cnQq *Pz )@9o6˶` re)fYz\u",3 a@0`XH( A0DF!I!V]j]'ݺ:TSUU$T~NKD B7QYݪr\s.7B^Z12l,4أ=y~SYQJ~6j)i@bU85sTq|^uMm@}o K&@"x(L×]TO4]V\$1yJZ.kP&JPl}~8 _A w}b7WthMbֵ֯"W|grZt ey .q?mKRA'ˀ pJ1\fq @#:Ak4A?_Z9!l[ is}H:|en:kiCbsekz=a0'=-!僾NM'sVeX}2r(Fx1XO,Ĥ}LH Q ,e&;_yz[40x{ZW27ATTw b vr \V$\~_Rj//;fUGB` 79ьy< $FE7 ina:5L-eW(Q=q/ daOxZկXVV-zXeP-{}A08N!ak_/`W $5(6 & /{/xx4tv,`o6HQ\ &YRgO0Gӛ>lhIy` qc9mʂ|jjBtuVef&^9qc4uKj̯WX,ĎIRAF R64L5L'~b`{_Zv}R7q* q߱Pc$ ܏ Oyfuyc?.cJLpOOf?@u ef5[{}]cc c]نr.1_BKM+1;I` NhŅc0_Uߡ2^O {5V%^jZ_jIɴ4] /u aRO1+=}@U?߂ d8/:RBx@J4^UGSY>|r{?EA.>|9&B;z o&*d؝s~h/݃`v_AkTrz^ z&A?|ߖM_W ^Lp*qTiða),c)qǁ_z6cXʝ#j='4qwo feUwwA=d z1},xJ_Ϻd/ ˨qts06_ߐGoݱcIra&mu&1dUqăOUɗ2$N; H0R~^pW|Qm]P8];6zIMAY~,B6 -1OQ$чDȻeY點g|`{hkd~ l nkr/תxVE~׫P\7ft# AV(r']B] )~gC&Va3|vOG|x 7j7ox|f1Opyze+}7O)T4j Ci&uqgom7 D0<`YW]wPkg!Oj@{Uu0g3br|K]BPx/t>&37H'>nς:U^=qo }K] z{W1>T)L p tpaDJ s 9}7P$(@TF^7%<2ݹ5*HH(#}]G^23>*^uhmS\e@] ^Qzr氕*PQC~.銬>Vb'5lN.w^/VOC)1jN+ːۈb_gK^y?Ò[*+ke!"9s "qKl_eorTEHÁ-8G]l]/-0ǜ%kf 2(Tƅy;MK tX n=z;c!Ofy!7Bځ-'+;+m6۽}zDV\ /,7LBʬ[տ]]z { (5죓fK Op7,,3{="~T]uvi,RbOS} 4Bu"E ?%uм(4vo W;mFFp hw1(v=Dgp+nnj{3Kp$!18UwQ$(e -֕58f~п')D~ Yn-jE2,J<{QK꼎<8isVɴ/lw՚VKvVHR5`>BWT(}J{ eηK{xZoWM{ĔHE嶺UZ>,iXw-cZ2$ 䦼 ;^ hx>j|F _7TAvh =@t7rpaiR~_(wUѤ#Ҫ+,ERr|$Hhf@h97D؋fԼMCwI~OO_]ڱwDOX1Х`-CZ֡!Z} %#eK$k'ܲ~w^^4': gEu4Si`b*H61UCZh:``4l@pi+NM㒎ch#a\0M7zuw"}Bq'ݫ^뗇۽{ѡuuH=IM)A_eT3&XKtMN {_*ZjM_0Êg@6G^̏$i/F ӁVw˾N+M";3ְw&:|7^НI~[wŭz׫Ij_k_Hicy'<} cgE޸f )V+V@Igcӄ/broX' Dg}~W^p8 rۏ!va#n⸭(v,.^|~IK_Է/bׯ`P:fowĸ%9|t1 ZK%ᒼ-$gٻL?9*l'{ WV\bHl.xΎפߩү^*RX}Y*~_.UZ\8C>10oU8$7 ϖxX1._]AP w.Z:X ^&=Xݯ.pӻ'Anc's* mzaf[Q[DcYBJeZ9 Uq@64(Z" ۢu7`gJi޹_'wLۓ;"ǯ\h goVlRo_/{{O Ir uI;@pΛO|S]!؊8&_p0źQgC0{.]rp?Ǒ=̼U|!|K=?ƟE ezSxp}կq$TcE ǘZD ;JlQFDh55޼Ql/D DdNױY318V8XqKKV%.!ٟ9'KIV,OwsOG]Ws'qn7''svwIU7r؞QTrSƘU@fDsAb|xŵF2;x뛛`=x'Hz{KODDc^&Ku43ˎQx^"LbR֢ '>"Hu.ryIz.>5$+s~#t h|2] AZ׫Z|)EcȃD%wDZVx oeYlu_@v;0b >AJrz3wb)^b^bczԖ]Sׂ$`tq$+y8tK/E3-'d 1pN=x2;lz IXӏ֨W]WzXU9td9Z V-W B@$;ܺX<p C{`5VSCBGEs]]D]ZܑC+XʯOwNkAQbwrڿp&Byllr-abQkE|(eQFQ9pr$X30-ʥK*e< {A KIX]rU+|䖺CXS/w|u UP_hO{B_O^#ߥZﯗ/ C!7 Nc*B5'=J}s_c$ F1v/_F{&[-zHO?9#p;o0 L=jg.ou6}l_t&-UԾڕ{pNe|vc]JgHQC/hߦqkr _‹gNoA,P2}Nj= Rz~W!]Z 'F(v75|y&I}B܋ets&֩Q ZHhOD̝6Dj4|)'z=w%~6^.fR>nnUUWloO1q' $^@q*"JOo\0T'G.H x52}7ѱj !)I,_kP@*Rh} =X@aoܽx@KcC!~l/Tzݯe}u?nH`!...YrJ8, zg;yq.!Va0zĀ>g0 p{#6{˔XA\x FGG8_e,&Æ әo' )4KmRC %?iľ$dwÐYCK}ypIݐI`,}^+B ecS< hrKIrU>O]@0{05*312}KK5zx,# =' B؉_>cWn=*kYuxVAQʿԵjl'|jvkoO9׵2RdD9{Vx_|SIV'zHtۮOr7p6-$$o˟7 I{z]xI6 ڶ ZaɝO¡YZʔ1^jSwݫ?=m,gR@M3h!}JbWÒxJ6S57+N_/}PX'`+0O !L[2T >Pʰ$B zK~*#nƥ0O=DF 6TJK3 ̀7`Y+|$Nw% E'Zxqu.$(%$,Kyn> ߄ߺ=b׏1[O\8#WxzGeۍ.P,>UZq|&J3C&1yς"\r aFD7t=R''4eGbfO䤪p?|@~s@g cx\aρ$eӾ_;dAKƉTr"0J){W:>ĉ  -] 9͙|RU/~~^B+W6F5~|LnrW'}jJ?+nHJaW[ _+@;`jFJ?|33un߁ԩF>Z<cik+!B^ʪg<*',tqWbu Dh5i$ _vquUe\ (oqQ, mqep ZCKYi(fj Pf&n pGnz~:Ep/顧//sg? R<% 3\ވgWOkI}W5lo/ډ 9,g@ ->en!=헐Ƿ˯,Q}Rg'2o%~=U֪$~ܣ:kDz@?$D%".j-nA6bQ@m~ϛ/떽ɔ3So&g;lw5_ J,Լ8Ҿ޽E/_|&8D<FÖc~ ) ]]+x&|vrWʆmE?/J Narx bD؝=S2 Aj/w^wEnZM\wZ.3pߒumpİoj aa|C:MI-kb˕l Fq]ߺ݊ivcZ0z溪!(ÆԝO\?P/1{٩gcjHK(81l!㧍E\gӀ >88 {jo^Ӣ.) !uwx3hӃJLېE)S> <]u\NQKqu[J.^ rM;;I.KBJL ! Gu2X%vڱ A PL(ZF.4I vj*aOaxdj[ZTJUU9[|?}-ݬ]Ԟ.ԉ,oG@Awh{*|+YKuxk֫)}eXA@Z3#P0!\@&X#قȖ?0p%j[zz 6dHusrּPOuvU._J窹"| ~BpL8 ED7h<&`odĘ|] ;B~'A9W,֬K} }qM+htf{Y`rV-{0!8)LAxKC*LUgఁEKAo] m{7֥V)8 TWTMm!/VKUݢj~<-@"QϽuF2F9K'R$@ %GϟB,#Ss//,֌[xIܾN'n-fCl^ba(l̻Q1h.݄P,uϖ1:ˤZd [$t_U\Z$_TZίܭ=[??X aBf...../Qqq!UFGK=h+ n>}`Ac3UEҠuئW丗:jsMZjI~a2Kq}>_Vi:1 zJZ5n^e|:q&G$^qV3oA[%6e ˄kGcRu)zU{7UhT>!'ؽb|0pHs+ ,W?a!3j KUz@j@<  4^hb --m2cXz(L4W?z)86}aŅ{}Bo'7@g Q8"aHGi|GS„ P=+s' b~&l$u!IY3ߢ } $JN7jqZkoT#jH~/=K oeC%Sq|Ojy]!U$tB.?'q[Gh=|΀Dl-_ Pk>_}ˌ,=b݇ol0ǀzsÇێ51@Tq=o$O|}C/͎긚`V80ޤt9Ḥ‚؀p>VvɖȐ*I\=?qօ;Dz33E<$y/x!hϬ6^]9S|4a1Tww߸'8~4 j8ˑ*]n뉑i+~ZpJUsey~0^Tϳ).#KO{t՘_pYc:tNxd]0`x^!cC ^1%ƭ zVe7:JcL f߰*+Di;]RS&R[_Ƣ}@_wAc>C9 L{W ȷu#=FϢ:HE| s$tc|%oc 6b}p~_jkVSM~K1!Lhu9hqm|%-vu~GI{4wuDz*:鿔Qa2^q漾 IG![b@GTB\dY&kVG=Hmj{2x,P&J|P2X=I&3>~5=ww;7gBIf V sћ:ğO4̭BC&+ࢎL]ZjDBoV{ |V^sH 2 .X+~pBgl.|^}t WD&wtw;d4mu]&/,&1YW;+` ihVGƔ:NqْiG 9|wOh+`S @'F͘w,c) L\]q'AfldXb|$alq;*E!?ꛝ'ܑVyKEy-jU݄Cߨ-{_Û|'~H b_ޓU!!췼o/{ln؋_rWܤZm23D6٘|E~ijrѢ_w4U~UD쟞OK >.K'C>#_ <, cz>31Ec,oa/]q_҂"e OXd  T/W G/@ (KK;x]Qcy-`S|W"N b@"`X. B!s;Ȋ&nk<&IoÆZ)Y=Da~Z,wګuY'qʕ>9?Iuø賝P޳Q~/O#kS&>4^̫㫦.|H%PA@ʟ=)g LP< n# jǀm\H_ ;%%̤"^%גt!$-o"USM 4ĨcNL˦<5-Y [{.mݢ80 U).NFd! cN=KTU`͕K#5u5X]?ӑ㜌OӪ`R斪BvB Xs)em\%Ұ{@b \q`A"Ԑ& BcX "pT""\x/5Q*2-ԫ_|yuE^)O[^v:_f{vyIo̦۟9OF >h]LRH0PC<;4Y\$hg ~Ps~'hs:vM (]~h  m*n'1ӗfwiyhps_W_ Lg[JODRX-ºXI>Eۀ8"Tl a@Xc8H dzșR,#r_ Rt?~ۇkNRco[wEe{#)A׭NU,3P.-%:Jdĥpgr3 R?XSY`y OSBJ7m(bA}%<+%uZ:}@ĎVl ZuTQ=Dv/=p#c*q+yDXU![_9^}b/\_qPmo -7щaU#Sa[%6FaEg( El7$Wu ~*LTx\D[zCГ& DsY >:Zz UaU5X[+A'TN\"9KwOUeq*?&;+Am#Xlw7OC]^i-nk -Jj`Ҷ8X3.2H  pb.ArzqW'խ|ԹrvOeGt-zԘB7ߟ9C7|dQwSn%{HPp&S穣?$,@ 2+h ^ lO.z/$"㾳JҸp1w8 JF4p0b n^+;V+/I?szZr^t7RlẸ^W]T7AOحVUx_GA,>>AP) A#X`vjXbD?>stF1Ijj:irdSSUKyFbQSX܏M|` #FH< nKme~m8X<2Q{r'Fذ%mYثE{Q_.ۗ`_x {Oդ_W*BT5Ïgo|SE 4(շ8;'{=-07]QY"b&8\#k?ׂW~u_RDr~0@ mxT+rܘ8[ٰ{Aj֪z\I(/@UnU0)b8jܬɅ(9)"j0n֗\߯#O]z)ӈ'UeέNUw/Z_1$y?(,8XHԙǛP,j54GlTAsP)b77гBBɀ9ĵV5Q!Z mA?]M_e(=‡bJF$?'"2W"*X^*L9~RΧNYT7m(."G _Yrw%0~ JUl/,f$ Db ‚#@d4B 9 'ר){â__\:[ZPڨ9^CX 1!xgмTϨ8Hɿ$*]fm[~UQ+?/u}>*a%ViF&[OP@HQYc6F8uBg IiPY+VjC]w [Fƍr| ۅFaFX3IɃjl01:STW8wV>6PԔ\*#'HH!YEPẌ́KGPCE\Y -g-ww0fo7ФuP0 ~j|1yj !!7fPc#FZZMh P](d6xEd1'rܷ. 2{z l\r--d_Mi[73tSu|LX)l@m+y&Z3&HnVA t]_Clѣ7pڄ 13 cq;-8|A9Aw2j5p/ͯZ>i>wQ j F|)H#Ŭaq  O!η:QH1D{j<_FۘGP>.`-;ܷ1<6оx`_WǓdZ[W~w8\Yq_~4'}Tk^m\^%Ֆdl*ۓ AB0iV6vK=Pqͪ~,c['2a~o8͹~^ ca3й;g[Bn7'9˝ec)y=?Q5Tu!LťlS(yKaU6'˛&i鬞v*龰/u0Kty'tqwI^"_Z^\ix9=  qQh`w7vZHdå9eь˱1km-ëY6˭^lԏՇnc,K=Oo.fv]9my0'YY.RFcwae16 tP(x'Me/{VK?VʛRkO5EC㞏5Z|Gyh.J]#^$yuy~$vsg[mvW:_Ac+9>bsAq9rZPAp*f $@5C!,ݔmOE] lfgS/˞öx@M}|`hr^#=eZt_g?_}4( u_8"Y`|='Y{Y&˔#F%nt 싆0:vUFx?M~q`E1,H/;4Dk93>s)F3}Jh̋T3!s_{SXz){dz^goLQ2r -2`-6SȷQ 0mU_({il@1 j*F5B- %~ c=jM͟S]!իÒ7 ]lvTtLyZq ݌YF$` Ec =*ȹ̾[zJXОQ~Ħ@{^ebLZAQLvI!3B^XgB+1K}b2+㍐[d.ԐnB =üO 7SyhW86 u=49lFdOV9ے{Ͻƛ.?H~! ,]ZWjاIZ|.tlx%f|F86*)"0d4ȦZ]X,Vv(Q|JTsv_x@%4?Cg}r].倝# c;EIha,}oizZ<0^RQ}1۩Sw xïH*-R˜s'DRVNg1 ſ][]",rx-Jٖ&W#B!̸%r9@_֑X-[/ڞ~2w7c{$g̹f^>FPdΑ g.gdn)= +0*@v5Ix z4aAThZ10}/W~E|ɸoݏ='4|9 Lk,"</9jm]椗U3 4{׹Z (v,qVI`k#i1)s&{ t]9&](fmX jRס=S7- ^E=XѡR^&B-*YIKc r^C_,H q4q@㍊TnӟW)b1 ƥ/71+q#;X/yw}T !,rͰSxŭ=РRd"J)W?*d|MVwx.j6Mxj_v(!Lp$24(.]-^յFpф" ;X4.,Yp#ib}ׯu{ѤdQێncLD)*H֡ˏA=w@L1 N]hgBA[W&%.jA:kבu={x3)(b -3[P,U2Xqb?/ AAF p qsLT8bj8zQ4_A>^zoܜOvF\zl ':X TÀx9w ){MuDo ȴ pҕ7~$G)p; 3LGKYjX,4ecmX2TtsZW; abU z+du4](GuԽ+ rsvv ;xx (l#em*D,*Y%ݚ V`dX1uG2VQ#{`{?,y6ڍmRuږ'gI@ҔB܊RT-kQ]V qA~Үc0 4 ~gW;&dyR)A,|])CC {&*ugRUQH|O"+I*Оnp0mMӂ &/XCr7oA/.y0sC+Pz<8w5)eŪTB*O_'N߸Zz$hX@.>tI* GwY۲Gl a2a-NG-![Tݫ.VO~1C&3 s^s殿.ׯ~o.KWt]<>*:"g{x\r-=8/e{|Ni$=']~ c_jYkR+ZAp~_۠;C^plB1){|`tHvO*_q B::NzQe6_ gwqxh[䛎5ؿZ_wޯ׮_|~l zr X@';F?$rȰW T4?Ew_/$6M3 `c4dQٶQئ/0F7h ]1ܕ$=rd5!_n\o{VvƊJ*l/- .o^_S'Q}U5_FrYY߫%}ZDhȅz!4Im8I:kJӅpBc ߝ_': =Ğq ?.pSIV'BB- *H}DxYTQ;K>F/S]8Yr}S~M߇ R_(SV_ZlȥvYXLհ0wqr-VR*_Z-KKR1 RIuF{G/Kq[.PPja!5-I}Y EGU#P}L{b{N_Gi u Gz" 縁A?þqIqnA}2o/zE7*%[>0vitq<_;ed6~_ҽ_hpV J2ygy ,{zW R|42㦉NO/-,znč"D3M@x?ܗv'w~U}9'Njb9[ ^XUbo(Ph G A}ա/'x?e￿p,wעjO_޽^ p<C,pE5k3 Ǜ(wcA] -fRyL1Nf cR!x*8zi\R/r_hmj./ֶ\@uTdoo2Z8 P0Yq ڡ^ar?,1C1C,1C1Cv c6)>/v]I<,2pa(I?I0bBS'&:5ZfU8*OgզQ&C<}ڥl],Hj7Q.uйWۄMRgk9m#gG CkTܒ*G%fkAD "k+~5^q W%UZ֫|X)`xA`~1eU/ˠ˗%.fZBsBrA0;q~aL ۂNìlK8VyMUW!jlȠP5 {45K`Lb#nbbhp »38Lp*L\*?DjI\{=kԵ.L&WjͼLPDFq!OH 9o}?/ɿE=$ Pxh0a_3X;]Q>~UݫI_yw}y?RĢx%bNaʌwɵGwcd}S*5.Pg8byt/nՊ7y>]M40MCF+f jKq|ܼ/ŷ-|/ ((_QLe/hR7UՏ֯:8${J1P H% j ۉ8]chu zJK<[\oL¤ 2v?5?jT7@l t@8bKkVPML֣I%lOmg[7Zxg jF>bf~_PYl$ht-=OOn[GֿV}EH e &Sd>pv4&CT 6ChCJh7:0j%w毋pt * |j/ !}*eɸP ں;!&_ ~j&Hj$Wd7Y)+S JZMYBpg%4 btDxQUoluCrעuwk%K 𯮸'U] 0=CbwfaոF3ܾ?"Y}X7bqK4q! 8/[ٍx/B{%޼,5LԘkL,giL[>1.69`VTd(b=xGzkW%iQp?&S.jBbbVAe;&f1)YHr4x&->!4 RaU]jLӗ,iuxLJA& .%Miv cbz@j띟GȧT2H 3+"`,g&#z?<Lٯ2TZjUnnXÔ>ZUS2Ҽ2C{\bkYDjUA&y/T. yoN@QԺPR++L!XTt_TH&Vk-CůO6CnUr0ނsϓy 4qY~2mO=UVeS1踄CeDax=#\\ أ }D _}VIJдWۑZ!goS3yUv]w y\f1]OwZJ)UHŚ,"fT{== ɏ%K8"gBoK?._ /]^<í]E&Nf +w8D$0E}Awvc>S0 ~^c={w-Eκ[GУ%JB_›QF:0w(c[(xnAF"d쯲N_LU>_Nڜ~_ׯ~Eꬆ9ټxOLy/q8`8g@R-cG+!Wr`ǻ9]8|'ܢHY(vix屹? &PETTa*u\-RsJ0C8T`34o.70g6Ԉ$b+( p!xP!Z*اO [uJTpkI6@ٓF I&ӗYHix=5!]U^_1f2q6`'<]K[wߩmQu).=+D/i%ԬOwqW㔐L>jw}~ONiL?b<:|ZT g8})iVBFiޮ|x AUo wMK|~+ت-`b*D\G@_~oʃk}߿D$/==V |(.m2ql"Q35|C3y}=" y=uhlSzzZziѝ8A׈ޓwsn"H2IѤlCr_^ D =Vפ KG:k(GxǑRf쀇@t1/˷ A}ס-ܞڹ-իkU]kS/t tRCSl؄ЄԞI ʦ]zp PI.;Qr |h끐 Pc3<@͸iv$.&;sݫZ5__A0;]ZG|z.^i||%,ѱ>Ӆ~UY y@i-2.M4pz€^26 AٽMA`'L<׃yEC әTU_ZP1;h/U-|JFh\޾\@sJinم]T&Ԃz<:smM[J-*LZI*vGk l8wL?k5׸EHRflLH*xt`x* P~y)r:WJCw\WթuݭH\@V3qMI.ehl 3AqYK$,N 6" ;xH*Gx4ŽKmUKh+ $"[rob5 .75Z2=q?9Y]rBH7(DχtV+ @q u2pu',S>4|nqnm\{%xꨏE[ޤ݉/\D*a>^@ ¦JqFelz_A>tKW5ߡ8|JKVEZH h`'r9#+nW}i9e"YrLҸȻdC'#~O!wW ,{FS*r]䈽>b.]~"y՝2׈5*%Z Ls p01l$  OB!#plWo.xC%%,q*UU?rOw֖J2[*WGMHUR%7ˊC.{*e`Å&4z]eHKAZ*TL>ndkGn R}[u/ #&{Wem%7[)_>.E_B۴B&OuA6K _ʔxNXD;)?_>T ђ5GE1GB%Fm\cQT${ˑ{$PwWZFX` 8h=g/`B2;.t.aGt&Y9:7ޠ[@VΌk rwKn6D&Mɴ^솗{$+QN\O6T٩m_֟ŋ4 b_5>Nv8:=*q%\5VLCBPXmd ꅼV~*E#b'z4cV~HNJ|A^$w%$GQ707>St}4ص{rFB{TߟzBZevF-Mv2;{%;vx(Ԑ& aA2`,DƁHL$! BTk֌$߶c.)GKOa[M_s%ۨ V?v&͚U;߅t~-:tG~дk.28`y3ykr@{8_ m)Iq >S5=wҍgb~jtGnUF>S6"@^]uftE!(8-oLCfL_ޥ-#Ct. D @Z"T(aA00`X* @Dv:窩ujWC|#?)Vw[ _82: hx}3}P},$ūTi]L- 19EFqpo uw@qX;BNu-9~n_\zRDy%'N]iB-]O 6 'j˰ܓVisWΐ0 f 4T} S,|՗{4y^e]He,;=Vc5e)񺗌m4C_oNe -d62.7>ÕAl[JJ-k殻p{>(}ukz>W!8x/p:\|s$-eЛpP@Sz ԐF+d X( PJ DamNJUfz%G1|ft9E~V]߃[k| |6^G&*hܶe|k^yܥe[=U=BEDSu!ϒg!Z*rJuȞ<L}?*gްŮ,5/Ro$ L>+oMq(]Wml)Etf{\(N1oJqU@. a`, !H"%we]V.5Y+I :x+Gxy~MBN5%ӆIƏFzquU{`Z)\H3r HW_/&^QŷSo=]K T9T_ue9*OC'/uFHR-}e/Ts%A9:YPaH"*!Ac XJ*`DDs[ʩ+*J޶8n_֧d+uEՠFV7~~pՄ\/cIwnfcI˕|jR}2z|{ kdp]^fXXz*Ij@PANBB89J$b*V"AWh":]'Jޝst'yjL_N L^Qǐ|u$b0FZ(O8 T(V`X0:bT&YWWSUp'A?ۥE~뺿a݄l1./Yi  #Փ[I5%3cl򿀓Xr\Etb/7}x]49 ( -ٮhL̡4p S9zkzQlؔ@y,_\ a9pfڏԴd EI#pw A  ,]}bZ'_Rl։|!D_~#]4.oj-) :v@}0P=Ф6*) uﺓ~ Jb/LVR)~_~ν\=h*/FF\D Pu.!ꕩ?A(D*@~_G?,S<|(K41J){BF'1P9Cy04[d:n,hIG=R\ wIlT_;5Vmz9l( B@  c]FKRx]q,*ݢFnO'O/-31e .uz}\zڢ~픚H 2oq]9P1e3h `'VHC<sN6AQ`ᱻWh|LUuo_6/uOW@\VV)[N縯v>_'O /Cumz<'d%8x@qܞU45~7;TH"[xq>7})p=c9xO줿mDK^~'{aⵯ Q LJUuҼ038P#<qFzmHҝgP' Sqtׄj>SͿc@$<6@+/*`:'? Dhg#o,6VQ_Ĕ 2/V^ I4|M ._kk7׉&q'wA,=ѹrSM)T`$oPP#Y ;_~Z;VKhV_ [D 2Bz/~S'?{%ԁdii)mydѧtnV0ܤ&Zl,3{pӁ<!T * w'fd%DO}daJO2S%c-Wu5Z)%(g Hg&ʋ'}UT$|>?]9U5^HrDE#a/mSr/Rʲ_"z0Wzdl:.!81Hz*aJnEgIscOˤ܋ڍvzF餯қk'e)vU8@I|>TVD< jhā+#*J6<RpV^kS;lJ>z0wƒ Z.V6[dXޯ3% &dž>{較>W{_ivXd4_z\㞓J<A0VTbjT6AQe^fqSiT\\\إ\^ضmdĔl/jO>|wۍu.\~!q뷽ajS|EwKW׮׺XYWKkɗt1oWZ/]!=0X=OWտW IeGsW;_0$m*x+f[?\pF f=U\kW'5z~ 1QڣaZM%ѥ$s܏1=Q =b=\|\f-9slf!>S@̭ϖrktQlU?ѹ=P!"a7[Wo>CP07-w@cWK%[t5VB Ea>l}.9^ (cV1*?5BzՉ=XW+XJ55J 6k(=%<_ӍJ\XxԢ,Θ_HF˿PЃRz\m(ܴzO,xoV5[~D:R}Li3n޺/RogQ8amoO{pe1ԺcTO{R Xc*q %89J{i5fMG__qWZ[GbV>Em޴vOO Uk¢UjD*%Y|@^s:ǧF8IyӅgNf,IbP":EmXr'U*Ƒ3ksSD%oؿJI+8g`>ezP%Q35EnT&teۼBeclo>‹ib-|rCY3 &jR{iwy8KN4T*V$O(_%3''dqد6g&&F#it~Hw_硇K˟Aao{t?$H[DڜЕ&)}VK_unj]i\Qn{Cf{"+m e7WMۯՅ! \ТU9EcRr߾En v%d$*)Ʈ55þrLjd϶5(eA~߯_vyL2FFaZ/Iׯ,S/A b~[zݱyLZl)mfMsHfZi+cQ2܄HkMTwA/.Ky/A`U \Fa`ZW`?U!}|V!퓪W ջ% 7ugd!rR^K?eIc#}U6~Tyld,Lt)uV r _ X}B^yDJDZ߁N` *ti_)eUϲNwR3I/b)'S[GA٬#ߧD!E* þI~@䂲AkZ¬0P3a< i w^u褞e Lv6|ɱM"[bުU=p`^^;#{D[s."A+ U:,nUfDu2md/ңUj/X+ZjisE=keoSף'x{^^kY>ʟ46u%/U!=Rzԗ$\ C -'(a'ԇơ^2W|a2z>HSD2k.n"o3^P$U ę5=~ ʽR#O_jSAL_7L:I-rz+֤/]Q9L׿?$45z3‚Dm4_I3anAw0;sf̓lE;V"Vhy$eOɖZĹ1~՟Dzn0)^I᜙F!5@ =Q φ%kR j|Nvxzդ9'ު6Eq ]~L3|kdeA/ 0gu^'C[;k'Vr u1+8&T )ѵ$vSkY/pH2b,QEH8H~B{v~ԲC?h }~ hO4슂e_d1 2șmo'/ެ#xLYOwH'ꮍF]n+l}ϝM'9~^1/)YY>Z/!$i~)M\aiP̳-'/\Ts7q7u OĈ~~&75{󈨻UcTKڗcy*R ɵ8Է~' !dys`=|y7-rj֤^8Wlގ;2^24~|y-im^Uv$w&Vc?)DNZ/įP{{Enb+0{1?++= \f}PPل@~)?KE/u ׀`H<1G@AkRjJ6ܩ_mƹL[ɪ{(*4z+uK3rXqr*i%тzNC &J+G]%ӫywkjx“wެn' ֕8r15NٻE1^E)(͞.\~E oC[y-Jz]5v?YwǢ7e ZK^޿"!]B^6Z%e7E#yyՃ.p=\~54g^hc`.^k,^n | c:aR;lA ߂jqbUy.XXS~%p=  2%e&ʦ!? iKw'[04/U^96Q8(A3}8u0QzG`QAKk-5Vӯ_딷%߆LW4%5uJ|Z $s.\_ ?.:o5 eJveUUu\;6|UU$ Km젿J::FW˿XdW,$t|$x׻Pn&WH_}+k@BUJ6+i҅8;PQلM$*W% %WĠ@ԵhOmK^:/xYC~ڄ/3}Qaz ;CxLm*3zNsVV)uuv}$͘2ţDzb:#oi5B!ඳVmLAm&FNx@ᒝǜS{@B p2M9_jr"4mR5i?$#4#Z5߹pQya\s"RUXcMᆟ=f?bDPlo@q AG2lXPH^_(UUV#Dm.GIXJ bQ9x+B,/w@L!po hz^_Zh8HdX?(0vȝ>P`z}nꇟ+,I/}9XcMێkS=A58SUM7&bq? ^^Zl ڭ_XZ2D7JPz2$5!D/J ͬ@vϨ9W 6?Wy>N_l$z[G<(_PBG}:a[^PCt Mh]<39 5LLLX nzax60-/(}&5Iq?P~aůqcn9}fOJrח˗.-%].So{rŒbmz(-+^|-{9%fKokx|+ׯ^wa}aqPRPՍxޣY邬:GʭaZ'=+^$<lhpgjWj0$wwnjDla1fRj[Ge?uY>Ig5LL?p8 x1  Zai6/׸zD]o'j8T0TC+PHP .ͤ2>r]0#-QUXCBO^ۗިP7ZŊ.D3o)RjFo{l'Nt47#8g[;-ҶpQei8`Km ï7Dx G ڟC}߸HUiΚ_R =}~ =*G ʼnh + Җ:dK%?s*V.D׽w=La3VOJYX|n 3;M2?bİ*Fv0*\"F~tJa?`+6NjZX47=oA  AӿM]7쨃t9|CMKNh ({V+ eRVeh~ǁN:]oa8iIWI+E?^1A~u?-hc; CŎnLj|:PF'%Zצ}_V~WqfV?:јc;w'ޞHK!%蕜:ܔ`q-a¤}vovw(1o$_'d睓8x\e8eLX :G'1Fefۘf_ozڍd~ew]̺g麎:Ebx)9r\uI{A%[ ć.yCפ֮EUhGdPq|/¥ 5_y JxdN͔{#GaWg{vB}Ly|/'X`֏u`^e1"-!jﰉ ZYG}όX4?⫕/j!aZF#nKf$J[g&*>v˰a=>JXܹn+&rnV_;i+}?Ht }맿ַ.e\wA?/{>8K?".[!@])J{^`]|eR9?:sնOA+wznݞY5bUuSg_u.m!zre$^LY],Z uEyW Yތ *3qo־Yhk~~bam2M^lϓ{ۭ F%|{/Ɯ3-vkEncèw*M|~x%Qo/q-` "PV ۼJ.%k_Ք;+\ZWG ^Fc`̊ @H`oqSrwdzNrce=m[QFcao\P^t%AI%+We|`ۓڟQܑo7ߑH0ȁdmUl||Rߺ#zHW/ZWXMxw$"c'G@p#nSKf5w#""L>l0v }^0LMzoY#7W1 ˣR)ww=ԋejǡ]&=~~4wݛy&t_}댻 Ɩ8Ybξ df`7_E Ɠeq{=]wV5E _Wz[-sA!ݳȌӞJo:r$}=a=I~w_)ihY5cMB f|+_c/eT:Rc<~weU  IOd2^ӄx)*('*A*JI,Sj{W7D;(^'Xads#ROVӳn)6~۵!#@ބY i·f+Ga eREǿN'W|ШƓ%]_CǥA}@Ԕi(?7&kg뿌hf#c0B'ˠZ5.^yg- (̿GԾ7~S=UTgFՏXR,~KRП:~ S,>\w7ƥd\W\y:y>;WBeFgx00YEMlK#@9>V7WEFBJ,=Uix",1[઒T;Ǻo66ɯ)_Cd\b\|ှڶg!cJ@JV/0@ K!&?Fioz/W[VX]fe =< fjJ#l#-4chi>$h)п?WѺ<56LCcֵyKiw%k|W}s VB%լ\Q JSO04zS wA[}s_9ʩ?OwL_%@?hOSVAj=G?LE܁-'} <2BbB,q^bW@HJI?N^K*׫))E8U=-iZm4Or/^?e߮7{:I.25}+~Ms=pB6 ߛnA"rZd\H x_:U~WXkWrzJf 57"8Q0 KUZ*8e$l@&~`G^ZժZ=XmR2h\8F]βˋ6s*%,3drEeR#cʂ6':/+?*6?gH صzCC|JO^KV)ј|_ϭuz%tx%*zW4e^bfGg~]ߊoZNy{Bj襮ՊwSXz8i_'W~UPIMzʽoQ5xC7u_IW5]+S ZoaAfxQ = _'k\떞EHŸzz[4E4w=vն!) ˂ZzuEO=>lHD޹'2½Cpz9.>5SGBzb[Zn^|&SCX- nL WpD [H&7oljA%˙2y]3~MrcXp238Q}yGCɄ(6}_A{SKXգa??īT^U(Fz"sJ53˧I:={ A4|zX1$y-EGw|}ARY5)hM&/^wKthzY[E+h_ nǤ3rh2GW}-anÒ&v>-mth&Ț&bLMXD?!f+Ec>78kwA4W6a]xeqDR(tѢ:'Sxu֦~dsK/C^|Z~Q}S~%2;n:~Dn0b~#@c .cLR 8$kmy>kUZ #;׫?F V%bV?BRYWoK:ɭ^<ֽhU轠E,G1ė<g">?H6tHJ{jyWIϿDD7*^42.?s[/>"(i .û)AՂ %H/_EMDDи&~"xOO4^V?ש}')˔I )))R1/X4#{bӚIWѳ\P"T]޽j_ÐңǗ9݄ B(@uAhw d̴(z 2JS࢕{_1S6 -; aFFl9}O~#ӵGUm>!OW_xָx"VKZkA/wL^K1Smf1B~F41?v?N}{>e䤗U}#%'XpVL_쾿nQ_W}-{_Ccz-0A#-^V~F)/Uj߫Wj߯ҬO뿕zk4t%`xk^ bAi\:oјZW4|Mmy> :|ݫoۓ)F=߲Ԟ}{ؚ&1cvDzXjsZZJ\/r ׻B\E}7yB[/*u_|IuTSsy}Es0^&#Xբ=EWe.oruҽI`28JcD5G3DZԷ'E^"V{!񓈚~ 0\'ca0Ϥ@843a3:kI]|ḓxR$qJ9 (P|Wfc 7F\rܷrUKCm`hb\4&v%O'/ !4~ 6AVM;݅'d16QS5.}|S6y~Lt <:$A0)>/S"J"RzlF8O|v zi{bDtdfC(``?Hj@ɏk]zrCm\X.4q Z^a/~KRR$'2>pMԾ!טɕFcfrTbecߗ-W#A~^n^Ė_+R/)=pެK!2c%L3x)hάx+;M`@8۶rX_E4bxK6?c?ZξB p:*TGNN]!=k\ /iӗͿʿy:qi?'AINYj\'rD,}[C^T^`SG}2}sDܓh{~lߊ'6B)k具~|S`qn Y=/1~X#ZX/J7'gWzIlmgu#ȳ }=FsTa?e|ׂMcb_}]]{f it י!^|i &}+bWkӧ{Y A#}hK؍v:O__ֿZYڹ<ᅲ~UFt RsO ^OWUuqN]Wh@\v>Y濈з\ZLkF} i^W'?BYeu'/=}"olֻס~+kI?ҷjB^{j[*V_}%Х/mWV&cd_G]o^_6[,Ri=J݉{ '~#;W֯ե/+i 6P<թsXkj%!Fɻj\6cI5~O sDULO;cS֡\THvG-N_0BF` ax,ǩ6? ]0 z3~j>>Qϻ %xiL'%"PФH#?p鄽g0Gc;x )8},˿RZ qJȰx\oZJ˓ ԆDuۚ/cUOtB2'_qD_ǚ$i4l>^]i[9ƴڷarvGu(iKD9SoܗhejH`N$q3c䞾;_'0Jh*N++q:}[Wj,*{G] -E"~)*,x6 "/,?-MqWghnjPH-a=R3QO}׭ -ssA7^O. {/n%z50n0(IwDKe|^>ֺ׈]oc`VI!lMc=_4 MRHxBW _O@k9r#4w'SbcbyS}6m4g8f^ZGh"|a IP#TPšk8uR`R:h1O` e}L;/gI"/p"#<za · s$8D >o,H㠗pV_WIheza ٨2e*KF#-ĒB]H|uNr\g7z 㧏 :9_-Iߍ [Ҁ0&٪2BSɃ 4#|a1y{kjmVuP!HC/y*Uk,q]'d+j{ix,&u R\6qyx0AtI}pE0#8U?&E370Viwvjec'Zm6PMo\yM|'~V~{'jshqnټB$%1̞Kk{[a|}_q+m,ϟ I?^09{˳jlk ikR_whIx'V7vY?rzr߭,]{Fxzo/A{3Tד?(ߋ\_' g*%pp} =e>ҩ:׺=$pkc!R_$IRnlA2 #^~l9p ( a@X"PT,E!PDNW\YtuuJN)>?:m{OGU0GܽWu{1'| fi% 0HwZZqL7Ӱp=;=lc7MŪzL1yʿ'p82S`y &ʓ A<10'7Kt|s~wf9ԭ3J>S j^h#3:Bc)Ľف$ @P,4 pF uZseԢ^[Chߤq\Jvb¤k˻?%_9KΥV٠~]z\\nepO}W_}fKUPT]P]0?nPkw ƃyK>@7J^Y@hL}.~z+w~}j`YY/ D_6pL ‚P6`XJ! Jx*2 d˫>~S<>OiO>c KbmXlQn~^/n]c\O߅VTiݜA.' k P=( re+ׄYTv, ܭJkҴ OHA\O(Y컻M%_TKnsBЈB9򢗓l`&* @PL$ J$ sL K*8ү5Nk(շǻ~;\\MWzfɰ,j)%f»Bp竊b(oBt+EvwഥGFjw=}sBsxeT>5gEʦv`%A1I\L9/jJ;ޓ.PM{sCϛ]$+'1v!ܧL qRYhXO^ؓ 6R h7ޮ/\Za#M Y gO(<HoQq{ =# 5Y!E  CtQ}@Lw}~>>6Qd ؾ: >2VE"&>ݒ8ec*`H7z+DÇ&CAأ &lg$//͑$`s7g%q\$wv'A!h/(v1@Y"x:g90(503.Y0R⪱!f0~W'D3Bk:2dWy>C;B< mMz_,D5a %he}O*} Z=4ꢟZQ/|diZ78$Hz$GI;'dH2~:T(O^Wڽ ׌ 1w 28S6L]Ћʿ@/E!pQ{12ІH[/%Q]Fg`"f?wܓ',~|=* FOЧ-z+kDao//#Ѐba^ﻨ_'J߈˓ zP{ɭ~x9*չ/NHJW .΃#PvR2g3vj != ۮJvQzrk>&.~zwfJ|0wႲw=?۩xt?!_І~ZcsEqV׷[ġƙ6Чo_@iC={d`t0G/vqne`GE7 |wn`p'6P͗K:)9UU{~>$ {#X%]IB2jzxN~2-ט>ogB 8"w c 662(qÏ3>{'^}!27g* 6.uz(W^-O~>E_B(Eo"YO&auœ55zH^57-=!K~BC/ky?*{hV$;XLϽ1]uM۩z'?ע/{_)f3j_ꭔo764Kc;Xx}swQ Y|W Kߗ^|ؼA!h^'Be 0/ nVtoNY 8}|G K>'+^YMwхަj"WSVZ?_41>]gs5HU 5li-Idm%\zDe׻2IE$mh{,5j-E'ww] ! .cl|QOoD[ʻ{q}tGjwK1m{$BO~E$Y.?I)=?~J)Aİ{w!޾w!*c=.k=dψ D&c'v9iݫ~vwwhE|f\r|NO! A$*,WįbyZ[E*{^J+uOD _~qv)zU>hߤGv\?V9|/׺un断\Z'ӊ $ŭK̐C? <k}աצyAz^{_)>ɻІ glmChtăwT޽޹T-^OͭWٮ/c\OkW~Mz_j_DN\Y1|7atQ8k{ ^|X;HM`:v6Kw^ \)L^&8Ws.nNsD b'43b!A~cVzisfrђa 0>}5㜂6o`9ߴcQ׸!ELA2/Q% zmύ]q'E[kY-2@!=epljDh)T]Pz٫#)6io䞋]UV8ڵW|%S6imۤ$1p<FvZWeqX^+K} l=IJuw FD@_?i?2+"rodD,c%d Pޣ/DT"[@ ""|/FV mOߙ{ n1AhoL&׎U^PɅ>JIN)Kd;jLUv4C9Z{|ImU(|R|?A[ >E=Xj?apG̩)\6ĝSBBqRbK v^aT36u9m:,X4|c/Q(@vtϽݬ7RlKLh4M)ci:ӯٟ>|iy+zi vJdW1c O[$RSj-w`nupM Ȏok2D\a [(Lf}ꍠn_D:'X {ABAs?e힍x=6c:$*i,hq*Ph5&_!gzyRabkPTLwyyk|d9 ciw~~<ր[ǎAowmjOZ}J ˂jL\A'Wv^g}5-ZٯЌ4b_5}rs,sPRoHw׭NNZnY$]No#z^&߱R_p€.*:;n7ľA% J}K|GdXe/G}-ѕUV־U ._EX14_UlӪ\1-dw#9ACrjbA߻\D'H(ֹkS{_B8i;:VLg&VfYXLiw ?e҂tO/_.Z~832e1%=^$>vD_I"v2[ˆ+lk0`P^s81pBM|, 7oK/n¡늓.~ߔğ?}G1GrnI5Po=}̞(BmcL},U{B 5tIEqˢ-͵2Bw𑾳 蟤@@EL-EScMJޖ3;E{|~;ﷵk>8sWي\fa{u!0B6y@GHeknkeIͯ_;3\Ou2eG,ar #=Q$7+?Y(춭{lWIiqZªjmFm ȏGVQ*/h\\gIZ*"DaGLCf[4T["~Eыz]}Wu\~wܞqJ20w*FY!yo1%ьTr'྅{C/WdThe,ղك=取YN\v}婭ˁ˽!jI6r$B$Cqz ĿZ׸C層Qu,G<'-{O2$YP ߬RQc2 MhZר >?zQ[|U~)oj93)yd#\&ww>_/ɗ [/ôrѻ)ay!hZޠxTwBY^ED "{'+3ߕf9'B8cf|Eď>ejv2z.]n[V W*\Hl8**}L]TA rYҶտ⩒"@d W#[ 316c7~$lA2篤qdw;XoXUF+\N/W=VUp]{o"  QZA Bւ@&>SPc.*Qc?x>b1Q<.`^^j^1 ht#n_s 2>OQh&'pF qTgJTo^n׻@B~DcqM Eo[_}{{evLKXn`o{^#Q$S hǮ`ai3J!, 5C۝ >2%KD{?@.|#DGԟnoeiͤ_ MU{\ּWMʋ;/~/BcTT,OxQSW},)rŋ^@*-7vﻴH޻&|8A4 -eСdf-z?n!I}5?qFE@bP|zMSˉ!7ry0&._9~f ŏ1G@!ﶰۙ4UETX \P"V+x /GlJpa7Lg1F \i2b8O{(YΑ7G %Z ߦdNa:!9+/zݏWcE;o}] 8^J03KKv k {N-}/":Sڏ^q"w@ieY"e>V>NSm%t 3qr F ;Ӧ?wWk}w~z/-03(eY4_q2 c7!P2SW pǏq gd%v{obeN!˅cA| Wǘec 9F67l{ =[.ƋJkQquyY+,FnPV?lo,3mq*ǧ()FUb?UCAqcD,>Gqߖ]/~)ywh[pz3 1g _ߛkGP:(z- @BȬڔM؀/^}ׂ뽹3^g[לiZ 'IfPy3}9qKр?v U ehsswu UhV1y~Ɖ(aF;c+ j s%н;UV'ڝ~aFRQ>ejTf٩΅zӑe'1h{ &\ 8ܟ~. qF>0w}&@#N!/빪MB9}+62ǻQU Vӿo+^s+Z(@ʵK"TVbRժʭYw.k|~{Dq럻!V^O0wpga?LDNfQe\My7b7_j(r\^KC_UϒVI徻DkZ_z}ߒ ہ4 8 `Z2(%7wYTw+jO GktK_>tlSOJ $p |@3thr,-N$ eAbK|Viܵn}q> r\!;W~1ux=___lYuYɍ[5"kJrRB֬սZN$&#)À, BPH"nu)X֮x?GwSvNAw^>D?ww%Ϝ4JGZ/Tۯ0L"ny2k^ }/ 3J1THק"aB;8JN(ɦNfP>BGv72#8޺u} kDbRPh"[3]( bXhF D`FWdV.%5.*N_|t~o_%zSYaW<΍.ngWM%̄?}NCa=>tcFԬ}ϧClWN8>{kk|ֵ1%LxE0^.Pë)~oP[VH](ׯ_p!iۚwooL PXBa(X* Jt5̋6UujNy|eW3>g>m? iǞAؑЦ{x'7[7m5l/L#\W9ĹW* lOʠ$ h Wzgn;p >|h@܅!ϱ񄮦OtJDho;ZW%>顦IIPp ,$ @L$C 9n[gUI*ɬ$]V]^i͛Ǭo\k[O ޮ*7O>0;_[ lȀVilu蓉26"^,Z kfy/^gC x ?DmLG}[f. Ѵl[eaZJ)M[\}x&F D` `,7 a`$ bU\nnʄ|yOW1ّRkMSooSV ~&~Oh<ߢ(}BY8 NČQRC+`Pyf6 ϑ붱 fRUyIo؀^@JkC_7hDQА[-bneyvObF\P/س` (" P @PjB&z)7v&Uy#U{&^rp<}oS-鶧r{zq5cgӪV;GkI˚偛S֋sbTY۪2*TεmQ!f.}[ jNkwG.q 27t&khFcv b慬Oê:Ci^"I`8Q3&3z`fm_Y_[zBƋb2f;"6::@ɁW|q"ʗڷ K7eZ|`ņZXlγǬac<"{wV:X-\G֫)҂q};PH4Q)7^^^X}\^_AB5EI >0ݖ@x4hZj(l/`Gߋ?oJRlלC zzkoݫI]׭UzhA J2eϲ0ug6k=ZZu w0w$(\$g_qj ܤB??+WZs͘:{$]PXD+ PTv"dU]ޯ^ ɻE~:Е}9=|[Q9*!vM5qGqnfO˻Ms63!>K͍ }Ў&Td&[ ;uf. _.sޱP  \t?oKsd#,_a)&_V0,dG:}țk' W 28 pKy8jޣ-݂BSu\ʻ~)%zf%WĂtgfX>v>(4{2CHR9;BC[?Rw fA{#[8;W#JT8a7rmF{G{/qFuT *@lb0coۤ1T Z4UgR;D JFep/+JnW0ڑɔXg~O[f^%f&Y(`b> 9@?/tҼ xY{&oEPB]Wx#ha'+E6H[kw_ܥ7]'k_ͣsH :h% i8?~Qo]a؄DSY>~ybԆwVK!_YPԤtSZc+ }d-Gwh/̻k@ Ō-+䇞VKȍW|_ߐK>=E2L $u{0/ DBs@dg31GF% ! Kl'etBt/j].?7/8ne]}ɏ_f6GY\Φ ,07t4:=~K/32{/#ϖѱZjG;HY40@[L;h*kRZdG%szou{ͅޖ઻Lp|@TEEV Jr+4ґ0D=S]9JģG? m^w\dUךx?(.)r3cEMMug}JW~u/PQs`U-5?3 -,e ̊m #+s/ v4/-{+ I5A>Jc&e:IT2Iֶ C=by3*m'KG {[db.j^[A X!_m^ 8o0/_w#'Ap\I`.":s/'79q$L.Kqkyq"8:8Yˑסx%}XI0z0\h݅s,]5ajl_HVx 4̑_~R (WT%5p)~#QgF{ʽ] Jc)~R$~Qs{R}9=~$b< ,]?/ Fc,9cGN1f#|LUVSX'ǗĔ,i՚g (b8}eAey`D,mKh$HR^_3OOj GsPV@eUz影N_9<\5_t`,ӗ &E6(ݬN[:rsLTG{]B8=D0Cup{Ç3=@nv]pU#Q"2!bp pA&w^UV#k:~7`ֽN_k Gne+ׯ4㴓h.C@Ѡ`^nE/{L=Ӑ 壮]K|{ e3yN(RL:ey*w'v^Y%}װPUv!bp6+bأ]DCCXYrQR#HW.MbF7)R3.SKY3Kc*eϖ*P: hKUx%=t :1)tJG'4uvpYBMq@X;p~BD!0lGWrpa5wT,ڵ@v]y7z_WIRԫ7HAYi [] 8 h/̚qm2jP`){u=XYJFk@1/Y(J(`3V{ 9)J2[t<A!XC0T٨MnL+K-f1\dصIy=aOAUDkR?_=2DLX遦tQ VS'lQ $1Э @ E|e\-J/Ro {0,`.܄8<>jwUy TIมY|'0u$!\"c9`'DF;.b5Kq>4yBc.2zxО ޽ԙṇ: Z|bf7!M(0v"&`poRFZ% όTɵ'^;iHjױWnEo9J;KTtw1*]uhՖZ)OMRhBX#ecrc9 K֪=xt ݣ- xoA 7 / qpQ'F } :?SǠQ >x1XUw}%㌢^w^Sae&Nba;Ǿ8#d4׺AXܲ#]} RA-.*~ ׈'o +/)$Od::\=ā&7\&' n:/bR!\_n{F-of<7 nAgO_IQxA`[ Xr>,P;*)el>r@l}L^E< uN,@+/vSSc&5sC)iCj 4wz'bܡy1[0rR45@_Lˣ3_ <xο"(<,1˞+k˟> 5jԔ4qV@8߄m]}\C+9?wi~ʫzR HbԾŜ39`3Jj"'鬒% d; j52Hov#jL}gفЍ(N+ˏAћbܘfXrC8D[)/yĄ(= ; Odg:ۿJ Qر x#>8̄6XP7/" 5gy9Zj|WyќeTKoW07<mqz;DE_כZ}  !^ɈxԽU~UaBDvkw"*of vh *ZjN[~+͚kiWUq`+jnak_{8RWrRX&t#Y36$"/\J/0#;-{ʽZr}OYj{?1aI;sO~6{wTg{T:|]Oz_,4pBDOkz&$8#3?ܟۗۨ}G*zp1G'H8%ƀo N<@eOsu1ߝWswAT$qbGc/ikءOacV_PV;o&Mz'#7;xNyX̤"j]אDY{>=O|g' ךzs<)Mrhs\9oą Y4&_vlș~kƓ.x5]a n@GxZN_=k7hKSlӜ9|ek (ѥ,.U} gLz{O% _ud "ܒR-slgbb"\y~N/_ w>o `@oH:\GjXES*E aG٠]Pi`ݸv#]aA $A' wuLXϗW-n?K\v/Z2q+(78hX WalC^X(`mJ7 en r#tu¡8FdWeoK3\ ,| axw/(ilXJ=YwchX}X@xa Lp)w-xjӤҬD|ܪ^93/[=4#}2g@d Կ P\aKQEQ}`}YDć1%"lR1pGbo&0 n7?փmM&A7wq//v4^.q; Z' *D9Ssayf..@8zEt! [بxoHlOK XXG0@Gb/YTBZz]ST8 ^_GA-63;ktB U ̬ 5 b~@@mP0Z6c l~sJ?/wh&_O8xx>† Оc/Q L?^J _[QtfOmC'2 Ag#߼]P+=uj}\%#&ׂ8鏿e1bp~i9xq3>r,r.R~{/ܶϗlXϏr ^TH85c3Qf$11FhLl_y6QK.6ȩ { ar8*]!TV7(\|a C~߼aBS.E+X4TlÂeOMQo":IX㞗u-腛}iG) ؙr~>ᵎ|ՄlJ,ZYM3SK& b^ ?LAfȶ* fnoh Pd9s0~GAԳ;IM,0mb%GZrDr} <2OX)5<,{NGeKBW/!7᲼_#}z\DIŻվ*' `&kgIaۖ <-p:X +l,JH=q>=MMI}ddg~R/M?1pW;ՊG#og|+Wv12BѼv8 6S_Ϭ't| g$M|HӮ?0>N0 ?E](Wsqy}DeGMo5c ]4=^]|N`$3 ᚕ⏧?F;/HdK@ԉڹ2>B-+p@H,7؞{7M܅ᜅo_A&Ԃt #pW5Bnm Q}' tf0!v~ƣax !ZX:Kº{ ?IW[jqx#949 {ԗH/' 9qBgF}2X d5RX<weI/_qq|ԙVx(/qu~FӨ[K P2v[Wb̃lGl<Ğ[X3cL7jl e9Q|E2m:CZ]C0^Hk]b5uCϵ/sz>xԤ[f ޔvRao͕ Ja%= HR.'6qy!漴kbFs͉-&aNMlaELn8l/CQuMƌa:HPJeP06X ]"?EySaQl7߿Vݯv_+ޒp-J/%%DLS:i?O%cm^.ZPGw?IU"H+Ww渨Z֖&Ɋs |Nie-:}` |?6ơQYh]zo^O}pw˗z6 ٺz,h][0=D'R9 g6|Ĺ89}iJkR:>(bNѬtVe\#- .Usby.`Xga G/Qİ8)=W^K߃v^%B4o0PB,HBx5| A'lJ7wv]WzX\ޭ_Fo, `Pww |wخ?~ EMGiW$n:,i/H{c WP)_Z^O'z}kڵ}T#Wku6  2Vsdr,‚'lk/v')aTz?b)_LkXE(~j L35_R{Qso+yCRR|[N0()+s QpRAH .p:N|@Sh'CįvXnǺ0ӱסWU;~y`4 ǣ=ŠO?F TvfQw YC@z ջ< "@_6N: ρ%\a#s`| s12Կ/%E<:a ,T9!?,4(4!# s5|@?nT =J"FFX,H2)3fuY ;H;kӗFƨimzd8Ņ5PqK[y Z=̐*%3ac1:vq1}"1%"Ec%#,~r~Ö# 7I3}fS#d?E%vI]{+\Cc a8IKbQ$z\9+-n0LښYz01tl=Fѐ3nbg!lh;nV" =?+Q-t"i.翂VӜX<xh$pxBz*v Nԙ4oԎA߽}"3sEy?X n3爵'(! <@bPT0>5K0MTp@8#A߄z|6/:>\&^"QҖErg&$iE#AnUQRݟLy6l8X~?Z6 Hc0Ko0A/wrzd˨3Nm yac=z*'^]~җl5hX[Od!$Bb?&EB"wIbDVpFN\,ߴLUo{0w~(i篞_O\8w|:Ϊ㋁W9_s|YK*Ԝs[4bwn~6T |y6>ۣe]H _wUavY Z%3W RM`h,/< Gxr'S^JwfS'?tܢ@H5sYY<{Sҟc!y$fRx(,#@P,$ `P& ¢@TBg}%s0z^VWqRp8nCҷ]~_I~woˆ.+ƽWX j&"5~ݭa- yj;c9O R p*زw#s~6u|EWdRXz jMBPQNeYE%R׉O*j$+ €`.$@*A3Ϛ;5⛇Ft:>?k?3?}o'͞ܖ\$$rW5PW>&L=0P8RԡۛJFԋʏ{ WƇǣuP- `_gk#'/}{Nt<!uYj1JVd?Y\((TD @PJc B9+|oMUUudݸ"춟jkG=\cHz=%q~<%)ϢjN)u][o~Bw|{=a.h:<.̵ւ5RWG^/!QA KR =:q}>ی;v,']E]IUt$2(T2>;p@䌈)%} 2$]˱>Wijk:H!zhLF (@N{d tfnZ 6Z \\:mgsg;|7R(K,fB\wlM)z#qT)SWk=bH<',pAU܌zN^r[|}=r!DQH* $/f c@%Dt:P ,S1$/۔nE=~wo& 4>&OǸb,P4̱TZ4'*'HqBG`HXd[aF:>OprЅ%vi2 ZUkW~O)7Zynk>W| 8 Բ)(Tlu7@TLD AhD5&ExHf:?Cuh>%0 o:zU@rs(G 2n0:(x};G,?(e`I#8˽j0ž`Wg/0|!w`jxY7c'nZHȕ/VMI}I߿O-" l$%78)}7,=vd fPؿBMasrAhԳi{+HkcK"4DȄ3J( %@i>RyNd4Huy=r/ k0#a- >l^(,8b+jH~ W(;.N^ Y9B<&w2Rd oZ̙C4JH8j -_wh}deGF(\qhcM/}G'*ʰ/¦+@>Ü}'E>(F.80H]:`9;1XV\Qp,y.9B@$ "Gjtw Wz/bVɭj)Sj śSvh;M1ÊԻִʛt9'Ҽg$l/_\뺵ܹż}|(1~`.(rd@%`B8XK/RIq[iTO |iĬk`'̸FGIߊr+U mٌ߹R:Of I*.o>X0y8C߿$(WL:\6Ype\68ϕ'mw>ߔl<<+͹xjYN*+9*ދU`' y>pNJ}GבzްF8a -۸T |Y{CE>Hj x~".kƴI'qc1gˍj\ ϸNn _]Y.oNZ'VD(]ƚ ώE6݉zv;͐V:rد:o1e}*4-z0M1V) h PN bZm[B6 )6=2 ";'7߹x:tsm%唺a;Rwyd[%|!'ֽkK8'8Dn|澲zn?_E? /-X%J1Oދ∆PڢnB!*AlAR:.0'O1{$4>8euQBPbҒp4{U*Ae, z=d}!tߦ ԌK/(d$Upkc"-)7.2Cl."md׍1Nl6u+>V_爔_wSz<뻳 3tgt#wEry\#wtC$V 1O%|OϨ!EԺqe=.d'Pc-lKL,۟A'r^Fjk h_Y(aj*#vWc'm(dQuO(fjf͂H\xr!Z jhQ§P cD*j-CZY MԝDCS~>2(ZqPxߖ%#ujͽ:Kf~IѸEZIICMQjb4u:HH o^=>V^U_IűTFBav>+b(W^K*/{^8b} y\xHh/Uqu\Zo>8;?՚I} hZt')i;7#Ǔ4p |  zgn8I!-Z8BZ/,r> sT0hV}@@c~- wuŭO_M~sp#ep}~T+/ !&*au~{m~~\"BPpJy1C?|ԭhBG?I=k'H*Zڀ{{?{jǥzuzׇ7뫋\,1,NтqQ `ʛ?,I\DuWB5}d}'W?PX0겲82S#"# >JגޜCDm"7q  wx[}9{E^_űoND͎qYSAfPȔf+˛eT*ᇺ7 z+_׀OV28"2T ɻ،:,28 `dQ*#Zcݍ#i9xpop &2~cc8pg?-9<;\>`SjGa5Pĩ+?ﻏ% >c alMٍ*5) Ew@Ҙw)Zehv5XV  GSfL+zk(p[ V&G~!T`d¡-+⷗L%?X6fC)\ ?(( z@Y{JƓy@`/{$/Y9Q\ʫ3G>Ў!ӨQ->)+u\/A5=n:S"E` .tW%QQ{o- ":֐1ҿp`2ׇ1"_Zܾ<7#|2?W-K^AV}޽QgA@zcJf2%cp+DJA7ƁA$Yoc^P5vI-~(,y |~6= 8x.ٸ/T$pXj{v]c >K|A*kŗ/-ј+G&}psIv(_  zzU lZ8uO[yWkވW`=!f\Wa0.`yF2X*-mpYVmOi0̭7/4@ Hp\}O񦪚ϒBJ|Buf{ IF|´6kW|VeR#aXA>hK'/)Y _r1-x#9Z: @Qr(pUf1_.O/ ~ ʝS>2>H:&,XU%M!^Vj}VLyd\4[`k*.V ?\c'yXEe!cyxudPQVW~NU5E/媘ׂ"{Pѻb)T;c<`z|K4by 1OƇn |7y?k١p*ZՂBLn_ఄcK7"n:\I{lU4jh)YKyB>dnÂK-hV0}ӿ{ niB =7B|(oڭմ"rw@FNbw^{&ړA'OBe..nC"W !Q$']d᳓#y(C=EոE{G~u~1n5! <ҡO,OkpuIaR>Xxيp]azMCiA)LLg.YVuMY}|]_cSfaUQ*(кڸ bnb'(1BTlj!ߧ#,aOʙ+(Hzz͍ Ym$OhFfQ#j%x\5_u%0Tx&]ADjIqаH+$-. a?0Sf!Xһ߾ hꂈnם/_m(߻nebuq*ssD4+_:}\GVWx"&KM06a[]0 ~?L7;vH!)kȤm1 ;/$ڒӗBQ sr': TY?6_9T?|Nm\=Dfyu`;dZj#'A<͑t "_ZA JTސ .(&=j .'h,Ȼ*GIϣW?]QZL뼑ff9H#jMRe H?Z-g^zAऌyc,mg4q3LF,Һ6\zoޢDWIw0Aiq%MM3VԿ&?~1[% 9׍Dufn=V^xb\hG]؁.sGw&}^_W+p'`QYpcE@ :ڤDuQ>Ϳ`S[?rX3u WdD#w#" cx,"ņ_I.?H?O+AȎ|["^Dbaz{>f[uS۴qӥU"j{Fܣ=J$V]&}@6.\2}D< <$ֽo}|``퓙g%oR+7_߫׫~ֶ?:!AEjEA]h&ϴNhS^$wwZBspm˿0.s @%7鵓dh$!=a "kqBU'D#|"Ϸ%w/OM=4sCx:>Kx!) v/p:>AxSXo*_*˟פYD^+Eo~h&#YY2;P Zu3A$ԸYl_ ׎?t&]UoHNqN:5apX6XǢV%9!0)TT17LJ͢R'}lIΦ>~Ȟ$x_$uusI<X0y>\} E!)-*o,Xn#lKW_4bXU QH8Sc/.ۯ5F'UR#7w&DNUv E41A//ƑǾ:Jfj8ݒ1 6/-,OZA\y;hݒ Wܿ+uMu!5/DYTb#]55ܨWg*5jgE2ڏ|Gs#q+ 3[܂:Dc u/oGroܖ D lKGJGnb?BSȧrx b9pf˅ʿXAK\:XDAU%Rqh*Q\"qmL񜱽:v!+}3F znhJ RWtp"CA!|K/-'1ewv8:|5pCs_~wŕS ÏVXc`6ҙ~7JGor8Kw޽][7( }:B{nv!`!e-7>YI.ZHN a[/ L#ܲzL }02@L&Tx ZU(?WҮH})G'#lwQS%&OM֫7.H~ۂm۞_He~;~ړ,oYN4+-nF/X/{I}=c$I`P-Hrbg: @jŏmױ⠪yDؕQ*,*SҔH@W7_ p4Kl_5 MG򢝒O!uʺWA2w{_fVDGDr]w>Z''Vb噡5I~*>4 !u=28 NicOi(&ܥ턌:L.eQU BͷcO VCf+tϗÂML 9Ma!Dd+^F˥:ٕx.73Z9vU7&gu*%*wLŊHBlh'/}lV[/?en{忓ïid]wºܡ >_~׺xuf4s/S\48yr:)9<@~\)3@^n >8`"NDiX@ e }`QQ;%$(PU[ZQ/#?vb :_, Qh&tkY$jTqF C%?@Y j>|LW?YAҧjO۰ %ʦAk{޵w}b ;$"MfwY{-ۈ qry %N#tj1TNk'A2W2"gaDo45%L54`3Ͳ&3z1b?S_v-g4rKaA+Ly  IW%Ry m 3[Eܵ050P!A ~w ./K͸9,Uɚ#: AŹ_u  , c,c.LwH֍eps }v>YR2 &.-C\V  Moe/wF;(?i[[ M"6a,t-t!JoHW~x^Оv'U~W]=9_!;Xọ?@~@a$ĺ$w,͎vqJb\] {g7>n;1y-G@dCq|Y cJLpsĉ jR|gPQ}6'҈1cBo`TNZr˼hhTgkL\vT{wZ=_=d<#2Pzݍ)mƊQhPֵa(ZjE@(U>iyc0kYF`?p'w-SF!vKx ?_W_ =IPHۻV _ q:_Mް.,,fȐ8$9ŕ"n %59#kf>l>:b#?g{/psJZ ߡ_?]üB4rUnl^2Kub#2w. snw&:zn&y_'A> HC@ʹGLԛ8ΰRr 8 ɋۉcHN=eH{ImUH_ ~[q /Hq=E2Uy a wMelu*}'W$ߡ1w\Ϝw~`|%NSp pBDIe`(1upwQO P%01Ȁw$ȕϥ2?/α+a#t ujl M2|Ȩ;-UӨ|*XU8bMGѲN%N!m8/)b VUadEk8PDr|W]U%S4&~8M;GtH fʁz|s[1\8ocKDh+R.B_YXc>sXR%79M)~&zk''Wx*@8'V+ͬH 4!^ H# _Bg=k4y'ayG,8!-x&]7RY/Zk{=`w 7MiJ gO KoE{viZci\:w{sy*ʙ.me{d}w +P xZ ȯ`U QCUR˟sx$7婄~>| [q8m}K x+3EwՆ>'CML JĨTܶ%fkyg!3tv,Ƨ͒I AVc` W:!.[[k)1-:D*Guh=9`.։x78, Hj/&v $P3{ Z%T0Tu nnȵ|yx/ {fſC&e!CBc|2& !NUeNrKǯ]1۱ n}Ґ<V tFMXw^l֯TG`ezTY#Hm H8oG }~OռҍYר |#r52 z1{e)|C,iVG9imv֍SsAg +t γ 4rZw@x>O2V(m=-H~$ 7zsQAmB3T盿еWrA|^^q?M( 9rA6SK젠^b=ulξ]]<ֵe]8*2B" ? R G5䄾J:L&|M[u =_/WcMm]a2j]PUI]/s1lV4slj_% 2\\ҫǮEw^_!??Ie)6|>YhKm/ϛn;`aE_ .c[Jnv>ע;9]abu?h{Dk2^э'$J |n\_ "lCaL] Ht64@m6P^  p4L,6cm'}Nd7 <4u THv3bvbxhdpInw-ã Ug4 3"S :l3Ӎ4C|Cmhܝ}.6wV հKr|n)۳֟Vm*F|162y&reX}}d 6Rσƃ'/-AX Fdw6K>'Q|Jy5,'.XǸ쥄p 9ix) ƔV +$Ԕ$ AA\(& @`(B$0Dog3^xU;x>4NOܸ7a~Kо_WЛWCbCr} /en t{p2.@<$ĢZiP(Q PxqB{@R(kh ڹ) ,H"PP, pBE9z{̄?~YR^o?wv㈍악k۟TƎo ʲт}0{Ԧd[§y9*btސ/=P;(M1:Vɖ]!Ua["hcT,T$ BBA(P* @XH AX*B&sjwZW~M =>.ޞ/y+]H^r"_ [:>K `~MEyocȠڳDX耜Gb\ Z/xA/> W񊓄Ud%gYQ 9"J`;yΆ!-9%Uq\7DoTUt/m¾pF_]a;B]~z)nL6'.Ԕs UroiUDu&8n%XUE9xbM^aQJ+Q0#;kF::_WL,몎L^eN=-.HZ'İ#28 NXbKzbZ^o`2q䴿/tTT`­] C8|]&z<1g7y'>$®36(-wD/H߉\8 [GYDӢC_ەuoY )n$MNJ S08A#IĘDf h9j~ ^s+bb]\'s7^c jYU8 ޵GO_% (ƇL۴;F4tCJ<. Ć(r^hU"d4_iw|o)iȍ`M!?1 |;畠Þ?*d&q}ʲ\չ${3eX'(ܻ{m_SځP;~25G!qHCAq(Ԉ2£0$ €T.ƸnkzΛM˗ǰU^<yc׹nUiK6V.P89Lu/ҴiFUP#`*>ntI!R [j4\ Z/ݫzpF [tiZp+̛+Jޓd"+l( pe8~A* }h_EU07jĞUU'ݯxCۣ}(`rㅒ~X$RO ;A^G6'`1\ #oQ,sbQfkgxFBu0wm{ZW8y&B`̨!|q ^9n>RB;.]A8Â<K7{5덳7&ہAHh%//; v`c{ Ny9'ۨa.+( x 2#?G575/Ŷi$0 {ÃEΖ:Ω~j'2gdwOʀK3_ԵrNx:h%;EG^pJQ ̋D~Sp ͊k_ aāw$i30X8 /NcwK ܅^y< _2ȭ_?$A!B^F/!67 Eu'[QkfbnSÄ8p{Y0W7 @% yݎ8AQbB Av/B݆P[ X?R+{j/տZ{zoW$cj}I01Q3 \^\ʮzO0"]>"uj׫z)={꿵*dq (06HI ~f8 bI.KoJILc6w-kO1+{=ޖ^z{-},zx$/TrݽeGt'{+ypQr$/$SU&\/@RB, x,r= 8.#h`;47dĆ"r?JQ4aeg(*|bS3Uq6-L3H4bdӘ-iҘ|cm+nZq'yHK2&>߻QQX55q -! M̅6 7t8)ֿZJЙ}^V.9՛$Y}# px--`n%Q &EHHX,t;}\nץTe OeZ/{iWaG<)k{Gz*bh؛\m_ 9߾\qm֖ hj"|Z4]_gۉ Y5>\ !nA1W|In}D>{_~;36`=@7,K}8՜9"=.:/5"785q/ liS,snCOp'Nww[1K/1&C0蕧$ |}n)|qَѓeB+y}o[W*8 m^PR d|a=lN77AX=_k'ӰH#=L#$nWq:voٿFCce0=̽/˲v7 8)re\y.aH+9rXJ,h߳k`W5Ĝ4+Lxp`n<5/lD+$2,^{&@ӌ=~(ɣMB'r,~v邒`-O{{`,ge1@n<Ԋ{ࠉne~ 0&|D9?%NMZTOZ)B\>zCw^K-%cT(-=ĭ|Jgo_7yF'w͵ Ȝ 'JZ=}O)p? 2 P fha{vIJ Qe>U=sZ8p G'`M b IaNHѻpJ Dq_{p0 F{ ?@Љ~?}p$L |ߩ}w!(?o%-=O_¶O_N;/ N<,Ԫl9⬊m3>kx hn|rA,Lrk&<gwyl<%hL |(oD,k6e/YI/|w>,NZq6Z w+_BADXfc:``KnԿ9}Z_1V j{7I赓d'Vh#1MӟK&%Ef)<.h |*G-f x*f5$#(qu8c? x,+b_hӐ+ }a>\Dm-@hxBSlm~3 ZO?E1 Ǝ2] %_bt_߱ȧk1Kr/k)nB XRyܰ]Z?'܎s;ZcôsK|´ڛ/q'xϢ!- cހNv3TO21 $᧌a&9v6$ I˜/FlY"Za@vNG27ae8HeZ2<|#o3hiϐL| 0J MM5+*7=8'Mzs% 'D &&:JΕX`ƯeVzLkҫ,qu@ٌqw>O0n5\s>* 6tkO^D͢ H%ſ' ^{Z~{Jo3bUw\JkD+6_Y 9a7[V| *P`kꯋyEj֬ Ys~oI{>El'Z?h TMMM 9!ڣؐPVnz?0ua|:xn6% _á._!P]hW<&Q  < o=:EK'%>y3.Rf/´X$!z^ iL۴]\KTHy^nj,X]:vdʌ`c%sf_eɰB7we^Eres4pAM߅Y{q@> õ譧{W< uA*s rQ}v4Z_KrOW>'~zR4eu7CO[S{_?P^^Za׽:4CD^!bL<0>KrJ8.bg"gi橩Q,a2`}=g Z Xܰ3ˬk 1(':=|ޅPcTZ}k߯]߯v%?לL %^!HAh,~_\hg8X/ zݯVBzu\E![lx&Ō_W; G#~}_ν='T]ZX"}<.N ~$1}prxS/B~ KTGb_֌kyHˑ04 ;M%AK_31Hˋ%;1)$_Jf}~u{N׫H[X{ dޘ І HO3ׂrٜ0B&= k&/@C+||| m2O/ p)-u,cBA|?R%~1{A'.qaQ',ScK|:`rT#-$⻱ ~!V3 ޛ;Wq [8\֏9~ȉt[I?jLf};LI)&Wi u|rߨV@tۉ0־`82Ū̄~ 8XwޢG߫~х_=S'(;~!{(]r'{HC\۾ ޚi~h-,h31ei @6TGa)̧=N[c^[lK crڧ}Z/dy/spx`WcSIOۯ4ɟW+I vjZjKOrO%f)LIy~ >9'cZ|(uޥl5[4ЙN&rI(a_\hL㧅} =%G]GG%>>;ZPF1Ӿ^^?c$$C>. 0kDG- F֪P5E$j߫OV~*LqE%:I_wێLZW2*{R.Z_Dh\~1׿.C6-4} 70c?b%=|q(?ƞ߻~̂GKib/HGV)%_"5٣2+4lإ} 8 oXQR 2(}{F6+:MU jϿ) [-0ay\1޿Sߑ=VҫLdA}I6k0!9V6i)#OM^O\Kw.Z|g-n> (Ҫs4"JpA:X4ᯧiRd'rA;l^A C4A e7i+^%:co<-,M,_4<)~J0~F*hOf/Y., V*0^: Xwb37w%^~qRS"ܟ}j1ٶ=Xɏ_[XRD9_yPh5RH{;N_+HK@ФU%F<<RAqtxs^+UN~ k5\;N_Y=?}]oѩW|~jg]bhS|Y!|9cn=ܗ.)#_I6kä탾%0:/6۹i~ W_ `|eK['ܜ#!_ZnD;V%'aXlZ A+ 5߫ׯIuT.ԉ,U \Uzkrq7r^O_0!\=0 {\ǿ^\p|EQY =;_._,o ũY?ev1g&!7L*7ѷx!KCx_w^W]SOW]z?<0 1L]I~Q/sҜ#%l aG7,  2ec6 *!<-@EUECoVt9 02,$<3u)_#VLbDycQz[֢bpqMA4w#2 &7hv%p-y'12{i|l)|4pDp3c9WX҄ %v|ޑpH XL? Y0'VjW^Xm_\׫kyo_.1n+qG>iwo C~|Xm s?a N0㣃v-ϯ'!%B0 ":_|"/TKU9p &g-b>p˖+-M^*\\'z_^ Z Pn I- 䫪9zkD^Қ_ת\+uou_DŽjoQSvGZm`bAťߕis*0׹1Zb?^O]-qô$ιTGM")${?PMW]ܙuZJ  \ %a&쳸'(4!>raw}Ho :pz#Bo/ǝr!99OUKq ,c: reEW4heZ1R7@ZG׫{^{b,wܹy ~L!;/pZruzgҮ!"\{ O;PJa렍 BN"q%ƙ}-jO>v3>jYQ BL%A1~3thOp4&:rEV H}hAWL`e!w"0oc[=}-9A6y !,V\Z&|H@͗/%I/q4Y>!Em@gFGWB\y' '?6pY7/ie| @5MH # S }ˡoDكMO;޳Ow|!JqlVÕ6OE{ZKEw}yRׁ4 s)3_hEA A%ΆBmspu"uCx58]W?)(NmA>(m=7pj!b0$qz riȯ./sc TO H uR܋Jn!0y}u> _+ٹ4\o6vߩOb|1saw8r"`u>OH>`Gא%  x`m_ x|Q!A@H>K^~hbYs=#dn>w*!h'yX}+`0c{(쟚< b4Uf>\jOKiX8?}j+X){s#$5JCfNQԭAQ/^^8+^.^${˒yਬ_'rf) 4 ?~a.8|] K?,7LIw0~_§sųz_/OBkHIL姮10j SîZ_BBĒ{; ' ’ Pm߲{Ԝ\mBc0C2p\ nA4Ivx"C擊,3OGj' Lv6)Eԩz:>D|}FOuD0T]Ba<\B]p%lnA bgbB000 Z}LybB mLӳp)AO4X= N EqN1α#5Ljz4>~5Y-H+#\+/Q z:z[j*\$?mA=OGr5,f}ܒ1@?qRwVR}ר+p5k+;J͜p p38Q(Fow*ui֊v2K믓?e];AB"ʗ՝^r_Ta/Jvg, Gu@@3?q^d/lfU򆃇6{߀tLN81QZ l#|;(H`bLj~ 5|Ʒq9!~zLѥ>Ou}f~`{*D" ubL3ގ;0sm(_yႆj їeotyw}m;iKJP +%qCWu׾S0L 3u E^ܱ_3'V;w&-bk"I]#Sx"+ c$A x fƙG8)+՘}G (_EF{<RI c]O7̥\V|%-}߬k=L)tNE%̄Ǭ#1p6l̿<u /*la|Si8ԡBk6)AGS ;~~{[Pd&$ǾO{0[/5 Mzi_(a(uAO{K\$&usQ~q<_B,;59I_"-Tc?z_/ĂN$@Cy!Sb'OW'~w0}h̆XF"1 A+uZtpﵪ=\}k\k^_ΤoWNnZZj]՝yxBwCACm͛#}4Tkc,h R  FwXNi+ M9ĩ:L9QR6UokԔG`ڈ"m7m6* W<[њ1<~v: [o UT~aq}婭jUmt2!E"ZdbeK/F@W$H&n1 s4a%W):Sp6sQG@J%3gZ]J6{-}@3T/ߚ}xcZJNkӴ i=beWz(cn.bc'0VUeUWHC駦,`gR?Wb -p<,b|yR[83̾ qK(:pzmqVfp!\Ԛ`~s*:)C/erd[QU`S~_BN )0`s#jIGXe^tEd W]{W_W&?!([r wa L _.e'{|w#w]%w^ݗ.CcI>Xrk1hꐵ 0#+aM>MN0:2| [_ -Х{߭b {Vۖs֥j[\Gz+'xH,  64+H}]'=Wu ,V I8\_T6K%A/KGI@U04 ݿ*3xѧ^'>p@BCq* > D,qذҥ iմїo͜kEU=mzz:)5Z=xv$ &z)%lWf[:yAF].i@a/us+yg*!Ld0hƢf6iVYr:>;ݸ%^R3>d1ZnkxZKdR6]k<&6\uD#иwDp$K]^+XpFjx2 #`s5˾\pxvq%p*xu:d}~L/& ڶ]ы F\7{'&Ӵ7;WNT} -Z׵R/G|6a9>ō3Uٺ[, ,{W[s~]4 %bQ2sk\DE&MTo"Ch0@UX R`nGHh}d9{'`0:KD(4O*pPvA?Vh NI '<"^u7K AZ^&u:?p5O$_^ ʓc:op菿ψR_WwUwԙEVkn?1NX{X1U0u*vWgф?ӷ-.%b ;k =_I,V;Xh#~`C> 4l],heh/;4 =`S/̜ε.F2zɵpCw{ʡBaW̘(B8HY(tt'BGL,4ѓY 9Nq =Q*^}}dTK't ǎNʩ/x :O1s {-pOoiRj)q ewV'؃$/RJyD^OE.ާ"3?>5b̫œ;+paF̭W ȣk>rwQsTdJkAB<1r'/z J͞Ds*+sgz|"_{}vR;ېM_A+JI=zYU~WRc앯)떻EjtXG*qy= \d qtx_&_X -kݔ׭,64luJU (Ê6?uLsL_vkF zv/^nS%߷!oxdD%V$$ BC@HH T& BpXn#yYs^kq^2uSNfףj^mmxAݳCy;JJwкY}!.\KH ￁ J}^g!t R%te2oYwnܞ~'F:kvJ-"",TD4 ! H(" aPL$! BaA8Xj Hd^5qmVR]pu];7Wֺ{>AE`͠?}!!'@?ou1xˣY:;m]?U:<557J)kfɨ?'dn?`~28s9 NXreU&')"osE t߼N:ZƇ*zѠRA&dݜ̭Ae1pe7j#_־'$;D%1F uCTPۇr>[Ļ:h(NX %ub*HQWyf`:Lk%XaBÀ$JXbKw5^25) "=YcN*;@ /u}Zn^vm]nsX}U}}yvxMPJ.lO6y킲z|_ dI;R.$%`Th Ăaj N~yo*OL}J:2lt8!-4}="^;|ON#Ll%3 u[Xxח kch啯O>qsKJ UI^ EXc8H V.*$@$ Q0T("BP"uk5_[u3SR/dj3K A, 1w;|߯w,k}^I}[ < \qP]#ZWUV  dnQT~Uw}˄gW,3(=rz $`YWNjBӺBC9y; iFhT,)2șia f$ɜRoċt߀I N)dj, ꝡՠJE5!:U0~x Dq$V;ԘJMr\o[ n\EB"!hMq)y4?6c frY[)B+5AǥSJ 1ϧJjܢh{܋fe U'{uY1oS7>{>XB` P\$|-Z?V*W\nY_"S{,wwA(4 UgGU-u>ymZL!60@_sY=d/zXx  rha2Pnn` sdGI@h=Q $Hk4"B.F |DLJP(a^~9.7כ]_~%w/F?F+(t)tGȎ@u/L};S$z ke[I̽7*bdp= q>%px.ߠ@aqwVa b*cx]-|}0]nLCmZ;i}N2t 播6|arQF6/~׸0"'rU daP8\ɀU} 2>?U)NH=ZfPj$ rNe2OhBuUF5aDSa|^H!P;CxW5_~t_[=yb`Hߖ+l_s=L\S7 Wn0 M T'݌axGqJ|e`X#\83l}ZoFp#h|փѯ^_c< :J0\$?ow/L_mҺ"ig[XnaנZ`e`~)ow X,r* Kt&}]Z,V+%ߺ*Y] RTԒ5UquJUk )y^1xyap/x U/0e'wj=Sk< -=& I.Y_!;_Z-ywwIk>v_z_ >%t/"v%nwA~zL)T>e3]Wb{E^fp4*r0.GK$RyYq#L6u}7 R0Bc_ ]_D?ҦMa9D3InymFxџvY#gטH~#Ss|~M33b? 2 Np3/X=_ؕH  O" Fy}(T?ȾXd?=||n|ȵ43|[ro.zq?&=y./gzg(lgq [i~OÂ]SO4Hy 3B\ }g\W,~B'KhTs˯&;H́%#_H|sށ&;tgwX΃Q[W3ÿK}Uc]OuhMЏ%-@\ A,*4M^^DŽ\/VUWMu^_i!-0-9M ^X.=5A .W.h*[7JQ`mJito@T*)%,,I`!&r%ULF8p0IϰP+B'UPoꮥw'k/Չ1Cf?z@Zl>Җ߁0 .w z\VNh|rw̎#]ugvw/ku$T2#wfC rT\ 3 X$1KKil4:E'QNr >`m]9; R3DP6*!sC׷,tWD5v2^L-nCga' u0D.u7BT}кkЕgҎ%[\t'x50"$޼)KPt@f0$;`|rʣa<#2Z-@OunB$_s1npa8gXNğP2ovZ h/rBMAx8j @fo@3U QBNRR\Aӕ\Xs8%|o.W5s=u^sVڳ'@_@e2I+U%5s|b%ׯK}ɉPÐ(8{@9mBVGh=1R`T & Ȝ$ R.ɍrpUTؗTh+}q`}h"#,UׯMOK7^:ܗܷ;ƈ/+^!@jYxdU6.N ; E}^'$;2PV86@ܞ'UvE4N@vHԓ0_Eg7TDNjL' $/-C`mQK9Q@oLbgR$DJ tpj[cjyza؂aD@==]d?-Z]]q|!Չԫ2Yuumr ;ǁem ;\1_tOWe@B~(kIv3ORRuAQA.LX/*vz`;aã^<,Ƶ-L__;Ϩ}_dNX\#a/z ךee-ȁYgnVT We6Y-GnR&%&"[.5 Ÿ&/0wj3,2cSbb(P<  On H;Uć(H@f 66T9Y.S8Q kʡV5=aPۀ>7w5CL(?86Vq3Kc*7rXKXd>pGaL(u1щ9*Vs57M7 J8>2ఐY,\E  Zf]h;qbm*ܾIz[8fE$B@=-%~ < Ɔ55Pt-Cs0Z•1D`@oFRM@P Ȁ%)^!q__o8NL=T3]M(VJ jĿ7nEq"aڻX(k}v ȇ&d"3ߏtirrWT~OK`+6+6li &q0!9KP -m#!v K85Q5L:8q:4ۄJ8xZ}O/,Y%^MK'e۫v9 >jͻ l)[4wECz ql6_#o @ OG@ ~wyYL t}QFfڢ$͠F<} [i e`}N(DŽ#WA߻POjp8hL֣C l&.4Z/_ih%&mNu3}zܶ5Vʛ:8Ay1IH0%(_G~8蠼 %DZH.yxz7r\J^}7B8(fWC>`5RD& LĨܑ|G͓*웾з6AO UY}<ҙ@jMHn1MXi/[C5ʄp^6%QٖO8T$Pň7)"pКUpa3$?O|l3<)J5z$1(QlD5'0m=16cZ @s{-WV):j=PY`^[ۯb4V!/嗐ʷ_U.@3f^,/AF|k*k̫֫ ػCY;GpOޙy~`Ucw=nyk#sg s̨~WR/xb X^֤MBx0!N ˛.چA27W_MSn$ߑݹ;~&C6qrґGvW"K* )uLG4F~UoU=% UQ $W9>ܨ#AHW8? hf?V+S( NQၭE.VSN\U(_ou_[ fRt 6c7F )ugxϗͭGrѮo3lxALv+!L|+,7s]E'N$/ΣB~#˕$PJ$iy;p|?/iA(@ø 8(I۷II f[WqS)Zo5doIP1]o[0/ CqZPB,'Dêא]Z3Əۑ,1Ď1p { זj{Sw"35FB6%̰bC* f&rgz;1p=N%hL. ˪/%_Ak˚1\ ~ kSxz<%3:}0$*DAkdaN9DRS?'Xt3TqyRaT fуnbfKak@+LkVBw9~QE"O!78q9ePF[.*{./Db~'&L^`|.~CK/TH,6?YZLZ^c5C?ayl#H$$+rF&\$2_ᗴ"nxmIk?H`Փuz'RZGyxV'Q K0U⡋, R՘dN¯T9+mH5‰S;g]d ct)eRXv'uehz uti±eQ^8CL@ӈW ha2+BvXƧP5礳A&Jjl|u4Etf2B' -SlǾ>}4蓿yӇ| ہ_( (?'Y,P8,.T %O *V+eZrYk* b-q.r{5lbb'&T| f=L,O_gkW](W `ɌYؔ, p(%bPQT75 Jܻ~h/aq5oRg]Xtb+_Y\իH+v;ƍ/F"™{pO? Q9u1ՉHdX(}‥ae{6ɟ_ P/!nj'K_K/Uzr`VLbtI=v_@K Wx-h3&TDAý  wsե"ouU0蕩=dq{ܻ/zu1Z82 7Pc@5;Z"@M\"#$?%| A!O}KT%jУ~׵ax5޹NA+Z0Čϭ9ÌF'j& ;(3{Cdx^6a(* K_X?ڞ74{EKN^Va ְ͆Jz XXbWC׉l3%iGQ> r0EukѰRЂ)ǚFΠ\ HӲ_-0Su}]SyX'}>kӍ>0R,#))Y =t$pb?[ԓ]$.4aC~K:9Z{]ZU6p-<3[Ǟ<o$xJ(H^VjIgl9$5ȩJ1 qwr -m#{i_w;J]zn%40P#/c}-m' QceŔ߬@aA*!鸙%%~GXJFLK,QưtZ$G6T"w{? |Ka/,yY#I|}j> Ә~.łnF 4K({v*Ihej<  LppOe Z F#إ~$e<0R ANQ[G` Ca͗%W$_n9SF7RX[}X~ClBfd8sDO9|)r6s̗r{\7dyx>,{a5LaA*=J9ޔ>;Cqx{( *Lhhrwbvδީ2l[{(¨~ö+fwYp|L>Ddޣ2OyB 1$Ei*Ratia~4#_*>[eVA GTc/\5w@ӲJ4RN݃/%CR]rX[)zUP^8N{KaiYt eXDh1==m$ *K EOh*ZnU5exҩ_śX8 k DLW쇿uKj]blvl>.QH镳?G;mpT0QPO@6NbݤEa/^| `GKZZ{pr2A@YLω<UK*5 v9}Kob+^ bs.DFgyL\zs{x*k^nQWT ]-u'EFbX6 qO;-O\ ҴsbU!zt2\/;dkIH,x Y l=ΛS\CRxJp8&d^'`tKRX72 w cWj¥^ ^ufFDhdzҰZmD rW^(k ؋_؉ݙejK(`#Bs؆K{喰? JHi07߸$X(wdP˨T B{G')1-`tJuvnzo80>1miͯ]8 ?=.`2WXi؝H6ЪY3r?[mE`*$/̓ |W{Q9oZ8'~c´e ImaF|_X7[j9p#PgaB.ZZ߃K??Luj>N)ҬVqV &p @TK-ԡc?üj60|m/8|5q}^DrCqnL;:BE 7:FτVˁ[RQp P e a+rgb4Evm/lq_v 'z3udMK?i3SۡF}ٖs BsjQ\j^;usYJbcG4n)?dC1e"C 1m_`QK|z$W=Q_> D [n 6Fu =sU%~a? hq!o2Uuޮ]'*F,U$-`#n4ch`±-}VmR}Y z)cܰ"bʏX;h !x>jV7)ȽW \T1_TcF̄+svV@u#ZRm{uD\mƠ}ӌ@GU@KMS"%_@F/.%꺷9 <N*q%|&gᓪ*l&uan(iԀ 6bG ci?d~V2C^\*MWU\CĥQ?;,@\ƸTy]Rע*rEfVbC$=u :pA&MX/gʄzlݷ+ /A3:Ay^H6 ˅ƇDÜ;\+fl76!j:}fORl01qjBWH|_+ J3XkCVm 0$XڛwFזk=;aa~Uw%iy!A]!Ҡ̈A[AD/X( ,-JlsNo@wPOOK Վo*~ = izYf@ZXTF(]X/, /U ͡b/6bZ=TSz &kŒ;KZ?Vmql%ncSkz% tg@]|.6e}ȏKj>> Fv7Ј:rkcER֡DzV| =YKSY H`Iqa,}B,k]",Ü>.xLɤ2g9|Acd:1s%ꪲ_g*>k$srARbK2/'Q<ơWb֯zӮO~kiQs_nQb6~Gm\:Ը"!,~ _(D#G| RƦO <;})Bu^ؔB= L'F"pu =f\Z\}W֮zaӫָ}XtwhxW覵O dxs6oS wA-jrU\B_\s׫jիұ},s}q+UP$X bpnb Ȼ. i' 01AmRQVGT=xC84Ouũ^ERvucՄ2_^Dj\;LUUD&!k Rss;Sƒ-!?=2*,Yw e,(X/Y[bjZ&ZZNsS(UׂpFzO}!Z)Wդok_}`(p hD̀ eg_`K2"0Eo:'lɹ0Y8r^o/0P A |4a[P)wJԂM~𒼃K(r3WSb0oQ,}uq=\^VH A@P 0_a(A/ ͡\0Iu}Ww72ת_'Ȥ21  `0MAc)@]<6 ~ * |D)i*kt>Î<Ԩ޿.q`Gy2s5pP2오g^R[S-hH/q}Da|/gє2aw' ''0v-/4C=tG:ZO5;hi13@DSn|,spn )p+C`zJ41#v;yJ< _  ⚱˳_ A̸iN_#SZs0+l;7h|fPP1a^~mRyO'Kg\ֽ's1Zn+neKH2y$Hh[[B'X)nPVQj`I[ /*30{<6S f_W5Ul(.cH e[f,eHB[9Jo3j\s8PGUPXDgyv­7%`DCiQzгNZ,^Yk%M"][U_@ 33X.h'͂'B#/Akk%U}O_k]u#K꽒9!_hm.ǂN,@^Zߟ1r.jEcKu06h^t]9"8B/"d)2G 9WfBN.&zi3vQ,?Y3e ʏe01žjI q)SXXP8.cJf$v3ߤ e2P;v9k>gb0-QV@{9}iYwvڲEMLףe!)m]r#^J\Dr\1 Lͩ۲{Ѡ{\kz@y,ߝ# {^Kţ ЉR5Xve^pW8lDSo\\BAFH5L}ӽ9ʚn1 ҵ4/nuW^•rSgpLר!X oJ'0g]e11 ZӇqUG#Z?LC,mL\ՉG/^ R~Du_Z gKޡ'P$H @,$ P* HaQ '[Oyt^q5I8?h"{d.aV?Wյuo]B>tߒڞJJ]+pvz:EϡaǠŽf#^)jWmE;;V%#Q4(TJ Ba &@*11'sz޻U֕\^p<>ǧuzn`#'-} O݈u()3 v:8܊7#/CSHu{&@8yG_(q`,N C|O>!N< oi|4|eIPǜN%\*(\bH9ws?2>'4zn[;ʋ.>Ivqdw;ޫh0=Ğ~6P@*3&VhK%YSoYԡ8pgcWGs#3()b"('e*Ԑ$D A`\( Q \(BbD&!3ǧ:Reju%> q_N鵮پHۗ=aَ! RMNzFy. ooDE};@퇾z0~Ƣ}H_V,QEM!>?]{м=EAV5q"v7&,\BH=I.Ti8wo c|5Ή: hJ&l¸DH-5u6ȠCMޝuSs(cj1f33lc̮stx#h8p?=W@g\@{j&Rt"BT[2ՠp/⃷j{ׂ;tpA. 1X׮־-{^Ju*VO?^\9^Zzi8A{;^W}+p :pP؆< w{Ĵ^R GH;@BC{vAy*%)I-AS|  G^n}׿^F G^^>#վ;KZ{dD\Ʋ~CB@r7$Ḫ̙j&;0_h:Rbu^1rհYQRH|EgۻBi} ZV0Mi7|zi7b_'˟`)C'$X Κ XwK@1W>w&C_uMtLz~%O{h_(:McњSYp?G)MAYSkxQaM,x8g_$=5%$5 ׫>׮׮߾®jd''ѫ$ f'H䗃\<,X Jw,&*|k*G-e{ozWνuVjֿZysc_0@+p9P=pHT]AR- ͤ,c_,Acy@S¨MS,% s[k͜> m AIUeWxMmYI< 0[;fg!6)Nf$peL|y5x#Ʀ0%qR%cno:r-~{Pg*^o|GmZ0Qv Xn4CI!*ܫt BxFCOp1DHef +{xVO5܌8M$pq/ 쥐Vc3p1n/~6xeUK(W*7ѩ?LYGEKf*#:kOJ^xo@ehNKledgh+@s_1д "-g +ᴬI+5GHt j~_orG(jS:֪Q7B1 u !ܱ@mȣn~i$q s+!aQFA">߂a8r$|V!t_~z0?2ZJXw 5!^Kpͨ# BL4ɒ 4/jp_ Dw>ߠ' as+D[j3>(~aGC?}4SҷPб77mm4"=}]%#6}?UXdFۡ:E _~RyHGXzQ)]b eBGNt]l#f{K|W{/C>pQc^ TabG`xqKI+L{b񻸀n, 5Ox@LF9QVE] ^L ,t/9*5\(Ыa.99?~A0F, *QW?M*G޻:L,&0J p4RFƸn>aqӍUp pވYO8nM>?Hc4)n2G}D@pbtم^N7ǔ=shD7Nz}a@N~Dz @׋5ԨEz~;rER Q>#VTTDkCE"~ ;x>XmɂpH0}^6/pZ`%qȳڟxLwy lG4h#ͧ`oYA <{oցVW"RF%C]^ 1id>Ns4\KBAe˛miPktSU~Lu;-}Ku B (X Vէ+=UCq$6(xdrTl(8 `[] YFe[⸻(჏ z ;;xS_?D`chእyr*!uC%e}a_b?E'Hޮ@CcY.ft s/ rpV_4|؈.0L 0shN~47<@P)@KA DٮU1{Ct[3sp>ȬeN02}>{[gC ͨYi:¢^x) q YGߢh7hj0@5!5!'}XANc6+|GvuhLiN5Vqf.fA)dwow{Ffy)?9w|} z|$'vfvI*yʿ^O^E%PHXr}nsJSp9+D _/k|n ^~謮| ~W| yMPe~a b1R]$F5SGk>Cz21FцI2e`4_bB ɀbGr:{D_!mߵ$0(؟Mm̤.y\g>?[`YIjcY&:(S%WlGSA*V5Ѡ&*&~ew1ZI^&J__{d6z!iMc_,_V֡"%_zg(zd12$Ӕl|q:8'?dW;WB[p͊ >MS,Ƥ n ³EA|0GLN;Z}8 5浩=~D!r0oa]4O`okT?.!CRÉ^_/j"9d?\q"7TÎXbF ӷuڋ W:뉡JIrԨS{s!lW;IpUDf+0φQ]{D!}~>sv>)R%Y`q1o- C"g {_ ッ jC&ΗSW [iǁΟxq8O4jw;t&R ]"{[Ls)եȑ{b$.O̴.V_'"fZ+DiУH7<|CLm[eZ17.s><(ڐ}+[64fOU5.x#*_A5=GJK By}L\0ap6K6 Psk_H ]K,"ab7M (~!a#wE skd]ȧS%"BKO튬U%Q/zJO-+ɗqjlm_WI>8Sn{Ebq?qSTbtz;M|2_7U~}j4Wwo_w'lKN4J.tNT:auOs(y)Hibc"6pA.q-ݡ}\jՏՋV+VVz.K?| "!,nvdB^g}g_)3\)0qp5$Hh|%ʟJuz|$Kr"Ki=Ou0\)Jg`:Ca|)m\PH7tgpt%x?ǣ_*])d*5ch1q!$>߇v}_h V* BykaW:C"F-|{~8]0?؛@:q̛>7ì`F,xkן*[X__&.糾~\,UDd ?ְFD \]R,x{ +W+ݯ*A}z7(pQiW`cDZR6zc1ag3/"p֘5G'86x @XBlQ5X3Gh4UX^ ?:*q‘Y-CX,b+~pRY'.Z>+b_$3ҨJ4wVHV)91_BXWewtžr] xX(/Oy_OaC+/Yv5tWbqV~I4ulĈ4Y(+RK( v~G K}%@dn'fwr !U鿬);nfFW&gKǵ)5ZK^(c`+~gt MS8ʗsA*u D'm ToPQA<Ӹ^GbSKnj {mK (烈u՟wwΙnQKCxwo|N3ޫ0e{M  at=k#DHhO7H6@UFuLx8y"S]zrGejo q'<82rEo`<qa`zfk3YYp-,?rLwkewv\͂wf7k3.+^  cJLԹ8CQ 'P v>EA@b0p3z_plQ!@agO1 CFp{] n+UR_r 8eZWwDסmZ %$4$cRՀswy[/ gb{Ӆa7k8W T8 1r44LO$D@F B']P$Uþq ,y}_S?Ćrl8j\_5w2$SSn-/ǐ5x8Z-,\!QqCmvZxz}HG_AZI0cDR7d0(ll|wwSKX"_B"֙F"0>nIH+<@"$ "- ,*㬢s"KO*Jn'v ,￁v O`783Y Ӡh ֨}|9!ě!"HҴ/-P14CPTz@H(\ ZQOS_=˅T?\Q`fIE>QAbIwdآIV2> OqZ7=q#M|WbC5+dn+^ނȚ#V,}lWka[MC͇2Ɋ~́VǒgEJ;2SzCW[(ʜ0'"I" 6ICVʔb_'@.7hP=QkuzM6Wwـ8NԶE;qy~Jգm`pQ9t|m 23q8#+}_Ö|^Nh)FCRx58_ٲp>5KG4hg{tK";Kf^+dkXyʁnwSjJ޲pPTF̄iQLHtVvI &2>Ǽgp0ݜ]h07<̙L)^\>y4w7/v ̃Goj#2eNh!^)qh>NaOD^iN*˗>ET/ۻ^a`,o$VKfDJw ޟAmT! Ƈn?G{^`` $?ӐĒf})~`ۖECXwå3όt68/{v()0Fe~ *Xv^ݹڻyصniB>8%>HPiX$]k!8,omqLIR1PWhҢDc%o}XK缕v5hI/ICf26z øJ#-e!Qjo&^,S; ⬈Ll*g_-*N X`1&]jwmd5ۉUvVpqp?[CT~3(bw 6 N'Chc296lZ C5/{ߖ?6`N'xT@j/H3|>Dc^DU'HՖO{C\Wfָ v ? Xy½ %1eA5b* *j'::`EGSX&NOȽ_z:NQ7fE:wjӳ}BH2R:1>YGwդx^bdOh9H"^djýݨgZ ۵ى[_2WwwaTөS3H{hH#c Tb3ݳbz$| W/XK/Wu (FD,+U^yh,c("J=salYG6"mҳ GnF  Mh.yxfAդq .YJl=1"mW˾BrUZ->պ'>ժՉ}\}Ãx+2@QGN9xQ8X!<ޠ20,x^A>Q ܢ؞ fKO ZBT)mUW0a%㑦l54uxavYpnnHXHݟu7Z ED؟'c#Kl$Cj]cb_~I;d@q)06_0꺁GJቌT˜@/kN !w}-KnFX@ W ǖ o ^W|OY9C°5{=r%+tf\ks`gMJSm2!|qdjQq2+! ,<MB)o,v(2X`/eQGAtC^vkN|P e/ .84ghG!.Rf!?-]CF$0CSI[P&ܲ|Kfo_\gᖚEbJ5WՋwk,PpvylH!r(Z U ς>|"RZD/rիuTV :4gL\񥜚(Ю 1߷N_LhK.XeU{s>]<=j`=4T 9no}LI"lި':~ )cMVO+Z2~v{recj0Eg4IhʐKNc0ʐXvMƇ|>.>X04v}C>D c'*162IWY"2B5%!-;1d z /k^/m/~J~,&k""@ϸ Naůѻx{.?#c,ϛ7wO[CGKui Vޯ(HVajÖ~y(,~'#fS_hENL ޣ;3\+̆>_ D=Z;^rG>ӵRh]9B,%k]"Y򡮥ݿ's~UWPD*_GŁӒ5U~!],ge u{BT<&Y6A\q(@C94`5Qu/R Z G:pwQcݒ rOrKW˭}~{UwO\HТ;$#-pp@pƭ Qf H_ 2lAyEaKPeg7/c&ehn[Bh[8'tnApxuy%xx@ J<3(+Iݦn/bP@NAv8 y BiƬxvZ@5 [- n^7s׿w~^&I梲e;~ Y.'!x8}f/O/\}DH)*/f^i'[~Nir "jFx$`[YN|aKjUw e3!u9Xv&1VVF j.zNU_߬^/|-]I` {ciTK- 68{^YJ=GIDz~767@K|+:4uL:@XA^NZFʌ Su)eT2| Jbuc/g+a#Ϥ ӿ?Y=?BO6F]yb.hnXC< wL'l G^e ێo,3Eabbu;)-P!ܕ.-yT"H0J 8m>0Π,?h=:\o!v>e",֮񅒌^Y~ңN'j F%UՁ7(_TD<᛽W$rF(r}ɅL_ǜAwBgޜmezCjJELh©uARXLx?a\,[Yq3iar,}"wTc AXHO/bwsV&zwBnMQp06\ps5 ߖgί#Yk*ϡꟺ_^.A&iu^N7A#!zJIqmi IZa 'b~K [}'dH h7R Z_^xCqy2O>gn<_Rķr#C$L2<-=8:.8U4xu2Xca\9Z`U`67 ə Q ]a`F3@e|![587բŒ5Fy4Yj`x!r2<6p/Qvԫ*5rY|6i9뉨jvd75fCsQ^/u#X!G5 }nL;lԏSAxqzUeh[iܤeCQ$wl1HbO3 G@2wqSs! ežIc{wGRg_Q PW L$7ec౿h#hycp>q>o7uCe [JELeء-snPA8i'OOD򱝠v ,~Z`4c930H%PZW+7/4h?'FBa^r81߯l:ЇF` [GSN\Q' d 46c[F5 =wD1ڬdF҇TX[ԉ$#T[MncYHOd" 'wGp}ЈD6\z֪Kj=DMa\;xK~'; /f߯WB}U?;j!ױS7*\%9j{z&2|)AU+=&';W#=wWK{l݄Y+?Zvv x"3Ņn:$.4,is6]:[ Aq[U+XuE -^\mK~dz UUW^2LpaHeƪr$WR$Yܣ*v="-P|_'{OzގHaM;YDڐnWZhj>>I#i7;Lsy WSov,g%r˜N[@_)AdPdOw>廙0G6i=| 1" 6-UiA:{(]x+U'{6MEl_aK6c@]rï;YnXHɭ?k EcxI.jUVCBI'73%B^[K]iQK\Cǰ,HL>_UA/w_R_jRtIw]vڑ:־7zW_~LW~ڽ&h8„ 'N<,B] Hw+L/>µmv~cvW%kM~~k[pH9E5`p\כc'ǒh(P.` M[[+f(qiFz ^"h3(._P@ïBfoaRTtP-ZK74#pnNYOgÈBcsMʼn(V_Eu`U9%Y*GॣHm wapt`Ō@TzkEU~־?wk\9W{BڑMv+>oLrI/QL]M'<+V+hXv1rF.K(p(ĸxc,e|[Kx`y8/(bb'  0Ӈ{=zgLL]8l8NM3\2\,`#?[Ȕ*w^Н _׫.U?xA3eg/蜐W]!vkŨ+֐}0׀kDco)/i.oZWEz%џ0d j Pa8YqFt]\|MFt3Tz/ yrdߠ\MJ^z{ZWU"9ŏcIąW]S~~ࠜBƴӆ֩_O,3H0רZ@7n>=nV连pFo2[;/YC2ym7, G۟ښSpp .D4}wR|v ez"03lJYӗnAv8nJBv1>E_. P6Zma*]6J{löjۜA!~|.7^pY.Sp*q}|5^Q2@9[m`Qi .p`bQ|i˅J!yA:?t7 _'-~퍡ҳpb>=yyL+V*?%Q=+Le7XnrIScyTu_"CR Pd?~\ <'` UA, oX@< tJH<$t~L Po*0*Rcg,h[*>_uwDA 5}l@"qoA_t Yf~ ,|54I-kGYw~ .Y_U@.q|EjM4H?Q1.yFe+VD낹4ƠU%&g|xlL?k Pk~&_'wL갛P)7RYF9DE,b+gLg@=jNFжtyzCgh#L֋2])l7i. $iAnK߽J"W^=9XSe#+j8?G&2y{LW2|kItܞWQ7Pkѫ/DdƿS&,}#.θ &<`eX6RxEcH1MLF:'(0 ?{їAD#„i-^:ltq%& Tk?|҆RjrןPfۊ40l?ߋw I/K3 ´Y]R{36Jm}0H!?|{,ˌ[tʮ&8oCʕwE4&>> \? VSCH`/h} 6@\ؔ%1'٤xUaF Ս!X-+Jx$ەZ BZ"i|TvJ9\z7e4e#Fa'?t_ڈ83nU5y~lʇěk*)̢Dԁ# 3w} ż=ɽXxSguxD&"gQՠh@jxD 8dH_=X g԰c9-3d u7+XA]D3kY_! <ьJiåV=s7vmaOC_۬ˇ/xCtpW5-d"8Őww b$ݰ~Kٱ`!/IN3`k8;Qq6 3\Ao8qj;ĶQJe{qd` RQwN%izkctIo+4 'm}l VExGuyȄOE~uQPBjȓ*fqZSBnV=^穑@7)͙!ᘖ껈#ʊy?=\<@]E< SƖ!cS 1vB (V3oE! /w?HA ĶZï ,w<)m8:)b>j˅Ze޻,UC?+8 I+ᢠ^-N04LNnwX׬ߨ|mWc&uc']看]AWzqQ&k_!<^bE(+"h8|-KԝI ?wY "jXr${7~tUAKZwl9cϝ g*#Hk>qrH S-D^Q1H h $FHEb FnHwR[pΫf%urw|ܚHx8B*AL&|TP3%0qAhwsHغBSX1X8h #J' ,Tr)]^Prrf-uuk-w`|]{MQ~6 fܲRMRF"d `+q9P+'#oG?2L+ ;&t)>JI"۳pF BX;#H3>(BdU,)Qa~ ?zGxivNݴ[++Ӯ9LQ4 8,܉2I3u:]mS#I)ڷcS|菱_B͐vKWꚏKy>|?i.1]u4Nb@؋h:Fp_duuQr)aii~} 'MNd]7vzFk:dBo 89p{ {shGڑR! SR>H(Ԑ$$`Pl B0(F 'RyɹWixISwq|<6/km|o'5ǫ^oOd5޿EO(Epxd6t.`.:'7W@iBZq`9Ud} PH24> MRR4J4ZdN#.[$*A,AB0P*&s>gJsS]N#p埆#$U{tPzm%SQ.As{FEa+:0@ vtRa/)}SMkԔc+]]S_wnVˋlO+h$ŭi1+ɸ#qH`[&(B  !aX( BAPT( L<{TLn^U cϻ=xC >Q7~x4q_m -x Y}eh^'B;Gƻ6D)ekQt{bbmcy'"%ӈk[HSYmK$!E*Ei3T4"]So.*a_Wş+dp3PߘzZfGep2Kj#RbЊZR)О8A0 wy??B!q}_}k]ZT螦r]Qr_]Uw79p% V5*WHӰj7Y cF2h*NhHߢ{iz ʵp@:aPTg|ak"i.B{zT_J5+)gU)d*^Uvűna_~9aVHak *r\`뜱1VEU0ӌ>B-N*ӱQj 0ʐG2PU{|~[1 Jդ} $GݛS&cǖzXoyK<]\'W GϗC }| |l|l<㩁OA.T\#@^1gq UT, 3,[^FNK{=ziqKW[\ꬿDA.1 !G=^tMm_R@&KP-}߰˯ЯѪA7F]Vwڴ]֦J+&҄rS4ֽMrfGBFkuwxޯ_Kc'%!#ƲtZK`G ږt$a\?"H0D?BϽ~;jۏ2+,8Lg->up[pjoyd@;NYl^40&'mϒu%[կտBId3a-=hA@]iCꆺ6!F1TF`>D,l) @io>OO-Y24Tx+7.rFxt#>&>åD4Bm^5.Ӗj|Àǔ(^2Q(g{w~8UFUI( \̕2nO)Gw㔻WP-5aAWI7pi6)PX`M4>BnoKwg訣B hM90J՛w Wⳗb-wV`πl}OúJnwlq cL2:+'OdI}篎޵/ce{' Y~1_`74Yn3zq0K_hO" ]Js4ëvcc 3⼈!f.Pjb/®nm^hח\j(`< &j~T\&G} =F-" @?"X dRM5#=xn1o_8 *EO]"FȿjO%)h jWGi/Co*f+ݯ?-v+9sa0L#HLnٮ?G^^^/xOeX}WXaHDξwc~$(#ێJI;7ۗ&s ;{QK_ GfjC >e*x`[*r,ZkgRoi~Z&ѹ-r"ߊW^S+h0 =;o65 70D`v6_/ץ׹R:*$VWl,thx!>@\M~r/'MJ.!QÛ`'8>-YmíAi> Œ|_I7s.?~vּ tM4;{ԒJ,ϴ^& ˾7NRw>Y!g^<g%$OO40%c3)Rh6ƒt㳊<0: NN!xI?d}A6 ёJ(~{ 1 +'1YHFQٰWi-Nd6pCa?!%3/lI_wח)qjw$_w8_=]H?H_ԷܡD#mqg}z k/m\:*ޢ}1/{h}d\ }PEmօ U%{ 9zۉxn;-qRK34;Ѭ{$gm!&ad:iH=R' w: [_v2ɸ &U8} /3F4,o9XֈxnGX;htb8GtrݱeCtK)Qd Us tXK*rª= d<~T4HO d1\ӷTSʬg= MbWiͥ5n) esp~XrCT$5N tM4@-{򰗳O\a;.}S,ScrܿD+ϣ O{>__WI A7Y8DΜt)>? f{ܪ-E Z`|qr|iͼ&R@yLTU+Ny^:kiFj-"9Q ľiS[,>(7<ܻ^,_*'k8&%BRjDZkWv_-w>sY(rl̞9iPwҙAM˶.] 8[p]ZlLhs*;.'%ԷaJ[_h_V|D@{5 BY/?N,ZJ W|hlC}A0*uLWM_VoVkvY.^ˏo؊AH NE8 ~/n<(gX/ۏ(|H'%+?.{a7!,2ApAٻD 0L EC%z2ROK -I2l|ܨF$m]<\NKvL o#Ɖ ƁfR.` AjYQ"ş)/Xl [ul 32 Jľ @6 -,)|ܵEO ڻch[ ;8rƃ!үeg ώLG:A=ԨZʬKĈ"a!4uO5ڙc~^ T -Dm$6Ą;WR`thjRxֿ^u-η·mKKBAaBdCF{!`= J1ӝ۶66%WVZs2OnC,yp s0pwBs?*S lt}>Ƚ/1F#l\)g3r$õU)ܛG/tM 7򓍙' `abkf\(HxNץ w[(ߢ?M}ծ]䩆^nA4iςjm׉9ֽ_ :_vU:zV]-ϗрQ8йꈀl} `?raͅqj6!UQa#|=Q85ktP h5fm^oltտU{Q"@LQX~-KԅM_; pK0ucHm<4 Ân.ibawÅ/:ϱm}"|G>LKJm\[P9ꨫu|DWO麤Ks(s-@kqlC޹|d}%{AL*=^' BWӝg05' vN5=[{1llFVoť2j@wյ|'f<:H= *ek!{jeo >Gm%T襣I$CWOcvSf  v>*=܏LXp=n&kǛO} bfz^(tGQCՆ=Fߓ;#ʡ"%n"2c?XֿRޅvXw6`R,VI~;o_ P0A (BuGjn8=g(+m@+6 >>>l4/4prx$UI}%}.Ef3uUσ\Q) ߍniB_j-qRu15}=a>*{aj~ZydowڹSrp9\U,0c xHr(B/'P0^׳5c `QD5>Uj4.k ` ]%7"NV;RCּak" H2}Q} }Ɣ:#B/rHo1aOWO C2mO^Khq-*iMu8ԗ}$08#0$&B! |B\ . 8$b l}2H0᥌-8bbn.휭n06_FqzS.f6yz?£ð5zLCkogEOAMln+x9 c08efʰՉrrsİ]w~uC*L P#49O5>`m~6?#WcZP}kܬ|Bn [F#M380)%jOƖW@DxcEe썈+҆aXO_-5+Z's"?9x U[dጦ\'>XL&yG$"pry5Vnn:F|C;/kq˱D_~PIٻn0,WhBH`L'qỏoED=Klп8ӁQbPl1jp[|uM'Bq YW=,W^ߚwXa}hU1K5pz)7hznΊ]G6KxLMt,~Ĥ#~%Fľ;KZ #(4 l*]:@=C /(۶'0xn\} 9q1++*LVK|B'h1D_f.@Ɛ#Ǘgq vWm7 dPWj+eAMuQ|; $nͧ>.})2Yxb{Pp]ncWu-Tf]j <1?7b jŌ;mfC6\)O-DZ]RꘊDBl?kV.L!%? ^&ufDI-/|Z^:O0Զ:7W~a׉aGwLBk*SN侀 팾KoA0L_t:u,ϖ^!QI\y"oB> i TnUo]8/s_ rtͣ` .NN&G6;Q3>k G5Z1_4{q΁G[#IQ&O%OLrr#ڋFVw}=6$YloA|*4sh| $_2í {6G2B k/'rpq[fռ^0}T&hnYi4{XԬTe"l8#W+~y~^ ;^Q\˖E pl=#?7kOչ쮻5FJRr}qCb0;ia/'_/!nclo2|MffxvQ0_]j]0it,AMi 516?MZE`oDyjHWе'![ of{S3'߇DN]&v A1 J9vץ^b{|;_k^Mne1Slc| TJ8}pkԶ -#ndc-F_vhE0YfMf=/ Z9s]'#%֤_jwf5fpoƂ׬puɦ #a|In5N'`f ұX\ M:Z$<ǣ~QC<0SRPw]~y /^Ƌ1n.>'^_9G΃1+XZrS$ؒB1擊+ׇ_opR1P[btΌg ca3!o_ZwJlO@#€ WŒr '?)Wgԡhui1Qho}rc?OQ$r99AnZC U8Mf$Z_~k_iiN x:D+.='^#tM!5iuPC4Z$D  a߼~qՒGB~r1\x Fb8WR08it!li__XXzO^%v'/w~-PSyI߿4jeÅD? ibpE6g'y/e uGj}x$>Z{ʼ$-ҋ/K_̢8P1au>64nh.^ ?5w*)=Z>[j3]ո~w;yr|ߒJ7r 7~+]+l+ j2ߠe?{pI-atKj?+ w[%N=Wc\_)#È%F0F 5/j(X8@V#y__N ߨ01Nj&R_nly%M˻U:ESH6-Ehp6? ȝ[tMy{cY~ޫ&+_@痒X ̨2 _JI躻P 2#IXE5Vx7kWM]"I;WΖrCQ;ވbY+^G#׬_=& _{/-*^kIbX Lǚ\ ړ?۵^_̿pNe'WU_p4X>n r[_)mիֻZEʉ💭^{n^ TQ'f_,A1juv&^bb_}ڕ>7['KݯH_{z\0YcH?q|"?5υ-"2r^[¥^ׯ.~~?W?^rA{ax@agd/~V+=u[MX~ZԑusZj]Oڷ녭scc!]c@Ъ >Gleee]k騅Yn*'b%9OB?1q:~j;]/;-zο!U~XdV_Ŧ{? C8ATӵq OdЁT ,ap-٨~z~uy4f/9@QQW3$u^ B,<_ Hܿ}kVEzb18$x),>gPӆYؑҭd҆Bt#V.8W,ޣ(_%E[8zO$y}mE׫*_ qUkʹv|V&@a7!~yw Ou'pLk]R`g"SGϪ-~_=>"G+etߐmN=ՃTgﺭ{\<]u7O%e+"8I~ z_UkA(fE_AX\9փF3<\%CѿX:5oM|7_Ry{Kn/@9/ߵzdzhwUx+@x gQo//ҴRԖ_RW?׉>gC#_W\:&gԟ~,؞Z[/:S~ 8p~mTᡁwnwK|[_FDZ$+kԺ^Wk':E^ߐBHb BenbZLAƏJw ]vٻ8~%UuwC;)7-Wm~~_/\/r P)#߬ j\R~Ly46~/5Rz{pnW^&*G{j[58Q֚$WzUS*HV !0T. BAq(&% BbOo~-QiqEHm;w'/F"Ko ˍA]B+K!HR66u~1DϬ8xOOW?BO[_VxƆ~'{%;'xYNA+J"V5 1,** B`PJ" BpLB+Nzw毭fUZz]_&~m.|/:^{Կu Dsv-,^&-*_8S_(Y[#PA[#EfV7L*JPd( APT#Mz>~t]g2YNN7{mUq>[_>-`_bz/ {w*?|!0 ,  *RaZC$@PB.j AP* ¡@( "1"?7.mw\e%d_.{sꖽ Zȗ U3DOћ OG%ԖwDBz_\P|"n34phM `ő 8&HBC0X4 B1 T(#-s_ۭrkS&]^}CwgICp=@z]>SLQ;Ogi_YwM[ibʹŎF6XۀVb5E; (4U!8 D.(AT. `P&BA1L"% Jak&{{q"sSz⻙Gpz9ήuTWs;iBs 7?^>Zu'=FI|2/ '=?~-Enކ_BǍQT5#a84Z…-(((2 PH. A(P. Ba DF19o9<^]8z}ϣ4xE/._mЊ,9maB{҅rC49G5*HشpSE[M` ez]~ 65t¬%U]62q)`<84?J[9v ޽X"#;Ϭ#,**ߚv$,|p;6\ytE0w΢E6:*䱤ؤƓѵKws?<{bUOb)P!O]<X1򿡔@@zwz)>w5Gf~{)pzkrA}VS^/1)&1V@ãf?7+H?V~?O^8۵ƒ{THa. 9ׯתׯ.>/w^nBG}+C=-D# ~R b{6&d~ ԔF4܁X?ig_.t7P2WXy=g^+}'w7Wכ <*f1_IJce=q[H]M()sEYst^+C Nߔۚ=PqR^ʵߓkIݫ=?P=a'QLfwyKSmfoֱ^HW1o[+y7}T^#^ԯV+؂YgvHr^W'Nhj]1^92:zM:^h_Os82C{7+zyD&xy,}Z?]߫XTBA2}ЎB|wj?|_/y(jquW=xfAG~̱f}}A4h|.e=}X}^]ɪ-w&Rzxo^B'}'Ro6sȗ=?WMZ^v:"[Uu=<[n=Mg ~B4~ClK'!תˋz"\"ʬջVWc1A-rW4x]׿XZѿ]sJ׫u׫!K0mNo?dBoz~՝"WU}7kRήKA׻^תocz&~kz~/ ZHC%9jGSc9;7@yf>:@oֶO^_'^b́)M֓/[ѫ_oj*(`*D=_1C)sÕx$Rtzp~;#+%mCcd 79 -,W"˒^ׯֿ^)0OX H1+Rh.]*X?D\LiD]iZW-0S0'1E ym[W|}#ᾺT⯼ިv_tNZ6Z˩ecfEyȿnE#4>BM[Gݸ~c\vOunUI)ӺL6> )*% #,uz#oN&l @`0 8cRX٥_,.F_]Wy ͗^ԭ}%ڔsK^c!bݚlnbzWy`RXI򴴓|>Ԁ|߅ʽį^?G\fb*IEvEH߆wQ Ѿ9)Vc =UK_=W_}wkWϐa6VP#O }GI-[~IH%4'`GNZޯקZ~BJc)n%@wz/;Y؛vK9CKdE0hvWľ<֞$1(M豑&&~(|'|D/]~,djSm9R]1=x"+46¿'V7Lr[M~rbÖ.})v:߉1h?sAgO׳?"[XiX}Yj#]]]z._g-\ԉ{)`ֽzJ_E4-zwGb{E]zʯ>),W@A3 }Zbcziouc^nK}%촟[MUp*ڹywwv\JcjnZH^ y/э'wCK((?TvO"Z*W!_^[dcwTtIZWu/vCKk̭\JhU}.ULM׿X?^X=\/*E#׼^_V.׫_W_F'XUׯWUwvK{O$L%aI>P >{ƒ[חekt:fSV>)-{K^i{W'E1\E0:{`@M4B: SWsR<1/Z }_|0*e~,ClٜRðKۻt[ V>_s<:B7OA%׭oYt{o/&G ?~';P]kO{^O&^^˚s[7sBmn_-c[)ġf'@X%C{+޹w~WDFZ>wVL ,aNc۷>~R{Ɛe' {KgjƽD׻ GC) VK11\{z7W^jOvzdJͭEVGmIr;y/zgwu$9~6Yi;/ݮZXЊj^YQؒR]kWskh A3uhJGcuS㿋:e^)]R b cWIq\Q_lq wcZڵz~Z%W}ZX$rӦ;IVUUεC<}kzZrj/RֻkXj_>_5S/Ԅr,.KZ־eEYD(]RV/cW+Վ*jw,X&䯚ֻY^]ՎrS ^Tⴕ_a9g?K@;V/6>Ҧ׾gswf^]Ԫͺ/7*/~ZQD %3a\zrx\a?PQIyjֺפ}jĞ.݄sj??:C A1 Alp[W C>Lh"э0V!oJN~wVz O׻p[YIߩ\S(· "m|րGKC jm4ߞJ8=~Qز2(EL=wu_%א;Wvx4-1/+6 zOfweڰt*~_!>*)7_/տXU՜+X[]~k]$ɧ2e|uoeog8|J^'iZ^{>L* AAS:eDJ0b |v7gvóQ!iM_*\O|K6kbᦩF]׉Dxlt1,ؤ'g-vci%Cw^?HK;j^H_ h]cc*a$FL2q|\z#/b_gZ*VUWߢkZ`A}(}N^4a茿=|_S^.bZ\\MU)*Ku7GjLԿЊ($U F X. PT( BbQ ~~/?:ƼVj]V7nNgWu]#7چ?EE?kP;JxR+oe ۷VIu~sfdI7pYYwMƩCZ>ZW5` !*ĭ '9  ``,' aP\*3 BaPT"w~k3>9+Ro5m*3n4,p@ W *-7|.q;i-SĻxa1_ݜ/!zXe˟bL0_3\ʁQf;$Ja"i0($ DA`4 BA(P*C BbQ '7~=2q2VY៩Oʮђ]Y.1./o,-8hͿ};`;stEmkE5$w߁cǩݢxxq1 3*N !p%( N4@\2 QH* BaQ Nu:ɓ\N99+)0fz#*^qZʽjyrn#X OX-;_BY|R}J]w%wkUj'TMz]z?LZVzM+"㩏-:u7C_֪׻zjOu徿˽䞈y>Σ篹^atp 1ԋ߅Jl1R*Ra^͗זzuWM/]JպLBtr &ex^eʣm_Q;0F]e @P=Sezx)wwgn>8WrzHWu}߈Hfu@3Yz9UrV!=KSGjkR#XN~( nJl&fѯbcst^z1pI  v~.1y W4 0J_oՎU8 \8A;OO z~#WVտ5$8lDymDEįem{^߬H9XY}+rE^;Mu"c ɢf*0wZX<2vRg?+1 ]Ю]Kk.j^/GkZZE ^R*tHgA4*}ס)~?Zuk/.ֽUXZR"gWu-W+FդGng.&O$jbN%K]B_Iǎ);GyXY_Tn,݂o~|Oj]ί~D\Mws?$%Y~r?wpRWѲ_URnr߭Pjzaj:-ׯM<i\a;c2å׻Srq [cDO_fZ'-{xY6O~߫WO豯}XjNTUS ^O&Pp@U|9_Zo}^wW}.=j;?5/a|va<3SkpV~~罳?I`?~=COKP̉W'_J7*)uU IQ[uc,xJS.00aO[JY?^~baؘ|߬Uᬃ7o}oeڽz{y}jje4Zu߂RhTFӚЗv$]#_֪֮gJjO6KGzLOKL8zr)W1_p~}xf}z˰B\_ n~Xew~~'\C@2l^Q]KSZ/DxhE_&=Z_ֵc:Kջ7F}4iڭǁ/z{7Qn[w/}Jߐ@:p}~g^*DV5lwLX?K=ss蟋\+S/$Q]5dƽ#Y\inzo){9T(jy?7L_)%t-7>}B|^%V g" ܗr{uw^-s)K˹= Uv9%{v~PqW$~GRkTRKW7-zԞI]{鶽Ye}g46`i,%[ E=`?^[ww'kzWU˲}~ ;~38_\ԗ{h3񦌙Vl5n`7K=~b0@}POpz{j^.O_~_JYFAZ<'/Rvҟ%jrhzIg/'7֋ѻx? m`FR#7A'Y%%򕓰}U]n{X ^ʽҥed[#hulv,-CTυ _f$/kZNd/]wj/C kx>E߲}?+b=oR欟F7"L.ԩw^W>H5y-#t/4?}˜E<5ndKq^-կvK^Bow5BΒz*]t% A6 rz߯My>ץ'X5^/\mY( ɾk_~ڿŊ[k*W]Z_:(P._O׻|Wj9ֿV]wzw;q52ZOC:Uj{uV1S?~Fz&KqOaa3X\[M`W*ߩ~UzԖ).~XKKRzrz_䭛[tGbu\zGjwdR%IdgU6/6Rz-UO%> y`ֿ\a2듚1Vb=)u#KkQgD`}*kq GF*IwҢ{\Ļ13CG!e0~zʮZ||Ukd测jʽey^ɁRY򐡆\fGJ=Fl6G=tz]~ͺ_.Zk_¥a]Q?N&t(=ǗVu^zDq&.}_r]ch~e1eO?Z$T _E8(4hcʽ4ҷ!ceIiZ^l#y!$.^}D8޽8nG}z`^bd\-+=~'&O_^kNA6yWJb=_V?]UDR_Sz7i/aσ\\N1U}_2=\\m' _v-D;|7=7kU6ė^jd磦q2߾yhsVW+֪#榮;_\?Z{=5_׮U߮Xd 8݉mj1'Uz#h݉I_ս?UўW^# k}3,IR?Rx6U"'i/Ttubu{/_Wu5 V;^޲WU|7zl>zc3MGsKڽz[GrrOݫ/,5kyrHWc8'Sch)mz6e݄0:$Nm2Gë[U7ZVVT?דԛ-='gm$ϜR_<߯Mb)n-;MoWwAbz~5, /ks͘(h;~";8.h荏^Do!!U[4''a[r_WIyAkx#c~ cʉwKG_@dc]KWJ;=Mw׋$ɟMa&gQ_nْWll/>XfU'# d:3~MԄi?^wXF^;ԞztNb/1~?}/wMef{LNKo_F_-zߢkZ׃ |l߭o U#k`bR!z$A7 }BXgRZuk$Zr˿Ղub{g߯~l8sJz\'gk_~k:(qߏ94U{%/~~HP_3IړzJ/֮^^*9}t,n߼}UTJ]r׫I߬^b'|԰i*jsIݯZe^gnw7jPh Y7]W\īWko(_kk0ZT }̯F J"刅p,/j7_ sC߆2q?֦X8q`~URDXP<'\k>s1GM_R ?#}χ9L_#7 7wHW~ڮ_1w{Utֵ^^4^~IAvtR!#/W#IF{7D+J׉dh7y=?u('w^ V}tWiȰI~`0Nd+J@W,T0&2 B`T,TFݻ[w)үwUKu&.gxE:zdȻ UK U5s#G~+Ò'_ ͙~CvZlo1*q+OxN;S%϶G `M W%t~;)-^UNT-sgl!MdR{iiuw;0 ?LeeNV( ,бKrnyk05_ѓ}^IPe0ᯯBʚQ|]:kUZ,?nꨥh~}'uUjރ>^D+]PpE%`P@7(nT٩!*6R q*14mxD1?rL* u/PR)"@& @0$AAX( LԿY[5a|iu48;Fv_Cޟ`Z#'~MZuV`%a] A,6!Xۤv+kOlgtW{j楯$+vfẀ̞xEQmH3P`sWqFګ\/vp$T$`X(2 ¡@j3Iu,JHjm{j8&_g}EjL{o,}_pbM_4?`bCW96rnQLtqef.+W&/(}ުKʪ:yj<^o`.3M4_BwQyọ?&XƬ82yoYIs8(0hrI-K8jmCtM=]ls3mȕ 6tϦަ3S,ޤK,|@8%F'KLMٚpXn[1ڗ5Tɔ5:|W‹pNɥhvx/-d4H+Q00 Ir)p gjSjU%rZk B#jx- 67`}eA8 v7-WJ5wkG%c z'J ÈUwXH~zUz5^V*#JMp{5D_qRL~BD"kה^QDQʭ[SՎ_1[踟Y<|ܟLގUwȽ̽w4'`WrZ*,R_JĖ'aS^{׿XֻOIȉKV 4lyE7ߺq=zÉ>KR끸7\֥嫫 'q>hcQ|_mRm/jbo._\+HdGQXg'ޭ+ֻWU%\L\h*A < Ba+0];N~1gt#;U c6(Ő|o4Olqg;+KEt&2a},$pez)?1Or6 kGfb6׫~Rn$nK$y6?]:2򊏈N꺮bYrWu+I=?8$tJf,r--5gw>L|ٸ Do >r YK07"3r$='lwI7Dlc)7oϲe~:lwK._GH~ 1]M,MBE:.IMcW?Ҳ|o5W$C2 0f">Au!G;'#mbTSh4闱GšHccf+WR}\_;%H & 6E~0l$&B~Kכ56ڹH!$PBFdnt׉.lmR7# ʧ1rxZ_M;Yଡ3aCsO`Z+!2 w/)')~RE۰~+tsV#*~^_|3Yottf_XA2߆kk`9 3뵍dEs[-kWyL>lU]~׫<[N\^tg*ֿZjzk2O.B9iR߫z_c@93}/7s~_vzBjz2Or D=]Ofx^zrݪ}ڽzée_E!WDチb? jbARQ"> ~P%p('ϮM)Ab^_jάTOrZ\W_Z +%䕄;ԜB÷->wZͩ9ɽjb+mqށ)x澁 9օaBWNA\?掦6u;jsp/U(96crܾUےz%~ 6)`4<=X0Cq4#ýKAJ ,7L~~TvwwuʽD-׫;ew H~\tz6׿W^}L-"F;z;C ~ 6w\茑7&W.PŸ4%1!:4w#?6Dk1 M!|/VM#_  ?29͏N=_/uydxZ蘋zkj}JIYEHB/&[VI=Z/_Uwz_""r]h嵨b)wR˪W['|ܿ^ ܽsGc4xp<)^j֢O^ȀkYe%}g66&a7J]UիʲzZ~.'hrgWCAX- :yzv Ž. zF7Ote,mzmꦛ4]zPM(KxPM=2f @Ω[8A_TF<;F4M]Ea ̿0vܣp޼ >|KǑ?栢#;ܪ6^SSG>̯a".3O, ~7]j 6y_-p!w -ImgeM` /n/'G>||VCx=j{\(ĵw3Ry/Æ/_?RׯIsz/WoR : &dj|(eV-9d@D)ZtzňLW A$Ê]<)߳sC'!LJD=W^ t˨ߚZgls4\s$d[zIsK73Z{x.zyhd&_) y*bLra:!I~(Wߡ k$f3"ܩo;22p``Ĺ\,5bp8O9v=uoF/L(j7ӽiدs1Ӄ\d~ @|wtdJ#8 ؃RyL^P 8uӃq']k>OHyYL8EBO ;*N@u%?Zu' 4R'KWȹk_'ƣޑ#GYVs(ێማ=FF@!0XD`pͿm{@LgjLT>DK7L$?dq W&j0oH(p5b əY,eT~nK3O{GEJ Iw~AO1A9jw.|wRR{_rA ~UVWO]3/=]ryW,Sq55b_'>~Vb3._uc$!sL;竫֪'藫t[aԪGbks_^'/W{͊WvuuOY|JOݮ"oXW\W$zݯ$xY]xg//IWįT\*~_=TV2q5siG`ٺI=-zЊEtzƙF5nt-$mjE 3'A%wW|xM$~;8(aJm(lszf,eNНW<^^jub/rNe-ϋLx1C]*לOd/g2K//d&WK?~9ЪLTE( jW>t7R޿,zI;~h~T8Ku):ZԮCP E\ߐN% nNcTx%"Cpku~K'r˧y<_C_pOVWڧ.c%ݷk"[Hni5yz׿WR_jݯ~'O灕@wDžw蒋B[UUիs+RrOo=|DyMk/k^W*wNS&+WP/OI0:0)Be*X vxAviGvk j'_WԢސ336N.N]ֲgw_jfD�k'8H͐v:psN(6l[A*iw,p) LR eɤԊW 0Pf@(FJ;xR5>$i9%GTBzO]]R9ٕ6补mtv_iwwqqg{? S8q/!qjmNt->BIA RxS$ +UCnsv6_iY⚗UW 0VY5wf\z7/S^p+ȍx΢8؎J0H`0 Q L(Hw^y&$r&&Mt4k|w$}ngI_?"U8z]s4h{$!_XpP+YeΉ{㽔8e;uV3++uɑ!4ܰ{%8G R8ׁI`ki]RgM8˯ ~8( @X06`$ϝJ3S*,/Vz^OV^-r߻jl4mK]z ~nnh- ʇi߂_䅀sNl|Nߍ:==4UߎEt"/I4wH6;nQÉT2f&B& aSAr`8\"( !`X(€(5 DA(HBG5GRnRWDUS.=o~Fd=vrZA|wibۿ`,Qi`i]Lmk(cj{3עID2P/ܥ뛑B1,5xq?_z>Qgx@f c\fcxp&LB@, `P `DdcQ\nIR)r"t>g6~/?7| S6v&r"poqc5mH~.uA/y^IN_ Pl} /wNh? ^ZҜeq%[L}yYG& w_xڀ"q$fȦxvkwMa?cNz*hB@`,g %`b# T|OjU$LW˥5*G{DQzEiĞ`9Zmn>D2V--Əm;gM_M;y^ RqDvIys_H:ۘ`seFnNsҀߊ/!Mi#0MWZEOA:qv\^O^VuIc%S!{X{z_r?r^/׃lv^gkuO}ܗ W^~TUEG;]-zkտ^]^B,TKi}rzZ~_פO^Պz_W~֤]D"֥VjzX$-bc_M x~!_,MKſSo שҽW&:u?į| #/~&L OV?WZTqV=\L;qW\޽6z\%ܗőXڼB"Ep;zjƄ翏 b<4<yͼ8 ؝~A[Zխzg//{/v!džfܻIBnxGG뼶m`c'μ?4-?gZV^>_HI$mNmeA࢑AdI @ퟗ~`M\ma<}h-ɍS O ()o]<$V]=ED!I2~pWޤf%:V^C  ߻P߂9XQzz]KB3ųW{PMտYYW~ gGgrzԖCCWYis]X5^R_آB L)Zq}|F<#^Njm3jhLRrWUS,FB{{NoGU貫r|ThG{A:yW+kjn_WQ}^?]wq"q*y뉛Z&O/:v+t߫WKWr%ѬpKS~ gXDi!}PVSjY=Z\&2D_}L-RQzKw+?~w5HByk//%sڝ7v/`V'{ d?V闯oפou~jb ?^^I+^\.o/೒s9uաp 0'0i1s_^'}V\q+߯e sFxZ<ء=-k-Wt40tH>O\+{%~zMW\]zO_$E0 F}p[t&JH@$?zs+z~$ D^Xy8O׮F.  _ 7462}잟}x*Ofbv9x$}y 1RƲ2qy_27z&^tE:z7܎Z#߿};iZ'z%{y+fkE@ȱT?B؈G*Q~zÊs# Ic&?U/wׂ2 ^a?(Mxd*\CMK_5W/4e*8xcc.N*MhחՅZKbTBGrzHAjxJd+f3ü0?^szI.P2zSJ"'26~eRwV~/0~rE*7[L+З﻾׻k^^ﵞKZ 㲊\dܖBFZs柮Y,5ۑMW]Z{[ؙnW7۲9A;mOW}wZ]U_믿X}ky=k2W܄xG]GXE]RvEz*ԾVk|dTߖ_V*׿^{w߫I{t_[嗥y'Z17wƓ+!RVV ;w~R|4?U= z%ZZ0؏˹{ 7MT\L^Ir%/֢=Sd"\/@Z;vYu}yuׯ~'h.G~xW2/BApG3޼fMArH^j׹q~Dx:dǴXDŢ|# 8/PUi?7ig?""#}ި` wsbmA+dP-c 駮$uZ Ez~-rWtWWB#esR o4YB `{<.~Kщ==tnɽ;mzƼ5LQSE_S2$$B@Z.Rr׫MMR)SK0ʿBf*ɍ>?N"^M9x{|Pie#T= `_wzZkINt˝z{WNle{GU>[/ ^(`rc>^Pt/WN{Zp e&瓉]e!{Ռ79}ם'{п/֞ [?Ɔ\i1oa3gł;5Gz]bƓm?dLDCNI[D'Ooǂ' yFs?#W\-z=V_o%Wv ;`b b5DC^"ḵ >b!_t݁ǒBqnir&<(T?J-ׂHi5Kc+F[ՠ /TՒYXؓa0.v<7kXB5ux"k)K^u[ KRmD8w=4UIh&0WG8GSLrĬ}z^F[.*X;YK-uhuءR~58i:fT43"_eo+[}޿떟ύBc \ZV!6Mޕ >,VVY&ξ4>T۷5*b' ʌUʵ[I.:눺LuʗA;}}.]~rڝ;\׻R߯2}ή8)JvIT9Ezk ׫JתZCV^J.\3?GV ['+r]Du=_W{פ-j[H7;;俥 -&p俵&"^uw&E`^*;PF[߹kFzZKwڽ7o/~}Z[WZԾ%XG:QyVURZ~Y/®OZ/b LLN-aeϨ .:QKq9FSh;߫.צ+׫U'rW,x3F6Fb+k5y?4zw?q-h %hGo}w_b' ~ YZ[jxo4upX"޺x,E ݩ?op&7C[HgO#`syG=}pBw=waw[p[:']iw߰Laާ` Ÿ8 Yy<^BV%WDo(@; KkT X%P V"HHqżn{-qcrL}_S,}{wdzw&Vz컮"6FV]gBH/ PZC`ENƟ!<5),O?͎@l h1|~.7+t&/zU{>S}k.+WW,wD|O𙮡?նa6<1$Br߿bi==;kǧ?cO-f/|s<,;ItuRJ%]ۺ/vI5zW.J?ywh"߲K]Qz'R}p5EQ2Zrm 'U7Mw{ڽx@`.~=:#`|=a{J-Q\^w׆"}~0`^j.WC<2d)ݬJn׿ѥ?]I4:LA+Qhnxv|vj-/տWDvI%3Ӥ9v>iI_&$t_&^=M's]W)wUʲ9". c Xn#APD īܑs.dħ p>wk/A?Ve6zX/N~θc,LmFxHr eb ݣF ~x~ VRb,8iOaM{pŜ_E(Fߧf+J+o&FSnx8׌ofc.H `XP a!X& H"F{sZfv;BzrL3ˮRK|A(H.jZ$\C@JLHns5{ig8ocz<ǃW[)0U3Ѭ4vnj`E$Qbnjlb"H(@M= ]&0Yc%IzuSŮ}]vCqEʮ[We_ ܁%hrÄ2hVG=)0ogAZ/&އ8f6y|3wk,0wc Pdh____LUV8U&&4?ׯY_ s+$ǐ@?^jLOfq;WGg\~ t;d[%h'#ܾ'nRׅm i\]Np/p ) X]Xq&_`ҮUw5+{=?IHM ^5tY}yXRc:M'z2Sk U֫ɻԻ|@黻k"oleɾZ, :!b~-$19?}l|j=>9e.\zߡ`3H?Wks'߯zZ1c_@oNP&W$ouzٮ~uq=~v뵕jW/wOw~ժ9Uۗv︻[_jt =kbkFU2 euu='/~~OyM/sKh'4_=f_j$YH_v$rQU}'9^,zߒ~1 uv@:g_( 1꙽s_rs׫j#EO :.vEH7 e7{ ^Ľ_*%*0i 3#>b-i6\ LlD=6o6nyB*[.^cjZ Dj"upLO$%S'ЌVzE_I';.H5;X~TƏZJkB\g'ބjפ~I%qE}d wm}hEaCMVOOfT'.y=GջoA=Jqvwuչ]pK']/XjXX^/Us~鶾_ 'RrEWeY~jL?=c$Q}yL_dDޒe_k֫T~^FOWU](^,u+WvFp3]q=*/w ?~qX_?#}'^zKX &Xy׻Xԩ|/W}߫VxcM7TQېgTDd+[zOWZڲjՃ֯Sׇ=sm9~^pr>ėx!gk#wYW}UTOj߯~%;>oX? P0Bs5^n5S1&UR(ى+0#i|5 '++}J2cGLh48_ּGԍ/txұ|Gz64/0OSO:XɅO$wE׭I赿R~\_._._j"@"]}+ Fe9>$䖻1IpZv/-:;5BDF`'ڮNnP ^5hO4䫻/Mv 9ƺ/-yKJ3 ! O%K2\]+= uk_GտrjտYU_UwW(jZ/שSj{^kJ^R'fZﵩZB|׫}]K~b#\/Zj8g}߫-MWUWU=q&\´Hٽ^kEDD^0aCm==r|ok\MהE3q'wkxC@#eI3IXy}YQw^߭H+[OBG)|6uuK._56Oے]tQ}߆lO; VJhi/V 74C!pi/=~eWz_~ͽ\;EM[-Q||&l[Зw%ڿҭ~v~̣ж96ø%{.j|+Wȕ׋J= XIBbo׮U.)HJ}UU[\"1e(ԐL``4% ဨX(6 A&*^82C~}]@MHZħ^ƒZ\|.ga.€^>:|5;o'G 3mQD+\nA{kdHA]l}sd1/t+Q3q2MѠE;N&˙$L|qvM\ŕ{*|-p& 1,G -D%0kSrfoYW%I?Q&Ix}^v߿z4[z .c;^IA۲w4c~ct#?/d<S[K<۱+3KےK-g`WJ׼/(aDC` ;<{Tok ؛, *J € 4 C!A0P*DFF?Z񊁥KkuT_CcZ>$m|4xzr] 8)E@-|a΂z[=_b_ySݱ]w&E;oK_*mbqxwTrTLD}e9R>Q^(( `X06 `X(6 DB2qǞ=/u{ԺAZ4?3y^}J,0_î{v _+DZX4އNd>!ziZiOٟYJmU)*/#=i~S8+_{%Ak+la%ꌁ촡{LxTB(E @, @PL aA("!0Y~xk~ETTʦI+?J;Eϝw+0d__m@T9!x'_ j#ߪ/WGuou9&6ϹىxZ; }_Ƨjf;O+r_SphU0rpRi|*ߑӧ{A>}؏ס=%u:~-~EODneK[^Rv_-R]_s]ZYvw-<~+bWD_7ҼN(>LhMrBd_Kt\]zԖUw4ZN#%c֢jrjj]^^YW*˵%)O^W EZ[X}bu]Vv%tMzou@<2OrrX?W׫֭~ʽ\}Z纴xW^} IO_9~Ik\o~U&oժ~I׊ѣs/z"צ\I~*wj;f~O-ݝ+8tLE#ջ:M+ ]^bۖ?8 W, wM0uߣ{Dz{d곉K%WKKsm Pϐkaru񻻔ez^kթkz:`hs@|{l"v̗D_S]C=y/5"ޭe^z Ox!&zLܞ|EbSS^_MuwVH_Տkc__>IA>rqV=zխwWVۿ}::|sc߯Ebb,7ڳkN|#U.Rzza]x/۷ݝnJƐc`jֿW.Kdƾyu~5VOn2QFpK)kzr[Z ՓW=u~Q}\ЕÒֿZK\^X*KE~+֫-ik(z$)K-W"WtHn֍?2^lyz1X_Rzv/_vd|z^BMWW|,GczVz|v\:]Rd2ꬬ~r︯EЇ;y}ޯ몺==x$y̷_flBnݎ_F_јtV1ĔWzOX"=OwɤVK%ߢ9wG<4O=~דЗ"._f{k֨Ow^W~#E__z_w^_Q7r@yA?uġn}}Mzw%KZʭk^K}.UhV*sp?E+_x5-vr,_=]tP[tBZ%}N|R $;˓ֽ.[W2a~'5+]D+U?E[њȋ63x5Dx(+E-LĻE箧j&c, ^ExK/~\דsy|^wzʧ03 ho^ !%K.l'p[W~.~DW}=W/Ynꄽ/];j]u]Wb2@A?urw%u?RZ/E_zj~fwI닯Z^_+{<Ȼޡt-(ѯ=o| LzI ^XۣHo/͟&i.^mE &ʰmd达Ԫ+ȟ})Wj fd$t+ +Gf>z0j5N-~\KˎU5/2KJzFd)ZG~y{}etIkһ{7w-UЯRzz r!Lي݂9}=~a1? ۷U}Khzn f ^I_3?#|vfP ݗKD~r pu2&cBb ͩoFUv~EּPg?׉L3OVkEz{?8 HIW S>M˚J¬#^Vjw_ͳ0x2(>$]-Oq K_)׬1޼.%К擓˖g +", D@6 @T(5 B0D&#7}bdX21t>GA}bڵ65{ZK>Re\UvT*>'x/|Z_gk='rHlfG> G{q<Ǿx[wǡP iWNw^z?vg6U@ya7r:h-*5th&(X "aaXN@T$ H Z*ĨSBUu||4}g[3? ?#L945͉h6|P,h8zFӦiw:`P/'KALJ`|}*@ *>mG-}pWbd_><^+i%P@Ͽjɖ)1Z׭qc +F[7/3v:" ǀl,@d #wߎxaV.EKs tyY[J[ }KK5aE7R컗eRa߂Uǟ*è[kE6";0fksi$HQH'^i5)6v7[꒷G( ;dI,FpI7ː8*F ေ L* `X(% `̟>jbo\DdN z/}q%E;E~mj{./vc߾Muh! '@.//)'ybi%߼Qv`U)5|g\<'!bLxwtk)1Ks'ZZz`&&$h6"AP, &x79g7YytbnIX?Ώ듯Dmϭ=Oos6*-G] OǺovDrq}Mx r.P=çgojHev/oGx0Mmµ7 `}mZZAn(nGA&0à["UXf*wst3y]-F$Rh/]g׫(ukMIlV-ܾ_XZ7dReV~,S\z/Wok׻#^E ʺW{7֯է(P{AAJrzW+.b'ʬvk}e5oRw +<ވO ll ^ѳvƫ>^q0A&4c; wP,Ɏ:DߪtGT3V,e^{n׫~_O.֤$^oUԦZr0Oo ~JN ]w>Uܞ =k5nIE:+,rƯV+ursn" ٙeqtaW]LZJznkܥbn!̈́:knjZ2jSHR{?)0t bds/3,$2&`>ωs g=C%2TG-IO''G,u~>ryq1umLĕAܖ8zh~?itx uG5Ez\4”$̍ZuCm/?G+Buʑ'z̩Rf i1X>{N 0Ǵj;{Ɠ9ߪOOaU~劓$dg{A3&XffX}T|g5ۮ! GgW1fJZL\{^W8ő(rELz ̙R_gd?J[s$ S݄x$tJyUۛn#:y}lƓ&|ź~Ьʼ9c2a{ín_pE ɻNE棩|Tn7/؏jT})}]WreV>Ǚe:@U\/_&,-Wႎ˹*S!?:$[I?]qf o=(S㓭w0{3,@x}hD=^eޟ[9<0(?~R2cru#ECq/-p?%⫓>j5lmcEcd<.ϓ$ȓ/\DN1*HE>^n𘎭ud'rOO=eIݘ߼!:hB2%ďuW7hn/_OvYLV R_E G˫);,Ptߌ{Y DR_X{|$f/ ] ՞(׾"EmqwU^?H$n W zO?ĩ!sPQӦ"9r^ d߰B Og}ueMt%hB\7p7CE,Ll!U;cJZ~]O#60=C)|S<䛟ucTĺ#[0~j xdOv[<|.0>O~!k_;>Y['# i>?d@'X%-ldE}R)Ex[!|&ҲϪ;Ad u}Y<-2P44W~{B3sO/w/z`J} ru˖֝adA7?/?Ȏa[0;e|woEÜwK^{kˌ\iJmbײz&H?*ߓ\K.Z|K/wkE鬗k bK}%gQ{==_ipIlZTߡ-M_~_/JN Zy|'3AAjrSc"zn^Z}t__RI^\GN-{y4Rl!2IE洵"^bg bKӧUbI`A׫U"IڙVRz^S*=_4kܜݸV:l[)&/yq/sV^ ~|FZW/vy<ի׿V.P_#9}3 K|lmbrY_|EzO닖׮_*rtՇSUIIGD떽*{z}j{ĵZ xA{.w)nW>r kk{٨!=W]K=WWdJy8u'@ ߟ\$ɠB$zko=xJ(^ } e7pCσ|RòB?/Iyz Z]01??dfF":.^[O剱dxY1ـD]OiOۮW /^,ksՔxߺK!#d;ƙ; c J:їd o/KW%~{B$'.CwQDnazS۩$ ?OĨC#s׳oOLqUz'+K.Qgֻ;{'.RM}E52$~|OTɟAm*~v]vpJG%cy7=:K)iѓ `+~n/̀KWr_G{KGe]Zl#Dc7uy=ߧ_vy V84fU\r5ѸG±2;I駸`Ő#k&bۈܟ>辫nC(y%4H3 |n}š'/aOOlړl?Gt\| j{C2L{:``Crۘ\7 c>iF,ڊ_U|Bl%YdLr~ځGlny?kB'QgnLed*y7&3pV'3<_k- (aw4>\Zɍr$wez)ȵ_`^suOTXaf4zq z$!rZ;}/BgyKW'Zeȭ};Ղ'y2QZvO, {L`='+/{+K_DԒ<oW{]^Uw,W'#} {u-kߖ|/}M?5^D=,H Ɛ`, @P0 "s~UJQS)M%C}?ݹ|p#4n>gH97(iFDj=L/_/|W ;kp $T gtf IА `6 EFLAX_M-9-(HTF?zٸ=u|/*ܢʑ*H]Bݾ։ȡ| Pm,H `Xp@L$‘8D$# q$ T`[QӖ}#Z n]}*_.t0ly6[3,gvzV~/Qdw+[@n? pob-Ƥ&9 Y7e0SEk6$}/!n:2O(ۈ gfo~ӻO'q1Wau$D5>? Oཀ.1&,$ XP!`X("N"cםMl*V]P\4>9Sԛΐa5O㰟Zq][an.x֒A.g}4o䌈j.z^oH%B~y3x}>i my`Ҿ7sʟ|! a)E+@5=̵0h:F NjVHA<-ؒ-+x_80W,<((,#pPN @T(ġ!L-MϟmLfzk$gX/W_7Sٕ=jg`_A+;sy]z_)آDJUWpE_ PYw/j(}@ h@-_EnZM5ETz>FM 8Fk o:?;S:\$ >Iq4FlE,U9gK w`ǿsUB"|gJ"q&{&(F p4 !b(XN pD|:|rqEfe*tg.]zg꼵}rV5,1uZs+& hu_OχNx~ۨ NB wV\^럏y0ZǐsrTFƳUvh#胀ABqIHw|OLWu]{ֿsN_oUWjs$GYLn:pE]ZbW]K߯UծUu*#dմ e,z Y[( ϗԥjw|O}wwvO_a^IGnWPh,jh!V**/XWռeN|Ւs~uk]͗r$l5rSݢ]QV;|Gusڱؾ]92IyCa'ئ\'=xcT_V;/uRV,B5Gb*5&i)K܀X|_™TP-6 \(xBBιsw™./nz_"ޭf&{ }[O_tY K8-˿|fgn̄'z4_Vev]뫫G}d&=g\a}Ճ8Db?Cՠ$O"Y?T - 5mu&1bD~}eZ?srAѯzKkwœ/vOF$pd3t:7}z<q{e1>lvb&"RZ%P黒Ǒb!| >ёa6IӪwh[86Rxh}_O;Оl ueպًr{dḖa(v׬Wz &B~xxr$Sj4Q#v$U};u: IL1=27xLtoM.?)ʿHw^Wz3"$49*pk}XuI&TڲĄbc+6r2+E/.9OKs[^>~wj8ۆ8dK /XVnŁFEaCW?ZnZYQ~q&zG>򱣣T]ʦxɝ12WV!65Թ)9J# <"<<@ngrOKЮzqcdH迾D% TPY X^ٟ*)hܳ>̡Aq^.ng!۹&SߔzҮ6Yd 0U6&cIU˞{ !ϔ_V Uf(o?8ʿE{p~8?h_&_0 UJ}#T^VTv߳al'zg"ƐYr]>~ݛUjrFi۷ʽ|s_﵋ElcٽZB߼؄^7%Wr/W-wWh`; |AB}o^C9kzO_Kίk/&k^6L[)sQ)n{{n%bV;MIz{$`jȵX ɈʟY)^J[^ӡ_j[ZsuoUk{W/(ynBho!!-rz-UЮRwur]Z^?1T>RNT/.*տ_]Rzz$%9cy躗ˏ.2coyfFoE.OXfŐ`g'&lr/.*|c4oրˇ/'ܴ--z&Y=W|%+!u NBf+_l ΆZD9 z)v9"{i0S3V8L-kd6CC6}}zȝNm\Ej솲2tW>x;'{{ѦL]-,7ٌfQ_0pϲ+[E[ץgz1}a|Ɨ)XEoh?'Ue.傾GЦ=^$8qЅ[\nפ."]5}a1Z"lW zz6he}*7 PBh*Coמ=]w'l]:-9=M'4QnSVOh;ږ VшIQG'6"|<Φe9>O*Kh.ۻDܿ1I SyO,6[^w}PBS~M>-o,~][F6AףNZX+ܾj Afki/$2$>oQ6Oy~Jui?{Jݫ:QMU~_[kRJ;m^G^z?$zϫTIDVW~OwU._wAC}vwVMZe}ݫk\EZZﺿՉ|cC_W^DzGn|4ٴe6^̡BG S^+֦|Y:JtMZt^Z݉8jXz"|Lc)-D_k)K3%kӺUeeOsc)\G_Qb0R5jz?R{1F~iWؚ 5Wת^YJPЮɍ%gѰEz^Y=ZRz/*|@M6`dQ-}[\tge"yJLvꖽb{&v_5}ק'I~:׻C=BXа+}pWI>-Wt_F9+/ %o1tl} c(_Vn='עDr$;_L@мz'Ez>˴3Z~zR~#\8ι>$VjXg+o$K"'ysr]zUz~ ˫xfs{S_k{ֹ4;͟/Oddh[k.=d6[աljRkGܿuW7_iACu5_OWֻZnTueJ>eq1x}HĔ-VԯRԗtUZ̵|W'5`YZ|Kwh6z4S_WIڽ]z"ބ5_eOJ︋VVUZZ֪WZrf{rIy1]mb^2$eS^j7%L_wԈ)d.zo1Y~ ZfudTGҾTOH}`C`/Jtzo?-i%į72]S$RfZDIjSQ]f;tzM >߫-2E V\=mit6RZ#߽Z_U# _OZ)o.+b-TOF$ׯl|NYJl~)dc}y!g=܏O^^s.u+ۀ#%zm O_/3cQA_  AyrΌb86Ȓ[u5*,w3GΟٛ_G$4ߪzgi56$2q:u,B`( @X*'BQ `, Baxm{9ĒqڴbM\N;}6wG }>D r 1$ cXrsۣnRDר=o, Wy]|;s^񘳪^^\s-9=ϝfsRfY&0ɮ0q sND4&0W+, &ðT(5B@PF$*BwW۝uw洺e5Vw$ݷ?q@Ds_}31E'(p$cnCSoc^X{qXzl1}ߨ{0yFU:xԽzoMq>w`_3!Թ*Ey(l `\0 pT(E Dg93|xw{s$8p8xs]h@ m_z5PQ~MKZ^eb׹$(@X0 q0\,pD*{N{o**f3SVqK}/6hKCP|J?֟.,ov,笎wgSn4A0NLM5zBzt*MO {.u&;M= 8|[#qŗ^>ڋ$zk{.nJP@- Ѿ45;( hE-i֙ו+q^AD rоZz课^{Xcqջ{.Wu}WKK.׾un6l\X_lQ&ND^'*L)*V;Vuw뾾[K"@|5og>rّFdk3cXfՉE-+w_zޮ2VCOY=pvo;thY]#Хk׾kYw'_)={u WէXYqģ/|b_֫OLKV7+& w [bsx%OEtNcلKr|~_ RFhIvD|_)1WyΑ7Ç&fjE }T9h2Ɓ}xfr{C6;ώ|?}r. ;k:J}(dVE|rԺy7G2=oqSuK5ԑ(ܞ_[.k}6_)pɪ&A\bTub7g[w]@h mxik,! sZEߧ9I_tIsKsNK:L5Ч^}K}U_;tqKO sM vk"{z SDNh{I%2c,HT폱X'1@i7wxV=)_@6i(KY2g5xPC1]1_.KNowRɣ~;_ZNJ^JQ`nDbW{=ow W[׽v^W;XG.E잂 ?\AD*w +딓=Kk{\fpgԕ~T#TC~;?rn,(ohlڱ-Ԅwb'w ]y?? 64)װ*pAAw=GyASq{B9~ 7b=FOkmfSGG EI)_~.~ED;'g'F%οC\+EʽR}'U_^׾%[׼W*x[9u^)fKxLԮ< FgG}]ItJk̯ҿ.=~hU5 Ụ=#aMeXC60hZTU{hۀ &s[ w5Q=ouV^֤~ֻ[gE#sL.J+^w[VL%hqiśྒShX7?O-[(2PXPgj|rn~KHdl /FpߟP%J+竈n%vlBc}zY>l"f4cjѯ*G |<C(Am`QGLY&i_9"!ɹi&й#:ׯxK7~Dcg?KC⶿ɶ5o'͉AAC)n 3٥E|ž9D뵊W<` *`r=̾;f &*z,>3_5>{\ ԕ~鵯7^rQz^Md_f <7O:&3Vr>1eQA%%iMI}2{- E^R/*3a1bM;O?^c,oT~v[ bkǩeV1S!\zsDo oX/_(&Ԭ^z-cO[OTw2DeGW05}s5{CJĬ}'~hdr_M=xwXCi ?&d>Դ0ʢ0L@)=A.TIWkyErB&o_卖H|}t\C΢g6z$Fy~j La/G49QLp֏%M9ˌQ,߫;}ѿȖ٭kBZopoD?=qeq_!_b_jzO?]+kք궘Kkͦa₟z{JK54Bzx׽k]tOwW%~3EwDs֪TtDDB1<ZVWtAEJu*׫W/7^׽W/פb{:zKv~N^6,ai(q2%%NUإאc` ߢBGJYjoa`Y_$bZr55uz˧Uiod/.sU6cE+:-~|Z_-գe妢fMCIM gn]a D{Բ-+sעwTR,)c?_)}>yuȫ_YEZ~fEOGVڿ)=Jktwuw;6mפ擛ծKfJ[ t1u/ KB[vGeU%u^"Z<>!G4_2ONI0D؃)hyXeͭ5~jOZWj[0w{G QZ4q0?l?2$tÆY K/rO|Nq Mb]΢Li_n~Ü}pP25b @7!{.^&}׈ٍulExR7 CC,wV_ kQۿ)ȼtLq月4VY?"\">Nr-|9k'"aS#CDau#S?y<}ò:}1I:?E*O]wk%ՐPBzXQCE.: n*'LF <_8./ӱ4v\;GaFg}D8&ػ$bv%ÀZ&5corobM=]&e&o=[6'w}^i?Oќ==wO%_jAONOG`K hROh;M_*'ߜK[DvܺdVLC!dz~>oW#^!r½S44zt$3r*y~C}lI~e{{}Y()??}ZsPV*_[5C&%vd[mAEjrq]u!=~UMVWU]N. z+⻻S$&oG*Q`<վ-{8+2vT'A.+/ZWW){_a>f*<e/H/0hG[U:_-[ۄ,u8pftT_} HgQ*>W7Wtg|v^Ub/f>].o.cVwD;uz~Q?DZ\ eRww'^wsrJkޚ9Ө1'w,^W\_\k.l88kkWVtd$N<8I0eNqmPOZ6kylɏl wBzϡ1U-QO?'w@5ayPZ9 wBd8jExTZW5&/hXCڃ6z R#tV*h\'Mh7y#^:Z]/n<=g1ezt3:^%^OZ$4gC= %e8JO퉋ir~UPWCKLHTR^}9UcJCmGGs*w< p<͸wwvӾ`#-qM~D^sHW}~N\`H+6]<2D>?t>XFVJc ??u7!<> Ou4lob1>)`ږsGs.?J_ׂ`ƈ}Z26~_*jTo-$>OJ_)nR d`_9|Hr49W. TU\= ^}S'ꥢQ(ӥ|?z}2\_8> `֠СAdCNKa j|+ӕhig3]/@@1^/=pGОՉ{(j ~:@ο cgUý_b%#',\6Ç]ȒZw=F;xX01 \3_]x'zۇ94R@@α_d̢!]RZAS7\i ,guO@u ?DHOJKY/MwT u4<>M=˞OVpg*VHdB Ƣ=>8N:i%r(`@0풂ط޸7ޭ+6jffsǸ GTO߾._P?#Z' OF1)x%l^ƥ|%\'T tֿH{ h#rI׳R&L"/}U̴?LioڰyI|arTu,w Y{Y|of=Uٿ}yrO5 :`e0$-"Dp c³z1!lcʿ@jOW+ ZEXa/ Ȼ}m%\KT.]2nY*B" ʓs=jY1|0[#LEUr[!ϗ0>hRݡzbֻ!Jom7o7O'Eҗg묕OtS'L HSI}@>޽՘&O5ԉ{Sykc/篢 [=ǃL+?n{دNf# uޭ{D餫C {ӷѺEZ(F`XRa@T,B`X.oI={y%6| OqyV=]S{&4t|{ljkWLJ% iML1N2YۧBxOjs(;FqbҴX˝A& @h0" P, Q8D5o*RS%mnŨcM1蓋8A-_hsxpWLV_HyxMԿjYPh}ùNgaѽOL^.X00t,.A>i?qPַK]VΤʚDxݥ.+)d#+p&,$ h( b8P, Bb("G0k/-LqWFmݾ>Hܴ7컑GU޲+]zܕ٘~ٓ;x5cgk)xmL"lk:@4|IFygGyܷjDRI 8Hkmryʺ!&>gerQªP?/~f7R?stah1I3{-o &l!``,p. A0bGr5[ϯ*_=8-\ߠ}ȋtSڨ"h,e?gxJ/2~","€X6 A8X( aC(L*+uw/]UrMTqw;wēB*ȞgD2DPʸHkx^3K׿Gtw+F}vVm\x2dY}ON~l@jĮz (p/q=+y1< S*KlX@)8\`&Z`T,@P&%Jk{jzL]EX;cv'wG"Ύ+<–`*N}8m} E\uJ,~^}8Ϗ~AƽkC?nk\3 Sv˺O\=/{# ߳A6l*WWֿR]߭Kj?jC]}^ ~ C~'/e^[~l|o:~Z\Nn7)-q"=P_<[k.sÓh4DYV0\!뭲^ ܞ)W<ϔ!n?a|g&CL֦j ǿU"6j I-vgve- FlQz&bC>x o@;q8iMO3j,c^ljS#$zI@ì&@glf=[4aEjT|{ gGz= P-_rU Zbu v>u?Z/'srVV_W;%􄅨K<3a0a}p g6sr<&|'iJ'w*F`kkǧ*M_֟~;+Я.8(#^3ҏ?+H h{U/t~#Q֌goq8`2e[ L0ځ‰W(]qun*59N H-0G/D;ީ1qEk b/B' #\IyH&h|0"?DпU:'AqW~_-¦% xv^oGZB֐{`7p@nDDz}MS~0$`DOZF}1ote8מX{ 4ٽOQ/H7^ ش ;a@%'Z\BO.N>vqvm uA6wijGwAtOj5crT nWa0e|d$|w{"[^Q%a|-#c> >Ի'~OR^"bd"]ji<6OO{Э^,~y>-A~ qːNZ o θlbuл ӳ~UL#}}_MR]Y |ݻp%ˮ Bq ݴtf&w2YVi^I'׷'Y~y|Y 'u$g Qy7_%7wgis="ۙ_gPlTVb{"ƩrU]9ViA zqwDy|R FRB3>xMb?YnrՙMKAFw{z:ж*(~kֿZjXkb^LIyָ-bG_ܔNWjBd- KpIJwީhMG>I!]pr ?%>O?ȁg^$<;-<7k+vrNl゘7iz`ힼVn)zR%mMUm~^)r#kQ}Bc]m~=až{Q[m$pW8YVJMWKs+?ߣU)d2.J+ɽ-LUO'^?XĶ&,  5ꇊ_Jr|Jb[~$2Iv W8K*+""bM&J[#>WWﰭb=%4-6׺'wZ*EʴV:$+NPfP C]AF6{'(0eH=J`n}K\Pr }i#+} Q*1EoȹNU#iV3zWf7nVS7eO/M_hqo.G{wtKmi OW~܂/ }nu=[t'эˆPftD6UZgɘ(%y4cXo9>m8 x0{^=zOR'aAF>H[gJ3NwY%NȣpO#6?-LZ`Hvf|+#:%<~ *%ٷ)2,䞱wޑ5h=$I]bDԪ:UO_~σC5GMA5̑g-` [t߫WWW7Sb]H7蛒PǮ’^ыd%0؜_óR*GW,\9>UilbiNGN~h-&EN|ЃigY~?2bQڗ'8k6ht0Na!*봿#- #qi=b:,~ @s B|V='~MdE6|zT#|_ՒE z9i=O|T|j$rAi$I 3MRFwfΜ=9Jն ZQPϜ@/$ͪX;EPatڙIU}HU?}} {}v.O}|0Rl_s=W:OG g!{Wu_ g};)2дN dC$M0O2xV,K!?jfδtHv}B)VZ/N?0a<}k T5a޾bq,O_ i gӆ+/_L;!ll0%H|*")\:od˃m"3d_5-zdwEod}|J=TNrr߬׮ÖjIX_{աwGW/﮵?Ynv;*AGuh_~^ww5^ߩ/:O'n꺾.ZN1KO>|ͣr{*yǒ T+ʹVZڱԾ^r*|s_'O،=ߙ1ָgF |ȗ47WfMQH7=Snsoc|[A;o}[VUr8>6_ח"bn-Lx! s}jo\Q,UoHTuEL}'v]/c饻˓׹W~ paJP]&j{^V*ׯ=&ѸZӄJ|\L :C^/Xy-Y%,DN+'[&O7Y5A]:+6AWi4+u&2̪(JD=URZb~um -uñA#fEEK 5~ԹٓK`4۳ji4 FM.؟3xJi >a,$Oء'3W ִ8gḊk鄿̟m 2ibZ.'i{T=sr,/.&D{baɃ!cTzR%d1/]7Mt+&uIP{͘8WC.^Ec=̆}Mωdtd ɸ`zKF0w%+QkZee ށ=MJKR |g]& gFz_!f`0nhJ[ٓη$ޕ5\= (/DEisᛵRZ(߄l ٮ8ݍqf&cY_NhqZ^M7m+eO]謆V $ `¸]Mr[\ 1_l%gWvma86C]%\#[hv'_ 5FmhK/rEƪc9N2j.:uk/rJ"w;9qK)3| Z|PFwwy-j핆EjM8p09 `0rҝ.9rjDlQ=Gy>*Yb{r@1֫Z _D icC'qN~ J.<<j(@c.i4^`Ww\חygkGn2>CP'GVr̮x%1n<@Vf)*9]H-YlA: rc_59uAL:"-/f:]/])`VJ En:I "C{pWx}}#_t ^H*:_ߵ_³ҷ,3ܵ#78ow<=FI1*> nM|xKqxWa0)*Y L* /a^0VIXs0`V.D|!mW/K,=%TGȺ,+wχbFC@Q"la z@J EY!j-Ț9>D侜@`g$j 4F>RSv!j,̚c簿'Ui=M.Uًp߾[`wRhʅDMgs>RA3RS7$~I͝kܫߢ=}'il827sdϩί #c'Im넎?/T4?/4zJƴDσ~aMk}QSz{m.OG#+ CI t2{\Wemϝ`Njx/  ?CpԖAD^ 13pljbocIvݎOQo{ސ#Rs2B4c{ǚ2tfc!#4<^>OS{zW/BS}XwXI?{}Nf unZa>4%{ M&{'AyAOg.L.H㠠WǚWaU|S+"+&CO"+2Wo }Q_&3'^CHB!nbER qC6y(h46S>8w^Un cg \ga"@;弿1wW-z}i(e{w\ F"xt؞}G{'oh_URqWu}U}}}N:D} |C0Lv۾:>xgX;n6/y>"?ﰑ)eĸĭaQbhS>eٸJB\uI~Tq ?ƄIhY۾5g1qp0;}ԵKz;խUוvw:Q~Q"XNџ58g> `3cIfܯ K<=n};]D- ,>΂xnz̩s:o>3yM*<^}s>Ա٩af=~qx+ HNQޔqǶ;q!8 Ю|FKyXvsVn-)hN#5Z}Oޯ60Rz)I!w{ vk;ߜ#L(u1'^(DStk&~?f㞚0M)o|^jU|`l=ON-7-3[hKcc/׸[ӓ jz,UOѯfwg)Z2G=WQ~Uz+a"kkwjJ%vRʼR\hl|u ܔ)z!y#f^lߧi /eR|Iee U]}ݚ GRTY??/昞4Imw-u1qf-^5Vu_п7A-Mvw^U_(H];vy/Z'KE} Ǯ jsפiN,bF?hOِA-h=$~zoXNi.F6 YַR@Q]H |E퍹.7h=aRbFA^։%=(BՂuH+uwLY&űZ}˜t1eX$?P$r'ݙduĕ;FJ^_5i9S!/ASl-84LE=ujPH3~*w|/gfdYP(۷.k4w<5ڒr/dPF dj6LYnfV a~EcNhb?b,t4[9Nws? hj紹?L5m(Tڸܗ~[Y:iQrkTXz?ܔ%TߝSI딮'ӂ፛@Ggk82mlTČ<|+5nыowD/:Ŷ'{L*9}x:VEW('^^VKGumT:Dn}a[x+fPx(_^ !1eu/j ׇmܙUC( ƌBW}KiIҕ.DV4SRaR0e$Wuo anXG e aXŊv~>*1B>5tR=_Ϻ6U.&'wĞ7Y0`$V>$;TP}ćڜ&s,Cv'-f]N©ǠՌ dg6`Ԓh<'W ^';ud]6O ן^^Hf|o+eŏ|^EU~F~Uٕ񻵎].W|oU5IĞ0> PrHeYׂ>2n:3f:8`BwQ@JA|dL~#m%k5^XOv_3x>#Y ƼI=!iHVdd_}r+u}շֿOkܖyW3Ra#@gOӥv;ֆH)8ݟ7k{Doس_;'  \_}ndθmJ9biJ5zK|h" Gdɟ  O` tێn e&[X0d6Ƴ|&L~6|haah׿VIZvc#V;!T!7 Op56Du\4?^tUWW7M-d׸"+إЖ^Vv7RIr/zSVmZ?Wurt$-V7UkrZSqb21mk/!BA+~:V/OZ}zQO ˕*} @Asl+|w2|DݐڹK2Sc'sHZH% Ĭ%~}I}֫=zcBuX>=tI)O!*>:Ss|ˎ4}y;.;>ls:_[4ukqlxl@Pq_eOPd5 E饧DK{ϓŭ`4%6:{~NzOWTOrW)y>29Ue Y'ਜfpO&+l?iHOMQ}nNqrn{ @g!/&#錖R}~"04U4EcrJ\я6 X⦅y |j?LAa5%`N8B_;  iye`E g33nf q(|y0Y\ݨWPa*HT䞣~[a{ɒ+ OJ|hcLmQBX8rpjuƴ3ٻ 'j5ȷ#OM &jip%^π07V؅$&c%$Kyth5.=|s((G9V^FbftZÈ' -LR_Hn (u z ~ze/Kr:YrQ^b vAOixJ/u`PMە~[o_'ӓO1|*#{Փ9=txζʖ~OE NeQRp>XcH_ñ4o6+ՊۓtW b7xU' 󕟙a2Kb<Dhp%3}-S(\$B8~J_bry<7',ϓ|/fK 8!"cwLx0O'Ȼ9G;`Lo_КYeʾ/=%ܥof1qg=//uI2R{= 37s`,:^mste6d'~"Qg}1%}=v;66'E-cUtL|8_&es񗖄S.=h^pC{~ au_9W"Lj\޾oBu',/8mLI(A0cˋ?%9?{۔ןf-!L~}m?!d`dbѾOK|~[ģ/oSY.أ)=w4  s#6P#{ؖ$*=߶ [A>Y-8.ߌB}VZxJ]mEw_gaPC]ۜ2 EWwݯ{K߫I;B'ٿ&tw/&3TWU5X,KUnM2\ UAIJu}UUUu1M]J}W_O.ֿW锩/W}__"H{13_#hyU!1;`p%L') 'w|ߢjׯ]\U觹ёʑ5fU+K\[}:?$>K>r?ä|"=㬖R3X.d9fXhA 8.у~b>c-_nEi`OB=œ~u+Ww5K׻^.Δż3Қ})Ubľ-VaPnJ$:C=7#-YЂUk([/D_Dg}gNգt'4I̯/W75Cڰf%JEXZO%/G*\ߓ-z?蠠F&%.dEM{'Gf2I5L oG$W߬U_U{2خH lAI0`~ij~n}sSBއ%,!DGpnݟќe$ CW]pggnfnV.Y)h/v`Lsk ),bEd!rMhTMz^H7:# .L46TZ &lw? {tD=KoF:Ut;5tHi:a8z/Б=Z&Ys-0{0`yJJ$L q OsF;@UqP|9'1@B""Z]87\}wڹxV_%ж i\:|˼@dvuw=u}(Zj%n*ȿ)[pPD a^~U帺[t i}CIi0fr>\%} {']i&kBB_ht.3m'_}fn1MQ+]8wMc%T4JJ AmOam`[fc}eQ)1c)6>e>_IP#+W7(i@6?޼/aØ }8T7y~-|Yg悸mBehp:ԥcú*k(&<\fv?=<![^Ɵ0AX[|_GFAI,\Tj4aagZ0ޭ/}Ћ?z.RRBPݼUDÈX/[Y+ |N)xm:5uv %[Kuq_ͣ%mVok/nW~>>z\dOHO?1Vb ĄxbL-a!}x hhpV5wߗ" .aΔ#?$Dɞ&RK"lŝ3 G[p%eij=`iC&|er{J#e"BʛKp_؀Gh{c9#(%a]ӂ9*O7f1SZ+U#?Uգ?s-&xx7ʍ :&thexme,IhXee2Ň]?ఛ@e'7/ny(JwQP5Tf˕X/ TF}W/_T&ƫn00DТdWoK,vJVM`F̀pug,@Ícxo`Wاg* At#4R? [?hsG .̿ӣY[Ga u.OsĞ> Thevf$d*Re=}%Ӱ?td1=KLwL5z|o?80K6'02ʗG5R德±ݩ۬A8oӾ''o^ȇh#fxi ҭ$̕N>E#$+'`n\_0|p&wDnQqn,6 8e+OíuWؑ2S?ȁy-!fP/'޸w&^sH Hx0f.' +E0b<&0=ۆpWAɆDWo/SC:as¤=͞iMW˦N:11sG?_R-kZsNG0>Og%$ 4_~`Oֿ݂-e˱OH&|jޫחWU쯲 -(-y J|i%'d;^S^fV2ޓUdyȿ $_wAٔOO#XZo=_c;{CYo/*j^%ujOzN" tia)iFޯ=V סuʚ"=T^w5'}z׵Mh=9;.|O:4]k}_ 2AIjwtOMWu+|ʿի=Z뮥i9=5z'}]߮2ʹ*wSJ_=UaaUg$$^6 a\mgst8r[i[#ZW-xeU._j}?N]\Ēի}twaUw&lvNyh#kzꖈõiS Bg=jkZ*_}}omY 8Iմ{}ʿZ[ծU5j$&>͖,p8]}rw? 蝒\TG_umς|㕍Y'ѥdssII~x<%Ҹ.^4vm'0^:ی# L u!VZh6K>cvanخr^HY) 7/sN>67D)*>zZ1N.C nϯ¤N0E cN[ SL$%2CyJ/&}ey:5noXa٭#WsEt~hg_5V~}+p6Ǖa}5I:ZAW83P}"lhX |a"8h+Z|o`x fD؀]M 'RP`of dPPOGeݎAFw~,ܞ &诺 >0|ENO? zmHV_Fz`xv4XW#*)L.+Qh?PR$AZ_rhu!3Y*6bAV*Ki/}>+ yYBv`} `x  ' $Q*@')^z`iG`& ?7}@>? "zowP&R#zܨ$ORA ;:_}q\:9-w܍ԓZ呟%5JYR-YS_6ׯ-s.ޑ+ bv{6xme%D'-Q7~|W( `ѾL#_r EB7_B-.^+\h;_'ּ?wj&XĆ ^Lik9q CQ'>V.\|Z\^W^^TH.;,X3 2P腹TrSyf䡼zнphdOrz#򷰩BuU[,rQj=Reѧ G2A">6(}Y dRӰOB[) Q _C Q5|pG{ ?wz4 n_xW\1$YwL4FiNs7.n+85l@50@o知FAT/pfaX'ue_ }/9$}U0Yz__'cmV(8s+fQװTDu3]Mvv &S_ۘ>Ob+6 !KN 4ߡ/Ogܸ3 Ljv&5<5Z exmc#dn{{0%Ӻ2 ٩ {to|IVmE+u~[kyg?!c'-mUBhC<=~}Z廿ВR_Ȋ?D2fqH[Y=qc5٩Ȥ** `L `*@|~j3v]- Y%Uj/2B>Ooja^Wny$Z뎬;쾪/+ }|ڛgā,Lj4t8A{7ip8B] ֿWw^~u&*8a:shm=.3?),Tꪸr'^m0l=1lẝCѤ<3jP|?4jh{VPZn5~qJNyl֋5W2ZD,, BX( , Bp\"Wۯkup.T''Cqw+U|._9d=k{J] t6l9T~?<Y rzPB9 f}$u}١kP` *-,OCMeU<ި@Yˆ}ٍ7y' f~Oۚ䇆|noυ|y=SjkӞIu 5䉚k*<, AP* p"UW\6nSQՎCǁ׹(?@Ğۻ󾻀{ifB*%5y@? rMþj9i߀SWK.U˽Z޴u O/V UYB{u<yJd3} {pʼK;\"q_z}Xd+OֿZkZZzZ}{<=ovD KksUϓ(U e__Uz'/L=I}ֿ2nUR=w/MV)jBe_ʽ8gp^Q~Q{⤵.V;֪֮E)_M"#rq=7utU=z0pHw/FtR^:ζ1\gr½Xע iw.yw.EjIWJgKYʔtl{(2 &w3~9עq@bQbouqR~*`HS>OZaH Aܛ-#MaSAK-u|S~N􃖐29.QP45 Vz\~U JA7> FNJ:^C602SHקaXު *O {XqO+gځxц|g&7wc=?:aWշ%JݫeטC߯jcbh\]=_N?'mИ| w4'.h=QߟNcOZNUÌ? z"3oln{ ;3^ :t(f%; xx8G''vOW;֮W†[r}*f3רp|ג΢=?ئ_={Vjܦ+㤾A F ږE{^*ׯפڰO>{[O8alK?3QܐdpH\(_:ԏ#ꑄy$aah\ aFet:&1 /pk⹂/C@ >+u^mԺu{lVZPÃ֮48g@6C?^}w|ͯ}ioL/Qg~00W}G^ BOf +-p.h`:%q5OTQr>?K/Ϥ(W0ε/d=}q'?:2_=]Ȼ +Z;I.b#cՍMFg w Nr0ܭJ\5|nȄf+\!z^N[%^W /K'v ˗$@}((w?:<+;D m܂^_}I"Xf\8Lۖ,]nD V(u|_`}ݲ޺N}IWU o3h}3|{jO=wWRݷ'įr~EPeI@Y~f$rGޕߕ|zE_=+w/.IkV=vڶxb/Vז.UjBY(зTw9o4~ T_!=Ue$AJoֻ^ZUU߯j^+Й.oW=Ѭ.ڎ ѧVkk\vXիtGd'ܝj>W\7x#}7I\U{۵s noV^c{dO1z%ʭ[u˵'ڿZ/w) n^Z'?erH#֪{߆j1z{.ln]XG{Φ)E88: _~5hkjrzoW/ˣvDQ}O]?qr\Kv0Fjk̑6<2x I+@W(u2aaɢA$c+;B7%cP2eSZv][_>.``y?ǹ!ʛI'?Z6$ZfZ_j WPK+1bn6=6fow=KsX#3-&9po N8;l:N˟؝ b_{Aw{80c/,IBF^N뗜] KACzzOq]>^[`w,6 c$(Kh8iH*bTy=jLO`| .(n5E㝅@ڑ7N})4,>7.vNLjNq!vǘ! b\%׼M凮۠(cKExɼR(` H5UEFItxn1^vC/zd,鷰y_sj~TY}}PׯCWףkrVW>b1؋-2Bxh~[. Gz;A$mB/&'?7'Z1'_˘ WˑbqT IނwEώ 3|:}B]$xoYFJBOMH/^vAfCYԖM͞Ѣ'w$M6i.@wJV7p.!QEa{0?%O'ʨ4Aە8!u2ﰌpD803G~B"Mg$ !a2cQBn̘F<=Re>L~ZKFFe-{`ys0ڞo$8?|b]q}=AS푀]gpOIh/v535y_}-Ϛ7R7^O`{Sv;6dkU\Ծrk)G/v`3ѿy{a]O#k|ס-YkK]=8*Jc"ѿa1˘/}Ko{3L~ē S6(ϫ=~;wtK1} V*=RE}%Z>Osu^_nɜ.\OwuAlmj`*AK}ס-~^~^_g,w/ׯzV//՗Q5|9=!h몵ʽe-2_~WCKҤ«rB3Hw{,l{}:[W}=7R}eε^s]U]z^!FZ=_Jj75k_j"ǗZu+Wbת_vK= Ar dRduy=bb^ez^?䘙6d=g4 O$BF[1 ֠'5,LW"-]Rz߫VThs͸2|ot4SV 4ZxF=ж7=8efHlժ6Em$uar2/kzY) =FxhDX/'>?cqPaPq(3b3z3386wEoMl2V ԟkṕ}68$s,|Hk4&Μh+,S:$?aNlCR;>ƅ#/P.U掗Rh 1‹pm(1%CNj/>\Aϗˤ(hr]K!{uZ)Eh&0-ܞUjфLOj$`>̰G }ɨrs_iR_|f'=[C-IGr<}"~~9B3s]c,w-MDd2!Ҫ{[쎺vffO/Iu{{} P``dЁҧi =07^zU~Zo_ڏ*|Cn=w? 9)inmtd9qzSwnw,zfلCJٷzո? tP/i-WRKwvZOg]ua\%!}"q| i1W`jr{R_vTs"<ԩQW! ޻AKu]ww-~%krȵ x6_~_R$IYK-|ק(6UHvo~ţ}qε'4ޭwZd&SK\&s?&UsU(!7U:h Lo(^'7j nyƪN^Q_J:YQ=jOWO6O]jhힾ 9lܛQ5D鐂7ϕO)/4yoʡN{)<'ghB\z7WYN7m1>!g|> =-fF-?~0y(4ľ%<_Yy259r#R[pUu;i1x{@{CvdqKeeyi/k(Gk^ڲ­ +:Pd``E jYK[B;{1r&}V'6\WaWw(`1"5ϙ_D]sͯOU^Ԧ1n^Ǟn`)a3YH+?13'vt+{vLqP87Mu/vd wfZJ\::W ^:a q^J&ܛC @- 9s-( #cb"ehaE!xmO~inKo~3eCnO}~W-f8OQθy,BH :> t4V twկE "r8 's TKy}=?~jࢻz%LV K82~]lt8`[Pyv(EߴS=.^^dd|JHHIPhG1ya"h'wQ/Ҫ  PJjǹ9x?$b= ྺ}{K𨧻Ƅή0D<].ON^4%I PId *Nwr44y+ϔ# z6^J[>HDWyG bx/r6B68蚎l.$u1\\i=..zw@s-1 Tx=?DȣL|ٺWٹ+NOs-%6;ǐ0;{b[a8ֳ&c'̴NATKv>˻"$ۅ:֠pĿt}d^M*'kݡYxKa>Nyʾch/. rן-Z}<E]]Ի^;҇kEz'}EL#hsܑ+OIMmyi&%''kYuy\N%ݯfh +*%~Fe`q -csˡH[J=I-b`rYgl} %ol880NꙬ]T\mjp f1cC-.0W`8*, aX(&`P, `\*TeDb.J֖8֛G~$f\9̺kВuT*n5/M:򛌿_}.ؼ<#:5[uO UQ_X$4ف(ϷI%PyF}KzP: SRMK4-#gVXONIy  O[΢kgv1y|{<^|+ W&ivl4T= $TH B0PL $zox.R^䨥R5uzvziC4r=hC)LoIQgl~I8ryL/&Xl8@ gWt*>:9\C *%홎( 5N {ȼAx w0wO}.iT@- P!GQl%!~p{ .AL yw-_]տ\VՏՋHիvZW+=W(62]pOr_h~W/lʩ ['-#^?^7^gEe}ڻpߺЙ2 .kbʥ_hW<^E7iwܷ}/u_]EH\g'tc-+xJy~'۫u3sIg"V4' {yV+W{Ekٍ0/OWn4\;7.OyIwhUuD~W~PUB޳P]#b 0Xd+$W9<~G$KײhVUd=߳e %"}3{wQ+dSw_ L` ϔo}-~/^lM#%wegU >|l4_[߾Ї5/_N'Գ^]UV!f}][3Y=)}}"@[֮W1sчy=] |EcV^izG_tjwƯM IvR0J.|5z[D\Q+VA?>7} "QvQ G&0QG>΅w7~t%~B'xjuOO]k]_bK#:g}Op;cQ}vc¬_Uzm:$c뾀nuM 8N|eԗ>pkww~IQ0^#ث&|4xfyUʖ:>(i[Q9r}r;O ]>97!9qXb& Vs\Jq~Q&7$1Yz,]whlbuTKY+;׷{; e>Vl|R}qva;NQ/߭woSɬ!7_ tId l%c'eo}@0M&Fdӗ_?>&|N>nWW^Dr2&ww*'w^ R帲w.ؽW׺=q^ʮK>L%N~O'AL*}*߯~W=]W/WR#O䔗c~O\T"W֦'%g@R\#'8g9˚;^v>۫>U1ZC]1e%CaZo^z⿜s{'3=| g]ZIVO+Zko*-jUy7zrt\= \ܫZ\zbXՊbL iI.Ӊ%j''mSFt|;R3l;׾4E穉oZzU᱗O{!Oi鮪ӀnQ{norZr8l3˹9P_U5̗WF n%=On_GDB m>=Nhn_@d}z=뇺Yhx@C3$nil@{ab^uQ(~~:Wr>Y3w-=~tz=s_g2#AaD і]V9W /:}wgόs(e)alw ՠ(Fesbc^Qc.{Uerֽώƻ=csw#+~d3n_CDfj잻][f.+ .*BR ۰CbtCνpa Av|λ|cc 1:PI1 4/͵&|MF &~%O/ׯՒY&%1 8a[~Ǻfx 0VRTxQ}a?n~8+D?K}^Ҙ6"[H^Yklʿz_hmP2CYY>fyx:ʽ tou !꽯VzvWpԟMC>B#)Jc|C1 \ ^·@] :M%IW1K-^[ޭRvlìXaT u=a?!d%eo܄6/G^OyZ]kW+v3Wq5]A'K1,,ˢmDs'G+ u;rX$ɗ)|v7[׮eE] B.UW:.mr={Fr-AMjuKxGZ_wss^HtwZj!{rl^0QvuUœ )Ox@aI?TХsj_<ɗѥ^sףN.o[xjw~ܺ]KwwcVX0Եwk71ҩK.{wh|Rm|]]]dޫW'=_+O婯Xk-t/[o^rhW_tJW{ߣ?:]*%z+te!^9BM{ο7߿w&PkW*/#8dP̻fWwd}7^;n'rZֻ'~aH [8e XN?Oe^,u[u<)«[׿tN^Lkv ΟVhICDLIWwf%:O ½r>|&u˜3 #t<+#Zwį_(% ;W  Q~,D^-dp#RwХk!/t(xp{NqlN^EokFz LfJ39xԽ}j63N-pKb>bv_WGRN"%Bzzb{^M}62Wݏ16OW-z2y'&UhnR_`c7`1w`2)Cm'}Uコ~Gy= %WX:s;㤳6[s@7:<׳4&Qtٿv?B/U:w|b83iYy.\}]Q_X &Zr -?ukO ^H$L)2Ilɯ!s /R Nr*0X[55JL*]|cKHygR{t;` phVpNUҦqQ-Lث.NMT~"`^C=K {yyRX $\qO-=YJE2 : )jM4TYtRx<) NCz0r9E.9ҪLe#"v_#-f&3b'' "#g&UW%e5WUdLy.bINJfQg11%|ivٛ =4*j'0Q:AYUwF_.<(*,]jmЕ56WU *Ξ_x}hm0Jcb]NSr]{+;ҭvԿmANf jTCgf(𵒌W"s~SGf"NmnېX-bٶ5Fc6k`P.^YcW?™17r: p*}FYj,(2 @,4 @X( $M\v=Mʵ5F̑=G<{ei뛌kZGȽR*NDzs~׎n=?|㦯ȳou>0|rYb\-nk_S>&;v4K}#X+M 6Sہ^ 8k Nc˓1GAHMhd,(E pXP B@P PT"Fq9+%j%Tʝoʼ+ڶnwLO7Be|ʿkg֞^%PT=&92;gx-TqfXkAȭN5S;LcB/^.QQ"8*uǝClU~?[=w( 7~ \vM޴_ANuh]~Ik]KM]W{Zkk-qjR}gky=X5j]֪ oҬ+עڱε]w5 ,]Wd gOܿ-K@ҰܦJC wƽ>,:V\=z_YsUڹ%]!ciz}M|)xTwvY}\y.]K~Aq5uk(j[dՆ7uk;s^1 7ut'B<%&Wu\ZY`O%|9$t֙'ʢK;Kd_ A؏G/?\߯vM*6eaơ 3/ wwӪ^;,e#V "k}}w-$M=>sVMoR ' b2Ѳ>E!F8!^loJy)~1y=FY~)A'۩-=Xmp7iXb%I?$m|׻'wr\=_bxy$@Κ_KE{>>+8Z!핔e9b @8ؒӖ%{if-Jvկv/SRP(˸ 7oÒCw垳a jV0D\+ߦپw 7n)/\}+OV .,^"L (JOm:WHwswv~K7i+Cߋ#0lK.ϕ41\^If%lr[ -Q.'(jm&=9/rHtNwQHy;rG8x'/{ j?ıO"~Ebvzla˛}k-+8*b(bOˏ׫5i{wdߒ6uVJ#ANwyF_B矉'zYڱAL$,_O@FM"ݔH9ݯIj1I9j֮Zq8of|7r/*PXKTWwC^>oK/_~E./W螈0݊'WuWW'L]Xq\PF/wtFHmB{^׫%fDpm:]19-}~܂Sn@UJqAbO}x{,Г&+FO4L .ry_p@pZKT1>?`EzxdH ~/E=F Cw L6t> bJ{W mfւF :{ۈ@qB@MyHsBoPbsʧhK~T ub5/RK2XhCDL% ^hU^ 6{iƒ9L8|, /kҖ&{jb1xx!;H}Seש)Zz\up fIy{tGօhb4?2$\` }os 6J:31, >ekäX9WzrO*%y=X <70D6mMF`k=Mڂ _؀Tr7Z"-R81.w-*ѻ' О'&vF:Y}TuZcB; O|U߽zY﹯VkU,*=]b23#;cw)UT}@ (^}oWmV9ڇ^л'dvs [O_FgX HqoG>zI>Bcy{ϨBDЎ.z>?="$HRz+Oaխ'()Omn̄BuX Ix]h~}k%9#"j7ȑbrn3WUxuF,WJƿ5sA3O[˅'qC;m{mwp>_^bz~(E2sDKڹyT]j4j߿b~AOut?~,_kz~XX׿W\[s^e^s~ݯK@o^;.T6Z#qOH3SKC_S}~r]VI8gFh -<ĎAl]mq%"+%~Z_^NEτ 9W`R?ܨ^={ByɧTFC>ܷD4D*-b& |PLq{:;w+ΫM?q-Cv[CVL[깹"Z F^O|x@VI')Be,T)hRȮ].1d-pڴNU\K,jq=M\ͲvũvԗN66B^XjԵp.a+]k }Ncaa.Pvи/Z-8[%" ^f?Bz~Wi/[c"clqkf͈⳨ؓLG>z]_ Zּ| :%QJ)7,= %gg a[jՎ4@> -U'>6{=yHw+K#/M.m&Qzҝ %g _˃&PfVRA %ğqQBR]Hލ1'ֳSZ@U;cb|jIy|禮'Q=0b廠o .s¥.}imAZ$ ~R?'s}բ{[B3$}r}.\7 (eJzȡYqaBZl?&QFqx3'oNH=y&vJv,$h`\K`My ؝x1ھq)G._~OSֺU5&9#x z)k3|K}=iav_U~Wx]-A cLuhN_ț׽ժD^^"x~M7KK;^Kjxerx^W:8^"+:KbpН~ܐ_'d]+{Z-v sg6Eʥ#/Ew姓 .&8/P7 kyq_Wn_Ƽ:\p&^'zt ˝ԅ_}NePG=,DƆơ[Id_scE3E'4Lϰlטq%ޅ|d=G)cՊkkD,q?Σ4|8I}CV_^\z73F޽W_uu.=;YF]y?JY~؇}Ί)W3TAUdg;_SRϟE`K 3"}k ]/DÎ{};QS:Ji7)7oc&3R2!5קX^ZJ5Φ_fr>O`S7_n$.!|}ߓ6L:pSzc$ n F3Y|Ǜֿ7 CfXƟzA 'qsޜآ.UL셕Tvr 'AL~wT봜XƇP}|u0ϫ/㷺t9 0)B]3s1S5<Og6 Dq7yX rjp_{wIG֧(OE_S}?{T1Fȭj^{Wޢ`n[HzM/0l-\%(( A(Xp BX(&#0z=w܉Z3T&_u?oZCor3sszq ꒱s2A?<;DO/oOhZ҇@z]_)<͌Dg}' F@]ڂWޗ$OB|t""·òe vl V_ވ1B.H= j `X( b X(& 0DU{Z)|KX˾p|>x;,-'/}y8uW|FZv eIx08ޮxzu }ܜd}T ĂniqХ$چdY.l HDY>tB)u`zA" V.w|JH}V$eN ** a X(& APf3D%˺1sQ'Cp;|_[ jggجt vM5]W喇-IMdj5}sU_(,b,V" 2hB2-KJ H1sTq=y%9%-(.RX*(R `X02AQ T(LgUM T 9J-c}F??|n\˯ tkYN;OxvNBtK6Cx^o Sh$)n""q=;,ݫ[=KwmAEv J%*  x|_1meJWԸĨ8((2 p`( BAP J'oY[O~kznu9s4Rt6񎃸'ge\k#_ܴoŒDZ*~G 7;o +tb5x3ވC˻˟utwt}$S˛tҬu|&9v;pb" !-?AP w}Z\b?U]Vk~j؞#zN}8q> Ė7uM,%_Ѣn>rܧK!e{bV?^[;.M}X\V+]KTtfzOW'Ц?K|  mzbVb5z^.߬gWBVzWR]zX"cJjѺ&bV5}ܢg~|!z;_0׊f#Mͽh^d^]5ں^@ {aK,#iQ2B D_{Ӭ6 ?FK'z_Jٰy7M~.r{4^N_ !=-˙wX/_rzRX!#_BגT篽Sw&_,@YY^ /~ľrӷ|smbkUQ>-cMWeqMwMM{.+xJPI{޼~+/yXazFS Jq]zzkK]MAP*r'=/XbwݫuꦛֺɫV]gʳzU劽v/U딗$.Aޭ)a5a'~"6HoZW`y7caZ'c}jKCzjЖWbj7ЮbaPWjo^zخ{ֿV;*cEvZI}jZY{[~^^#UժA 9/D~9eWbD$L}1KZܷw7U޽]_hTY= 2 &!~w7-#iՉl+fh^jj#^x,& R =zxNF\LzszLNk1]D~hDB,D-_Cc>ᄋ1uf%vS#c ^# 47$:ao* t_f˅iU4FO[ܣ4;{ׇ^B@}y/%ӧ'`{MlS2}os-FkAO. "I}׮MgE~cqd{"Ʌc"]wUu.:]o[ =AwV~1s[],U0_{ÊejRf_3ƙ;JF2mQ1{c(]/*Z/޾+WMBwFo a c[i[yW{֏GքƲ+OyF/wz+xtYVO{k#yuˤW$U Njy,3{z)Z>]u[WY^1$kWW]kNɁ4JyO!jϤߓ'x/M}~XDJSݫ[);|"K/@AQJ}HK}2ъ|#\_]7O>_ڦZW 7'ۛŗU!IT}~jb߉d>hX\竲x~Iy{ظhL]SHzDV<;]'ߪ RD*XXM=ӂ>Oi(>$7AD܉( - K*uw/`[掾 KJ}W`굦?H#ֽNhN( Ĝ'%+;;@<^|n޾ouߢvu6h}L겱Lx\_i= ibC>>F)͟B 4DU]!SKև|O>a._ŢO_WC\Y`R?ztK~E}ݡEb\?'%ֺ*A%G4X7y}?l \'b-lҗKs9O|UҨ_~BI_^O\-I:.#el܊/=HDZM-YL-]=8io[߻UW'L{T?]]oLzu2^F_1q bɡ^_ߐ'z:߫"ܟN{8`7ݮ_3urrgm{qfEK^,5UXO;tk᯿7ʹw}Wwη6)E=Z8g~WX_VM^z5r"$BQ0`* A)*QT"w2s~3n7ֲnfw}_Y۵{n, =OtoT?_^e26.'+&z\N%ϩс"xwK\7PZ(/0dm!z _Nz ~5`a4.OQF0p*`X0)Q(3=:RZ%C/I:_>ߨNEUaOD!7}MWdFۇd65?dq~}4MHuV:ԧSiߓ~SJo9p^^-?zp%y*2R3@!0 ϲ(TdÀ`(& Q!T"wysxHMNTMD{=UKs5/kqyFWwW+¤qa m#iL $ Pg7q.l]pQGn.='7,yUA@ aRDkqq-H(,Ԋvh;Nc uutM)=R2LiXL:V߰+ZhvvՊU֏ {.%nX3r <)2DK.rTatS*%ƘDS75uz\p ݼy Vu٘s 1G} 3 3mhR[VOj%*~}<</>pN&Ԕ( B`( `X( PT"b\{VdT'HN7ßs֎QxLthC_<; 8nȐz9o]P0]il~1LMpSHF?mn?/Twj!@_Nu5hl=wm(Zn$U"7#" }>!f$߫5]iq(l?d#.UtH gARHNW]~vVՓzr?W&WڽK7.׺Ux\(,r8?X7VO_ϕ\}\ߐ`!>81sr-w|tlUwLX,5SqIy=Y6kXs~\*zNy6BKso"v{h`_:K\E씂o'kߖD^N. 9"Kބ18O &[]]Ur\Yy~}_v?'kfrOd^n~e|.'Jw=@7|]+5ߦptW~=W]=,o'ܕKO8'1g*2ZS2+5+I5z e%hzOKw^㧟&!cm_˺B"^M=ջI$ש/Gu;"Q IIY]e5.wyX׸.k'w$E⺻F}̹|E~h,NPBI*Լ–an7J20w]d‰:3UEt1oSjI-2 >?Ib&&"u|o7x:-]c}tR%K &+Lb2 ެoW%cA`&pէ?O^IfGzߞ$B쬌 do1=HQB`[FT*}1H^t 5} }A/njW74Xtw moovlmvhd_@iodsO trak\tkhdP@0@mdia mdhd_PU!hdlrvide]minfvmhd$dinfdref url stblstsdavc10@HHJVT/AVC Coding3avcCBgB!SM@@@Pbh colrnclcstts stszV' 7Es&{JkLz.&z , | R  tHa c 1 B 2 {   kt 6   t ( ` m > y $ e {IY  k@0li5=hM} xqs= Y 6.f1Cku(stsc*stco*sdȥ__AQ~̦iLc~Cהl;-Y{+gstsssdtpDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD~trak\tkhd@mdia mdhd!hdlrsounminfsmhd$dinfdref url stblgstsdWmp4a3esds"@eDkstts(stsz  m(stsc&stco&m!§ҎߎTJ~(š5\jbmXM!9g]xjg~l S\tGudtanameStereooudtagmeta!hdlrmdir:ilst2too*dataHandBrake 0.9.4 2009112300freemessaging-app-0.1+16.04.20160323/tests/qml/data/sample.ogg0000644000015600001650000021000012674565025023276 0ustar pbuserpbgroup00000000000000OggS%`$ vorbisDOggS%ڦ?vorbis/Xiph.Org libVorbis I 20140122 (Turpakäräjiin)vorbis%BCV@$s*FsBPBkBL2L[%s!B[(АU@AxA!%=X'=!9xiA!B!B!E9h'A08 8E9X'A B9!$5HP9,(05(0ԃ BI5gAxiA!$AHAFAX9A*9 4d((  @Qqɑɱ  YHHH$Y%Y%Y扪,˲,˲,2 HPQ Eq Yd8Xh爎4CSR,1\wD3$ R1s9R9sBT1ƜsB!1sB!RJƜsB!RsB!J)sB!B)B!J(B!BB!RB(!R!B)%R !RBRJ)BRJ)J %R))J!RJJ)TJ J)%RJ!J)8A'Ua BCVdR)-E"KFsPZr RͩR $1T2B BuL)-BrKsA3stG DfDBpxP S@bB.TX\]\@.!!A,pox N)*u \adhlptx||$%@DD4s !"#$ OggS@4%AVx%EB>-6634681DHIA. ?1%1.$"$M?8Ntx8 /ov[svrsW=#S{)V|ET !J#!'"\~״*;yW%)?=%iR#1z-ƥ(M o˶=dJXU\]3'%|g]Zy%Bg55fS7l jն%7\o`AwըidC%)NUҩ؍WFqO=ΙaYNL' P4YÓ/P 4(5KUTpWrw Vk:şXUk=DݩX{]Bvz C;/M,;?D?4I(ژĘ"c{h IdAPD{A6 g'cŘ6~Ͳl"B1 &>@#?RWd=F_?dh 9dg DsFax1(PnԪBuv1Un.^#I>:$uzU[f08Џ_K>[Ǫq,瑱krrEM$@< So@PvcoOTi[}<!vz )DU ' (QVM%XS;BXj+m3 F),Gص:ˎɈNnI^i= @SV&0*^]+m(@vor,Wׯ_ ϱڶگ+i[.v^ǦnV48/l +G$כ3T+%JGUI?Y=돽'X*[?{OhҶl{WV!_~>fS<^iRʫi[,EqŏڠK1{}*Cɷ.JSzQo/^TS5%Tku,,xgZ̉(q@ 9h%0^LPd2 :3* IUU D؟-I 3d4,c.GSM;Fxvϫ$X٣۴N۹Z_fZ#2J˴5/f8Jw23_b:=ϬzjLC'J9 ҃*I]8O)м( 錛=rVTl ` 0˒dTJM?-xUTý*ަ*dρ&^0zpZOfS ~ baAh@~ܱM]ז=r7@I1@9\!;tRs媪WC;v^O Yw&׹ I 'IBYX95%($6~Qx`"%3]WYUh/0ZUڵ5I5L3X$K>&qI7M!zvewHmGR"K\/YWyׯH>IIy+]⼸QB ̡f@p ئ^ݩ&F$avsw?=>pt sz񦪪V<9&9]1tr^C}=t ypnb-җY.ɡ7goyRI(è,F(15u#Yyu眩Uɨv%5Y905y'vewly\Xwu=g 4}tkXdR?|Iw T0D3gG~x2-gZĺjp#Czaȅuf1-˵@qEӴkj~IH0)ȘNnIsD!!WU[dMZ2N|14ajyD!K$Z}[l]JEc2]̲PkFJֆZr?d3pf_n=:LUHj\ujTRI&r[Ǥ @箢UԶH,S,Ø)Ԫi}x5kϺq]Kœ>9h6ڇ5D̬g'YɎ5ȕr5b2!!K0r(`alױ je;V2~r]H!a%3R0c`E0V72_8]-StS`LOhW[g8{^`,nsYj8LFfdhPUw MFnT#j[^~kS~>VZT=ߠ^ *wA:QfR5sOգ67Hpںz=ImTy2=gT*b&1=\:[q!bW9;~8deHdx<ݣ|jP]ӑ1)}xWféӕz;&YzMs ICw͐zI~+ɻ.|cr@gjF0Ƃ8[dpRR jldxd_Bwx7.D^~EtFQ:1݅Xat>٠Htӭ &gPNvy&z\/9xDN~#.`4V ~Yf6KLwW.dO:3RPUn.W|僵㭋{kTo5.6@Yȳ+vB$YE12ɢ溏I nwuYIqoʝ TzioS:r_ S>yIV'_3T :reKÙŢ7r}F'tWu E2v z$`sЉ,^.؄YQ!?׏8Lv0ߑkb`pUMt᎞VOm bsѫ2LX˞Eq8!{_j[bٕQ U?w.:dg)1@ʪqP Uw/\'9ƽ;~AELfk|`npBI2‫xY-f0hk-V N#mTBYto;Vhk?]1͑ %1d齪.ó9DOggSm%@ѻ&'#-'F5DED04%.2>P) g!NGtvjWt; q6 :Vr;o-Vqs wMܫzM~ik}[=A0p4^tgtz~s?Tj7=I})wqLV%ccxfdq+|vu.֤MW_-#sĎeOҺzcY> epTYj{tk°)a?^wZ?]/IwVnźӆaJ~snvfff̪QB5iLi7t? ܽU!?cix9wnovoŽjULdcg5Ǝ\JL9P<5PUQj.QY}ߤ6\OsFM2{I'35f)0UMLuŏ8}FXx`qyO\6 ֍`[XɸuϪ dF[O׏Ӣn}tS[~0vp:5IYyx|vkhҏ 8-PΉC lBӤ! n$(3#%4ĪЛY?bBڼ={Yro#WTǩ5+y6B GV˾ #:F2Z>:^,ZGJ!Y{'5nFbaiOf=S;q=~83,U[{9WNNoq/"znpu3X5bb z/)K?$,wa?Hw,m#ut ]CDvߏ.j[(0NC}8__\}[Ga"IJN ;7z+ KpvffϔYUBUEVJ)L-^aqsJ;ōlU}ӏD*Gr{}LMYu"8!Y ɢx~suV(C|s904]ff:q&/̛;O\ 'O)}U3?<5Tu;_ tkӿ5-4 $%eiqMOb$B'vB #+ηӊ{t$ɛ;z2.Y׍Kra֯stȍO6xAV~=힃I UUGo3|~ztדG.[';1N\vRa䑳u-xmwyϥ>\4C B] m]3E6棻1j z^'-ɺ4џq6TvGuړɮj _aS}*j"v`# %[B͉ڗdlGd zܔ1d+6V#[6ձE:=cs[KS~MOP(#/Ѳ5e II:S:`>4⎲#aTHv|am8ctcN GBE,-0|mS{ٽAQI4/,;5y9RI-@EԊ¼DL: |7lN7䁚M6|%@ff{kr,ge^>q3KΩWuz=HAq?j_ !V!B5N͔zMu#Sة-D1?w9Kyȯޞ AHuUa0srȼEYh@(DIff!ICU Uo}m{ͽZZ_z@L09&5`+֮3lXj90}i8CyTNb%F5U!k qiJ]+ih 6MCK5:/Lm*gqN߾9s܌t{Het#XsKBH`(pRJEyٿexs@7#d0~-_O,0՝0f:Z C-}o L ;#X=3Nmn>CA8K'f(?ꉣݻG=JZCo.a|_B'zJ[EQ*ZyOljis{5߶tgIM*  RQ"Nl6GYjz\\n5_.gݲ k`<* Q$h3oȨwP$*>Ż6폴pX dcҧVk$_L ÑA~F\p(#!Z=PՋ], /&ԛY@mY4opbJȎN1,e z\ETMUUU{fmtr6uUKF}3'X|j~8 _=3 Bdf!B@KQO8Tz 1tz&O43 .Z=sSd2ܦ:Ӣ,sC(Tj3!NXx'Nz², ,ـ YPYޱ—}EzeŁTn,k߲c"i U8类sl(%5Iĥ`T6Y&'+@NglPUU]}1J۩X5uckt$yZސ3zFXXj.8  LZR#%!=BT9s붧]I9:0,f !3V,إhj1UTת癜 CZ}=|ny01(U%*)1gn/!K6uh8靧ն:U-TW\.{X46Drdss9yLh+v^ξ~рI j pgvNXUPc]6>|0zɐңǜY߳di3D\8¹13]TKT"q0j~j>u]==pȢrrNǘ{}sf'?繿+㪤 Oml|+12ZT+aX;5>R9/W29Foәcry.~1'3RߨVZIT'w8ɔ<95`!T~{ȅG~9,A3)pwvӳD=bCO` IwDzlӅ!gW_xkQ!ZY^s=[*h$s1k7]tE.f!GfʼEyNͩg{5JfE乙}^1gw}T!]P:XF}^L0趯vWm)&_IUDvYxVmPWC:LV@YG;UT@|zx?`6HFzU#j ;es =R &R_kTZE/CM֐)[rؤHUьL $F^tM Hg03jPUlүsfK8A hh݋+Vg%z{ˊz[kn/-ceU<2/gUJgq17]psMdnTݱ:kWP9 ]{ty!l1IA 2בum4hN+a~kek#/+JZ-dj~6}8r|y+dO4"ldak1Pc_Ww =cx\%{ۮv҆ki<:sJҢ^MLM h6]=3ДK˸oy+Pu"ZakǷ}=Gzׯ[;b^6rٵz/uY*cW)")y™=A~PY.՟Hd_v.aܓ\kZU07dKgU0OI҇L) `[/qۀ%N|0֋pOM\o օdKdcFB+ݸ Tv&DOGŗdlm!;ױ3Vv\:.] 2ԓ*n}7x t%(C]hggff- ]ܺx9)6KWU9r¹\{c[j=gW<0y.@=ЊATve:klTԀYȨg.0Iu(0;QTf媪sM菇nIr`nS+9\'YrYgO5fEXoIg(6$Lήxl/1ϮJ^(f"&}$f H]9łMZx'b:g [S y= 2$ŋ WkcǛ䪍"G "'#1BDP_gD۸hCiJN8{z6nh C 0COJ2`׸ޘ=s*yu}pΌœdhp<%2a4JMj:=Ø6Q7M;Exj *n'$Qb(7GEzd J2 a]W%촒93̪7̱iTwTܓXd 2Y畈ۯ%ワ&s҉.'/Օ_?ݱ៎&Yڻ>raU50 p:nUO\5hرmrbLށ u :h{O`DtO6$ǍzK{ى^!iզVxsnսJ^^S/G{zgv5~Js2߶jF6xpI(fpN\NyX.m[v_=yjXc!_oTaf T'I(Q%8 !myj(z j)~ƺ9F r--BťԐv |^+^ׇ9'HA!v|Ӟ]飾0:.uј 0zQf*9 9լ  Unۊ$OW:1ǹyeؗ5_JZ詌&fm"^ dyd_͔ǸHe03#3N]kNfN9{ZSޓp֪e;}UFiF_]uFǑ6c,-,Dh }_ݩ_W$]\>:ߊI`HcqյD|'=btcAot ("ԛ8ٙ9UyH7 A} _obN THPMjiv%>,A>':UmG4ؙͲV[HqY+#)g&yNלmy>gdAӏ ~6/:{=q;]R̩qMj!>U5Ѽ%e i۸[q5XْlWضVa@zIadU}~eT=ZXEWdqjwԪ bvuXkrnǴǸDHt Cǰnz^c5>+f{T2rUU]$54Vܚ{+CJ+UMam d]˒y[ړmo_\jș 5r$O~~8"xuƞ8퇱hfWtD@3ۦ]pS;U^VtweIq*lL^ ܣ=0:8Eŷ I`-$#e[ÎF;+Y}z`GFlt?UI1yHa:6nI蝎Ө=fmyQO5۾.n>&`TKAY Qń+zݕ DkG.^+" yv Rt,Bv{Ii鬡ؐLA_:U?׽QOB㕇9mo>;~}Q$uSY'YrϾ~TShΪA1Tny=z8\&X/G|=Dwʪ/sXɑ+HwUp-UffW١~@v=3 usl$uD];^) 0.&UMw'@Y2VUUUMmS 6^lK7w|b {qWx[џׇK\a8j\Y dF +RՌM>ղ:sa~ɛꪳIMͩqX ylL81E';7linݕ<c,SN3y譚MO{5]nPb۟ gJ5##WsulvwZeTúqC#MԛQ~3 *&ٙ%(}D06ri?] c!}ˮya-iusuy_ܚE@+RNJzE@ hxNOWUKy|${ g%,eEqrD[tS}]4yS/W^N#Yh։ [-#=غt^>6 `t\Nff&UUUUUŶeꭚn+Rؚc„uYv޾p@r-F^0'(=ջN@ qƯ6@A @ 5/4LΎFf1BKz !M,4c&zf3P[Cw RzQukE_܄IN2YۯNbWc[%mwݏV.paae,=OuWvpȍwʗڷM"߼fl;e"Z_+~0+N&ѓhrcj#RӚqِ9v 1ȭR}VRkYsiѥF>ٗG벞 5eS??Bɘ_Ϋ:;wFdVdk3ErSs,.Gـe.c !Pd`_W:w2X1cUEuϙ޵ ?ۼpl @ \&Uqw7b{,*ٝ\v~B p3FF\ q ]{ NƮѽf͏Hn l+z©m-mڕNVq`k~3ƙ{r"ݙU5+yȫJ'=5Y ..p^o~笼gn,0Dp瞷6ϣ`8\ R/VKF\6s'"٧D8g2ީ-cm  3#*Vp徑)~_/O 0,؏}ue)W^ű_lTk>R(K${{O^iJ PigT1N:ڬt-g g!G Ҕ ,i[Jw3 q%d%3X5Iɬ]_#5}?d0b=N ixd1v5=<~9{GMd_7oy݇N=|lðW"#T%~Y!g='9U@U N62I_5I0SW4;,wjI[]xXEg{xZz^/}&[Q {2Pn"rxUVprsiZq?dj:EWggO_v㓴t-~ M<&i.Zp^O/%E/Wۑ$^ln@ U]H0^0=>ttZ©rn\GlDxx"Hf*]gә;9a9^yyviȽsL5:ۙuȈ$g 0~ m5-̡S/\J kYT^ޗe͗kҾݱg؄cջb*0Axxm*$ڎoh.ë`;Ll-4U} תӣB%C UCU52E%kO~[1%/OiHU/%IM4GjJYb:%[~e6Ւsj v8!Yo:Z~ ɟI1Ϝy><| UuN&>lsOTͳ[ŜZNE #l#7IQm%-mb\m1ӎbYX';OGk%z>{Zp_,Va?¹ik+lן: B)C˚͑(͛)!T8n3$JQou #Χe*fI4;Z[fц/vv&{=G14p(fj~}]ӵ?zʈsF;/SQV $snZȕ{ZɜSe%]l~9%YYL6ӏuo6^󈷟^iK[fܿJ?93U_pf1*[SJv{?!78 ۽>+ˎ13qcO_S- a߶>-L}c/V=D\ 陿Czw;H:ܽa>)e7*:Gv#x( n spt,Ptt/ UUUm) 'tFh&<#m1>---No*(]ma%GsЊ=|Qim1~D #зzWD~=NQf%7+='è5U{]7cמ;:pOٔYinz>;ߋ:E eZmK1~2F$tc/@iy?lSc܈O \EΗL1r]h 5*U.JcPÍÅŘ0Vȳ}N"dWd=X UUg8A=Co֗KS>&x[_[b|q&Y=eiL*L\N,BYduY\M ݈9bwd&zsI:VlN0og<gB,K _^Z՗߂,ƒ$t=r: Ҿ\Xh=R?62D'.O~ wQ^Uh杖+۶~iy?/+]vhF-KG0d&[l(rDPUuDǽ91~uí+Wvp>YW=8+}GNsU{Mec}nfDP՝,QOFkeg&N釸sbVO'yىݦ+ ΨfCO&7ݛ3zuC<^;o?NMu@J٩ʪN:;ʢQ njM7yeerI/{E02{7~m;`yOͶjq;/%\5 )]eZqZpNn%M-? T2"nIv^G/̻I/WK''[BP0ޔ\FI&箷ꖷ tn_Ytyм2{u={ ^ؗH=sɈvrO)ߪ_:t7Eɿe迅CcF)Y/LW_@X1ruHkNSVRoC1.s>V{Eßi8za\>Wlס~^I.ނЛ0vֈt@EٍI=d$4g?@YsݔoNN :2UUպ.A?YU7rLk+­`sHP%YNz9הk]G S5Oڵz♤+ԾsOgw?~ٳkn?Ĥgؽ\1s~ÖC[_﬚\$9*t+(Vj1/[HιUFqe{_J: :+EZ?o-9[=ԑ~載>Ćԭ-Uzq #]L0UΦ$ GD퍴*2].VJ-_PO@G+4Lj#fIZ ̆uR<Sk2蝾_n$W@rm.K=!`Ʋ~#B޻on$֞̽uFXU5HFZ$?M'8]RMPֺޯoEccz~1vn:D1 v44?ꜥazcL!L'J5uX(d.ki I k[[9?v=GVrM(-c4/< Ȉ(KsER`TmxzէN|x媭\rߙ܉eig+[9mų$ӉHd:0ŒH0$V3娉ݏhV~އvfi,a8 '}YJlXSr>; P;T Sw%ʊj!qSCC?S:;yu EIDB(Jteg[XD"[UUU ԻfӤ5h^4o,RWjz)\"Ѻx0ЇrG+YU"4\\J.'2EeYo~ʁ6kN^+<@]M4dͲRBT^VAS}YDJ嘋1PH"¾Xw2YaS\E%}1 t5pgD}@}5,tmn ĒƸAbÍ ƥZ􆬛tf`XU5{loTrP1 "AbXm*Z,MEz֬V*IԖ9G&R` I-j^OtYOy Bg΢PNPUU [MDk^cRJPg H@US~q)աhLj@Q\07Wi˺Ðr.$ 4h7(=ȪȎM< 4 _N0aG|6teZ Ntάbia)HBB! ^wRH̯~E wIzK Hb%;8P4yN ٵnl CX !; 6xHvQet mP.5xIo@DDQEHK/t{I.WULN9Qp5 Rʨ\katI%eʈi! ڢƊ~8H^n/ao< ]9ۇ>qlގ42^aSB]UT*%*tlOZ.4yBg?7 23,vTȨPWkMiӿ O#{/xP@MȤZE@~MQx =`cu*E#=Dqv2K8XILΗ9 kwxf TN;56uPVQ?VYKV:.ǖڀ\?4O/j}vYhHQs8•E/C=_ /~m՚ nM[{=ٛdaVy6J^yǠk9IʗRIsUAxek_!T>=&) `-?JWHlStE<X03Ȇr7\P,fc-u#]W$4fK,_4Jb5E(eھxpV x|{#Nƒ)px7;ZQ EaP$S`{?Vʵ"<+gm9] s\CIq8LD6 ;ue " 6V9STUc^^M`,'WF@8wx{6a:?m\%4Q3ڡGh,b̰ia0|\ڗ(Z0Uֱ$<^!b(V3 GUc䋣 S#B0<7im:MDmpu^qz^Jo5uQjv򬑂{ ɉNcTdx[!2dj)iYM Es=4s[͞V:TDS?Rtb|P']J6r43 F}2J?5j؂aKD[4n[n  u8nxha5< e{p@|{@k^ˍ~*gf\{aإdҐ .bBU qdMtJZbǚfEϵ!וRLe:bQSo\]N dڧnR5's욽*awR♠z V1łޫޒQB*>fg~{;}1~nۘ; ۗν~JգK!LFȀ%r6|:֐ \# `f$Ik0v҄9ڝ(=&DK6e?4tc^ nuILe<" / ܴI@$tEjsg*>K[-$ ,AwpURz N㭊eʎBBiXE g899] fLͲd-k8/\,FiZYJ`Z;=5i:ߦ#y8}N/o܌:;GKT);ص XBbE:/@CMj#Y4(Qm샃 A_#Qs]KpNV0v;WjN\+^%4 )n4Z[[]ު>*k⫛> w{ʧka]Ug y~ӻ- WH^$+-Uʜ^8E@HJoqJƅjeG:^=89ckrkViG̹߂9gw~ ] [lwevW-*9evG`R0nHi`=#%B65{>ʠt;0z4̡wq8nC-Xzhs۝HsyֻshL!`a}CQ%ΌCUBU'jˋsBN$]Vհu Jm]kh9XkyRM63ܧnIn9FyxSUdDX&!2Vy5q1I6wdLD*ӕk6чI$Z[\p,=WK)OM˝oFU?j{7.[-󵝆Jb3~lA鴔t=4ߍ^dfbp11`oF<4} H8zrSz龶U~~4Qͤ OMڟ3}GV@>Κ_lK, sۀd:u!фë;p9lUE,!;HSʈ,:!O'gUvecK$m b2/)t:O#0'hðG,*I:4=wh@cU0og'L$Upn]xVb1|uq_ǟ/*-$JKvO܃4?]-4SvCᅚT3ɋٵLd=YFkDafY ֊/ޕbA`,dBY-!Y]/rQy!ٞ(M<]/d#pVׇ1V#oɺ .ryvjX>x UێijFc;pʣ:qsȡy|>))'J :3)I`EXU3TUJ3>r$5xm & > jfr==3UٔYu-ڊr;zI9,|=ݚ<5$3uϿ&=N>dȈkgeu殽pzèj~AŠ'+k`q~;}$b]E{GޔèuNXXԎŪlo dvuG-ׅX-O_I9˷PsM]>(##D+t&&^w.kV N&%J, CC Up0}ڝY¶WݹtV,!VH}8>^6Jg5e{Ύ.=RL3cLdO.mxuELN\]fȃ:E;I~=ƩsI)$c`;p1I1sȆtZȰ& 'z<{k-t$`x[,:2.,]#+E׿WU? Vq-ν^$OqYvs5Ǵ><Ν6rW-~ j){ͯwz{D%m;ݏ(w=tl6O3U)wZ 9AL.p@JqJ̥=j:0vdXuƦ=4!NK[t`cI:B*'ИX3}NG@!Q 6D9H ;2okz:sރF"+^>3zsy^qT*ɤqY1>աSQ{@ypRZ]P]ɼiz?;<_Ƿ =':Q~d~Θ19ũγ~IVX0P_%BOp(Ngk].] h)^>ê&fU t$övY(́m0? <p *$K2r$MH~TKukͱ+~sL MlMT8ZYP̒T=ׯ9{/Iք=tgQ2}ejf?wOM楤jȳOgg\cbp?1@U'>WdAL[pU/t8jd[ ot@i:"D`lE`%OLXKza@:º0T!v0{eڑڴv6vEϤс:Ϝkj[N+b,\^ 2}$@0ldhBL\ Uu"+^9#yfCmE=a%ZqpԆ`B*RZ>9>-E2Ro(DaI'tL8P 7O5{1 ~{֙;~5agVg="#UGvuZ;0>]WYB{(DzYFfmds/ge_Yp'蘋1@p'uBOFè_Qd367Ky^ƒL\&;=NOj$ z]*~f&Նʧ "AU>vߛ[uMFսTkތA&l87_\u~k?C%YG(M 0~ .&^g :i fP:g)=J"{;zO$dXY\z|x|A/$'Vz{q~x-ӓU>w/x}[icWAÄʹSloS Y~ 4kh4t1(AF٘!g3䪪ji1m-RE2:^lxx|j۫qw@:;bN3dn.Pj7 &Kԝxz =(Ś'~5ߗsݣ&"N𘎪:f1:|ӕ; ?`i&qOK>z~]yb{FvF{s.}4>]{t'~lp.BR= pNffItja1~> ʼn굘! FV\;v1Z X\̥6]]]aiJ2ڧEɲ8cRRnSLf;6MM~Pޟ7 иy̫awuLFd(RuȆfUFU\+, yg"!1OۭcѸ> v򾩯ۘIuòq>|P4 u.8g 9rd5.XrnTimlfQ8(?+4$~*t'&f :T^}vvlGol{^YJ3[n-9 цO:_2ך$Suٜ $ljvt6*snn_c>so_%']KrMSoM>`ـ"$h6Ƌٙ]?+ >M{G^.}s^qP>_qEh'l7#8G;4Y$EA$r$8ғN UUUH @2r &2RR wlP*l"k{PJZ][vYlktSSs~&55_~> %Su%I&:=8nm}>~\ʩ<̹ FدC~yfnBTE^P6λ,[##ˮW%}"M )~Ϻ"4[-)g5uTN'D'toYi/N^c%8}*U9qxqT6^C @ԝ~b!" ңLYBUBUMHk4kP3Qt> QpR׀*녨"UZVլqWOQ0oܞ}oM"zq|9M3\5㚚MtQoAmZyC0JLt'8O$kn ~,M3F`$A1W٘ NU ^C5d,.Zq[ af`#OggS% ˨".!0%3%0"2)?2435444C==~:B0HDi$=HPUU=MfɆTmDÀ~Æ zzjzR e}.=nqY1>M66{v*=u{Z9fyݛsbLf!OdueE4ahWK1y)+kI#ʟx1h+Tw]dqe\xk`Zې&ljYͤ'iaJ6M+w^>!hc8=Woyس@a;~#AЀ T Z@i=H= `#ؽd贪~cL댌n"anrq688ObITeUY7"shc9 ߻c@n^g209jsHz ˎ%#=͕T)P. E#Y,-Kq`67o꫱wFR;;VNJsޝwO(Q?}.܃sGcח{J\4 `FfFm(XUٲ}2e;M=^[HS>#Y,:cؕz-s%sgo29mIZ*evVmܰpy uC)l| H&߿gއ^&Il]+IWmQ?< c+㜧/:X5X+>VO9eK}`Q­x©"E77vQ TC|痻Rg[À} Y$!>KB #1.#{fJhN{o{[pUŲnYaRz~;?>nktj{s˱oTgOj܏Kfty<30ٿm'n|{gv9>gZue7MGGY3:Zf!+2Wn]֩s.m̓Pd<'t "5|aa K6vČ!J4lrWsucll$M]@҃98Q|c],Ҋ! n;`WD4?-!vi1gmթOgֲٵJy'z;|8).{=ҁ%٥xMI4oMσwUpAy- %OB5i2Ru&m[o?3'kWQsoՉ4\3ukԊ=7L-/ke. +7L}?d1ktDlc?}o:Ճkiw+j}F9q @伇5;JF~( 2#~q> @@fpSXf2z7}u^E4^fQ_8Tipn>6f@0(MskmkL~M>5w}ϜV?ܨjfdg;x.)jO 4!uzj*I%yzt&l<\͸m [U# .%lA1c^E+PNn-dXW™aHJ4_մCp"?>*XDn|~$lP6+ >%4V k%{ VzO~/3*1].Y*jy{elq8庽'&F}d\uȨ3uK ȷX*1TM~?FOoQ5&-\9sq{U_d+3mrpnGDFE }X\(r ?B} !P|V7/yxd|9v[dEǂ]lN(4Egw?[֭}jB}RfxUk)I {9G@j )N@1DlECOjnJv̌P*8e$f5; U[}6GyOZ2V>9o(ss5k?VnJ=Ømܾ9z~gǽ4ô^Mcl dz6_teU{;_>*a$&/yuR`awBO1=n} Ԅ)].EW%17dte%Y5bnueȡc Bq30:B= 8z9,ҁ(ApKT*L g&ijۈlDӷn yܲq@"I8,ovbZ3KK/7$ter "eq{[ݹ_x۫'Sx=snY)OPdr>k6""ћ$*Y;s6:(KÙˌʎ&x8T7dwu]mEBGґ^UˀWsaB2ȈH&3XL  P}GKEI eʉ( qnZEn鍆x.`IX"=*%"J*ЍH^l[(/'/#b.Fő=ZVdgjA$m!ҕ_Z q CPCAAgEM~sJ_?x~ώaKm(ˁ^G@S& ~%HXtQV"I=TL$=U%kT<d* [ C9sDFa|zfnj{2rw^lYJN&ES_&uOggS% %J14545BAC@<>-:?;<A; GnHx̘G u-T<͉* R1GU|uG aa(2!]SO{x,uB3[i@<:#iCIEX#׹k;9s_Iߺ{A>̘dIG!AT`t@Jpۧ/apɾjFcr I^E&L[QHHKj=8ūK'<ݡJGKkU$ƧŅbe C>3E0Z8kd&DJ :땪d=MALNS/?nURV} Cns AKԶ ,qanLrqv{=-2^JT% ~VT9 ɭ\ Co!H\ޯ/32ӆ#_ew|zn a(iMكK/,y2y TQ*jq>e `Ē"Z48ej-,J'^\mZZSݙjTՈDUWM^2,8D{uNjҸtJ=ZS[$Ix<͒h4-"pP3ҺњP` m#,܉$gdHM@kݮ-Y)SZkJ`BQzT=DOMD*z4u0dEܘljksګjm5Ҷ Ģz,TY=QQlFumV1(uAH&]B{[?+%>St_3nlHLzjx%Rx ^i8ء͡VVzzIګ?lӔtP,E-jB-gJKmsmd o6mR?zt: ƙ9^$G4Ҵ~S( Ed,3(񐇪XuB4Z4'vsMEZcrL  PHlԪ/ .A,0BDAf:` fd*Z 2 fÙTF0DQT$m\tL8"L*HC\u/~騖<(8d%%?'S} )rI7yrKJjttU#OGQ*{ 5&?Cõe߉ @sXHBF͆Cri`6nvy64V Gdb%´e((JnP+&}*NJ`I&!bU3P 8gGuxܣuEa\daylXfK.,_T]ET*iSIR 6z׺JU%Yp +Pe\ e奶7 #oBh]ʕꔎ?[֔Q||X>bg/uFԡUURaxjPz,%%a hlM#^#Dfyɍ<O` pHR&3]*N-ƕkͣ2NI|#{wǎ֞ 9(덯+U7*#}K4OVU#|mu[!|hJ%T Qm,>l2 矑tZgmJ!θ9j _wSP*j{c&`e 媪BV#I,v3nvHȣT$O*$JM, jf)HczۡjTY9ۍC,dLvo*Yx dq+L`M,~u[N܅bAx0=K{Vg~ջUWdQah/$q:솑h*RNJ"ڪJtrcЌ"34B^p·ob`kBnnE\GQL5d9m-@t tAөXŴU]=MJ0s\[M\[[_qRhېggD6S-DwѵdY+0eY+hnɔDd)?j~y2x gPVUt.U_sTYM-Qͥ{N7 JpUDs]+bɲzځ*tCd@٪kLJ=-+hBsRƾ9S^B Bkhq>Ã4نz󈲥|<}@4w5N^ #P$^a5Nd`X6mՉ 4K8If\6/uhY4\bmn!" QQS!K4.WUW>ȁX'57*U\HiIJf3mUzXV#k:r:6V[mJ&달:$ qUJR!X$<PVj+EfAdT,2$rtFo3p"U X3MKpQQ 2'pId` 6* oT)bGں09Wm(U2q7)jJK^he lK jkS4(&66fDe05*k95X!ꎫ4r7*Zx '" PܢTeflF`,UbQ,g$'2 }lav:H"4e*aWL1Rךa,;MqƎ/t0q1 F4` UUU#jOR*b֢Fsl*$EP@%=4ZNl,20&a *-8ՎWŽg1P>9Zkx#Lل>I.X#ӛtԺKJՉ & a2I.[RRA5WP;~Ǡ] FC,"ᴦ7Qhӝ%iTEȄZsoBʞa~ kYMM ppڳQ3WUU E$y?Ė<&uh;vy@EݺYR#7[mf;ΜO{eaȉ3nk9oiۙc1jjLs`+M֊JibzV;Ҩ=hS$e9bGTI=g3 tb" Ρ^vjOܵs~~S)|i3Oiqc0B9׸hV,,c@w֕*h!Ė 84`UM M]Ls3)SUC`jV~vow>9$̆~ ڴl2- 0!#)`(鑩 *Д[իh¥hVx=5 Ԇry=3,۩+) `  F}8E 3*޳F*i3ԉOD>4!qsԝO'y2DMYb)O2'c5L}DaMr]G{yVE`*JaiVY/\ѕz]3Zm$BD !a˾~ݦg2C"xwmbf;5, w_ ufHN:eO"n\c{ݔJWheC"J7g3rZza;F<vqlŦ UfbqMηYݝrX5.]sɭ381?G81+ǣ.s};u}8J~Ԯv12͕$al ێAB -DT*R]kV+*&{$td]̝5fG{"L.(ٳa*j)b]8wk'9^`v|Xtk:f>GDzka1NcٓADJKO&νY6y7pdM><a^>9˯bQs D2\EC%̚9VN$3 :U1gnp{*f,#;X74aP^EҐ=RНsX[Jթv0)/⏻=HL'%G% `  ;dv\]9^h)b͕kҖ:2 b˘Vr,@, o6X'{#PCCUU+yʲIbb}yR[XCvK?.# =ָRJ8,^^ip'դ1e ~*) S{)|Ca|ГWIISxfLJ?a^Qi{땢'/GEC0*̈Lxa[H 2zП~dUbۓF%mtG=?/^Ɏeٖd? nd*ޚ?.KM_O:LG16gɘ{!gis>sP3ڀ;4]2bUUc+/7'(}})ޜ_lN'gI{_?rCJd:=]jw硚EBO*ԩ2X=&J8SYKkQoŕ56&ҟ{r#)˲e!`O L~8b:Ҕf^-ϤM[^OӘz2V;^yn.E+oPo^&%Mo{,hqbh~t1>n&8 x1V:m~;?|ϧupOvVJ ϦW="A2]YK8c/6\ʌdrg#ޞ C\]!ҁ$L軁w^|YTEW8m,w\l:y胞F9=2Ν٭itk{#%armioy8FbFJ`1K$|>\c_Ljdt_!j[`ڍy:`NY'yOggS@]% Ƶ;!**,&$%("(/82666BA=7-h>#H8g2zR PUU`|kuЇ~T9Ap`޳ȣSki[盛5?\ƞեB"!j3)ptт1zDGR9xǛ&Ql|caE'lh#޺幩h̅\sԨ @RgLKN۵Fk^Ž!>5Frs޹;a27pR\pHScRUc>߯![-#zҽf&yK w@Z IlFNr_w&Ib X&P^sjTKou=rd ^ƀLlK@y?\H\F鍨GTCﷇMFmm8 5yU F,|w}Y|߱[\zg~,Ⱥ#=Xn=]Ⱦ e(9jRwsrtsod +y73[RbCu' 5[p؜`V sc~qٲ,d^z j@6y>aB~4sRG'r[vB'yJEy}ZT[uU!;tBKMĊ^ݦCW lvȤslR]}9KCjߪv{`\ztqo]^:_ N{;39`nWW'qg\i牤 dMONy9`5o[])i1iXv},i6$d;&k`q{T9} M 9~3 3qыN*[ڡyueBxbԪ.,՘Gm.j\m!..uwLC(;>1==w/̤!:A'o=Wsm*[?VȞW_m{k:frY^̩6'Nm=,I̺]uIWXir2XCeA\59M\7  fE^]n/]ٛ=UT0]Lp)]W dbUɩ5db^z,*dW=MfFӑ|:WKJ6a^^}z  .։Xn8xZ}],*:@J>@R&};@LUSUU_yZ"G_GE~m'gO3_έ*oiR?7): d-&H!D pg'? O{}:;yu&C#~{]sZaX$mݪ?R~SSp܎z>ȭw{8ݿx53N=fT@ZҸ!(Xdb؜dzk|)4@h7%`0۬zrig,rWkFa2]xT K?" ISzeH v׏塚xד[`bGk "2Ż_zU;O֨Z/6LzTmBnc#7M^K^T\3=48 O ?|,3 ZǯV΃F= pU:ڙ%tI5Zd!^)-U> K hţ0G5o\ynגa1CߕӺMJgeX;͜Ruo Fb+~#>m=ߍ8m/W]sI%ZbPX$T?~.׳gc^dYO&;dc wW*3T"$P ZcIE?!qwG ǟ|:ͷr(!֥+3B96CCV>hj_'/lF=NS58΋=2q^,3w4"c{ JQm6ưbNx9exkSCM}u&Yuݳ'٤,)5sogˠ(&sE}2L'uw:gM'03!+ =^sȡc &KtcY07cI_[ujw}.Τuz9{a]?;d7T(MCB6 KG彑{43<`R\9o).t}Kyy:mZZ׺9RR+C ,M )M̾)?KKte ;b^W*̳Ss,oyK^^ǿNmW!Vyg2-Vb116̊eٱU´a>SЊH^';B 0 *c鑐khڅ.B^ 3?0a:4&9@`6L&}|g^ Rc!^gf&*so"ۇjNp?e< &7;>Un$OF Xl s!d88kxΖKhMh'?g3v l OggS% dۧ^2;2'&1,'''?AA~ LyC 'ܳ{fLypjFHE0PE^5_,w{JOLp 7ӹWկX}c[k֚+ZXdJrP5|$Y z۝O ;'Mg55Qm2[{gn|˙>ԧ)}t5]9UdM~Hٶ1='nLoܱ^caXe#b0!Ӹ^۬O'ǟnE^fX-/06X;.{n͉~#W&4w4"ףI!+WUշXk }/]fv\V]܏V_B =Lݵ.:|=Շ.d@YDky~ҙYh7>㞩;ʦ!:L>8~x儦N&e+,SԾqaw5w)BcVM0#U]d m:2zC?U&j39\M7mt {mZY 6r^Ja~3 9fH~vX)tU?ltRYz|_dsoO2n{^<0`Mak?}Gٗ/fg:i |}&_>$YkwpRWwj3YLqn _4;Lu4<`;$BN/re}I`dl ؎mGB7yf`$)xoթb畔qRT{I ѴG#}5jMr06ҒTVHmX>KF .):9ܳ lP%CeVUa}~?7<eY1 ڞkYܻ]TϋNߟ;ؓP849ۚrs*m~kUNOE&rWEjESb諫(d'v%ٝs}rjyn {.]>ӄ4~8O2HDWX2%,[D0˘E [#c^.DGvObdNjzBGSwo`:*l?č.MM6s&@$0yDW^s^P ,Vu'IjOO:vl֮`?ņqly+=ʳ{sjO~>]4=hX>t5 lܳ3L*;3ߤ}MURɦ sN#dlfS|2˷[E}hj>+-\94HuMN ﷯-S'@K>(2`-:֘ n~5iM{ҭfO#vac\]1A/6_يJts eQth@0t 7♰33PP:$W5>4ƭ!8u36Cۑ$d$c~dqxؤy__vU,=3T\U!垳:S*?z) CA4BJz֠|Q5Nvyp>Xo:u`Cj2<5g$)Du=gWU9Dye{?Gǹ;<9.ũw6Uf n5\I39)XnOv pr Őp][<" 29fiǘ/,eY% ,^K>++/E9fǢ:OkHwtn+Y[vsį OY X R!8Xr4ygL^^1:aXFffFT%H`XuOi'o IӦ>Q۵ׅk|9sqL~ k׻>M&5':KyzM'e䤥2d2eja˫pY ,Ȗ^Ǐ'JJW=9FzlC*#>2[Bsk#|JqzpK1zpAUs({R)>I0F,(@!tiN:Gvo !Rm1]=_'ꬵ>ls7c7}R~RnqRkT5v$C꯺?/w?YO2)ɩ={oy>Uߟ44L;7Tt=d?yXX^^VWkTe24lKߔs[I/E q鸎`v!~oלZ-xϧ.1BO6KaAsD%ǜFB^PZPMGїO<}/QQfFhE1qb_?6:yqȾ\)G#e1u#m=,K2PF()T'D:+ooYs g{hg+lFMLm]}Mun95Syݾ{j0伮ںZa ۯm k"4aqM#U.We - qe6WA5՗-+_r.Bz$I5q۱6C5<5ذ.Xs!E$8 Lhd*;xl^^K>8¼PW"R_G~[rg5"}RiJ&N1GVz[o:6;eI A׷oC]8N0_vOggS@% "$4@C!%!/,&ڝHSt7o*GyvG^d ֛71}PlSEDQXԖ:IjmdR^}h 9J*+thS\ݻIքJ |4@]_"GD |:}r+ܖ W|Z2 $;^e^8mu6y6h}4g=`HN#cDVUUZ CB%EVWA1aS jaYNCA1ў.8eeehI j?DKۅd QГ]$I]60\Sر kH@ 0|mCXkLMdc7(>H\H0_-#CiM`׆kHqc-?W講ٵ `vD6/i? juIU bВ^phts"`Q[a0g Z!u=°h-CkRD 8Qm s678#MLR$X@`?8N j;2UAU( բmM * ѭo"FR wLac#')XF#nOAH@BB'mz5CL {jmPY?Lv3GNYG?h^1 l0@- ?b{!2D@!}УI!=1fUǦhг?d5P\Ds>d=Jw8ntN.F\9 M2HԌ%ԫr/([U=w^̐Tr.ͬeOJo_S+d::5D|wHB'7n(}~\*U.2 Uj" F`-E @ccl U%H%AD~U$Xg;BV0du6CV01:pߪ .5.c)p0YmȒ1{748[LzY,Q; n*9vSkݚE_QW1q[Wum8Ʃ*e 8ݓӥj&F- 6MR|U)45gڪ< ^B A X*p1,PpF&L#O d )*T@Vox"޺,='0ܦ2ۗ.VVI*.,UF%j;hQE3΂vMQDf5r;%Q*WUUUʨ8ɬ;69VFrF06aI mH\XmO블4 ӀAP'!QWE EJn!תeΒ\JzY@BkTeuX{*\Uz(v̉jꥊ&prBQi#r"DME!+kYA YilQ~kJLuMjqG&pNEdK&z}T^()xu􉃁@cSf Z Mn6[g:Ԯ(&VͶi=(=f+RU h۬RM=3bW;6QH */sTM"gz%"{OW&͒ꨬjÂ(#fQږpyzES ǫbYtZ5X_n| flZwla\Mjf8O (`Rbt%"UU!bk2ɣ  h@b.4𢡊g_.Tdb22- X޺h Q#ZOBֳ|8/Z@@V o$,tﴖ&UPE-9O._ Qѐ-_ 1lZt(3a{Iceޱ@0 TX,pvvHQۑZ $K?#0XOf_[IBRvs$5jplש x.L F.]+>s+mby `]ڜ(pcm:̦I&'tfjF'Wunl254N+i`Oe\\]:s)tȨ-`k{p2 LM]a?ϛ`O垨8폯|o̓Ԟ3)y2l> V.鶁fzl,9B۶﫹hXB ?A5ңVYUR at[ݞb ?Ri 0xvm{tӡ{i=q9C& rLXUB'OggS@%sk$7*($'./(*.>]@ov/sDA6 ` rY29a(a CsxdƳ:1!MZMh4[sw?~6s|}lKeVoi~?j>zY$TldoLwQ!ޢ1=9 d%&ME~{ i)2|nz^h_6TMU&z6;%beF :`0Fac,d0,cSwc6R'j0z{oa"'A:uL x[V|\根}3kݏX%&|7#̈q"1IG5SLFejoFV_TY!Pɩ.sV7"h1Z03 -{9 YIZOBxý|=w!/r&gnFuM=cI֪]̶Z *s @)lӳ]t=b47b-j)=Vs5{F^|%FqJV`es1ufϺ=eI3y 3ϐEactw\,~2DZMb~j^yvzs)2?NkT}j+S9Øœc¶@ȈKX۲d_鿯ϝةc `UOb,4WI3 U[Ͼ#f5,/&27c'u@($rfJJl@hr!HDUUU4fknyY 0V*+ FjéB4R>{ݦ֕%&pI3eQc?`sTinf053gױluu=POΩ gNBGg\Y D%&V&zA+`bޥ`u5⟱M6?L%2-c)]s zy>F#V."Xb+3Υ&>SIL;ڬ~@ld&3Ȑևr%wu[&+WcwB,}>kZV^^ukg_e-Kf4PM(Z4+=PFvRu`Sh5Mj)f87C9@wO#j%v.3wW| ç&+vlcit8}'n?ێ% éeW?*Sx+tvy8\G|V&M=IquY҃t'ae#v,-Qsيt Gne%UUlцۓE:9^>u[4{g,:zwu;>2~mzP<_堋J+}O+JMݳcZ۾\lKZtnKƙ˞&+YRQ=J̌Ӑ0nGfNg6)ܓY<:U#^̌NNi4T1Du;y}c\r̭-55S^B.#pREV3|zH2mL]-Vӊu:Mȵ˃̑9 Zw>^)A KffFTBUU̹p_,J,MW|Y][C"U"Y{68םOKrȥ f\ qΈF}N6ElnpS\9wKbX9qV-jP%21r$!t>I/DT1ivq ;S{Ja$l7awXqzd{jacބɫW56YԘ"R?+ywɦLϑ>93Ln soh2x2p3R[PU|}x!JKjI֢̓VUa<$kkޑIJLa W{/:%Z}܊2b 7Sf03`r꜡iO5wY|;sLd?g.򅬦R,t&7UNQ ҋ,>\] ES~@\jHHkᄋO_*Ud; +}sծjhUϹm=zݣghQc-Î:=\/HP@e0z0F V" jUZӃxU+~S㨾[M</Roҙ8E.{lk\Oj`Tv`+9eqSmn@˥I 'bG8MaB*u/م}ϯE|36SY{+,g'EHy/OiB^ Iw۶Gz^MP %~#] q1;⩿eL{]G#~qaU v|)cB<֞@ o̞4j+ mXr`kzM2w %nL2HgŬ[,$( ,'#UtvQϧ̳B;Ml!v,θ$eO*{qӐ8tOcMG]jdȟZtbP|5"ˆ:I=qth>K˖6FĀ%`ɀ$${T?~35JO$tcdtʙ{u -T׽#>K,Dw70,3c"eM+P0Qҙ':Yz.ocO*b*~TuZ6rHLɝA-zO/xkoc٬mG}u3RObòJOTĮo.s^ۣ;D*Ľk?(ڵ7dA,匜$N yMa^E# '3`ubٖ$*_[WbS\,HeY]9wluZўr&if}/Vni}7<g꟩wmc~ItZ`tSPH pFQɈZUnΪW#<"9̰$Tms~4@ gb13b1s|&ɕo}=7_zOq&Ҏªޕ[VGUt)IO4'X_J9.b&,I>!365^E;r=\Lӯu#?jLc@wOtk 5TUt{6z1Nc=G+ݹ_쇋qҧb:5,.k=24qbsgl0 4ULV%7æ] UifG4Dt2njngMWY'b6u6~ȣDtݨUEĴq}e883Ȁm=T*$ YMj6>+BUΖǽZO f߅z[8p;i^/4 aJOggS@@%#+01'")*/0 !(,SOfi04>O ̌XUU%Doce{tЅra2jRSeҩUGW/g{ܳ^N}񬧣 YEt VV]Ѵ[ZI0t_3P\tQ]k"Iؚ~Ļ*&aav+51ݎ˽6HYEAݫ8ɰr{z!Y%K.,]=ɽjK\dӢssW;.wuJQuݧpo ީl݃0x)d  粀=3* UUqRz%Y]7w]ܷb89:l]ry8M}[8yXIF1 ruv|Dxb.L3>cJH3x_%dSm&vw$X1 Zvv=9*PPodg]?uU*T'(^{':[`{/Lٗq5 Q;Nޤږ:,}%: (pG M>8hs)Pla,2Wd>~:Txi5(rz֎E޼պsٯަoFyTlB94 E1p]9_t(cǾ]yƔ'@Aøhc܏Kc4Sb41n̜`1{$ 6Kr\. 02"eaߒ'io_o+?Ѵ/fƢq# ?2Su|ON=Gݡ!Lkv_A\P&h2v! zMO' $'>7 ?vSQEv7Η@Xky>~ܚ}[tbĵVg/"X/-ljeٕ7F|fIJj6z>9LyīƉ3ʱZg/LB~5#I1 WEw6y<ݓ^tٛ 2-MFEBhyFVe>}%pJ[T2{ (湞9 o6X懅^b-w)kYk5a=f.\5Gl:&^*"6@*8KY23PRUU5qJ_,E wudjH]w<9]{^3V8qsuu|OZA5MuY:̙<zuYn;5NJ>00g&yPg)LuqT45!,t$39ݞ-270ߵwT*% y<}pluu^3ulK#C}OYe첮!1~Avǟ#c4UnnI1(>s$0p[3H*EUU#QӒ8P^5΢ ;l ]˺Wگc:Eń\5uC8g^n&3@5s>U:oOѥޓI9WǪ.5& ip&]cKTfW"}Ċ k̪i5΃p($̟Ž^KH"jL>?v.[r#0Aƒh|^yK<˺{3OiTJƳG8͖n}vogO%Ph &!Ma=ﯣIܕ3iBӄzD&C2ե3(Jo %`OB` ɒ@.tYN"le^t |8V:H0rM=݌0QXR$%ٳS&G'ڴz<[^YV<nb tcd2@33Y BUU΂exN^sOdjG"i}^/KTvci&,{UكS3jQ{|g9GSS d kv5m_PM՚}i5#l=M5M/@ bF,6{N׬뉭b"%dpq4=jU\1.e`3ݞax)mбkƏ7{ƜgLQ9n"i^ٓPˡ<{ ;dI \UO|97%yM96vv0x-(h׿Jffns]?{+$F5F]='g>OdzSU9+9'juMϼV'f㜳qR +546fqSQc;R?†:,Fl[JT 詶7e6wu SC?91{}tD~}̗ǓդW= j$w=b73^ P0˞Ph,tUU47v燪$bX:}uxa>wsjųŲqi!`RPZׇٻЯj۱o]J|M^~XΌꯦJɢz=oӬ8j;XHdՠahM]du$n׭O?\\DN,t"5!ů &'K-İ}`v!3us 'R 0Ig2X,Hx^qU%S/ը7-v[t=[3n3(mVpy"om ! L*(8O^]=?bDLz2u9{ȯ"vt3%*-*_=kZ'o&e§0kXle8& }ù_[ի9‹Y`M- cI ($Ð:)׺^Ҋ$ι3Hyv}=J 2^% 061&h±Jp!=褓Ԯza=K^?ITMm\MznjMmJd}^6?1Ϲ-.]6;ZT<pvf:tC =8Y|jɬ^)5C5N fQ)(_/͖a0:=p^H:!ywq\]8|"ER.[6`^)gT+tOn'Lٓeּy;0㻨I+hnzIL挗J܀[wߵ W)~$#c?F6XiVEWۍ%q֐,d7c_żb/_/Nm3CK]wT7Ol~31!i `Q2MX"<~ǰ4kY>4//gm<#gӱh<\J.Uٸ*~Mj}kafa13_}39 Y+7}93&9fsCu2U"u{uW_\6Hȶ-l9ƶ؏/;qo2.k5sI5X}yՒ6%|ky.e})E\RIi|v ٞ>hOggS@x%]ÂI335'46*6-($4"& >]#`L̉L{dfHPUUUucd699s9vwv Yz>ъwe>4T/̺}^^/^(Ilxfg2;]Rӻ'ɫ1Y Nܭ&*<Rͣvzcɝ'+)ibjԓ9S4~`ESo?|8c@F~_+K/ǿ65i~\4t#i$~ڱzDu~0կun5߽鵫՜a<4N5zǯd^3R 1gt*k#Wb_R6hwֲdj5ML~Mysq7+qyq^K.4kϤVq=\n{VUf3]9U '?;vvnYK2wϪjpZG"ڂ%#I6K]0|^])*RɃ-%/^ 6?]jĽ  ևFD"i6re}T$)O9U+Ktze"?kK1[XcyGx>#E p&}UL'B1Ff&ib"TUw,U5PWLo:tl>ptzdus.jYs)|d14zk1N4쏖hfe7'{I ɔ ȃA]T =o]3z *$!^a\LW\MՉa&M)F_Օ"W IFoIZj17y,kتIO4L(vOi5?fҒCbwbn-?hӌki>1). < I0v̑!6T%T5StbﻃAq:3aW'ZB[㩳eTsNً<.n%v_$u,P8?0ڳ33ލ)69g.JúVgZnɯۜ<>>F3\UUkv wL"= `d IĨk Ɋb ~$2>0 C|jnddh9ϝTmessaging-app-0.1+16.04.20160323/tests/qml/data/sample.png0000644000015600001650000003623312674565025023324 0ustar pbuserpbgroup00000000000000PNG  IHDR,HvsRGBbKGD pHYs  ZtIME/j IDATxwtTǿI%eIbhD:6((~vQwIQAHKBɄI2ɔ[~#3Id&b;s}90$I W8!٪ ٪ !U"bIFR&<FJB(C#MBF&  OC,ɁT 8RE!$s1'hh0I`SFn&"p CVE2C*ˇB^HX@]%lB701`Z("?!k7P.u.N*ՋTq6WC87gl|gpƃ4ZGKEpV â%􃺂=\Re`-V* #xGB6.:jj$XD Nߵsf i]q WQ "RΟs0|-~xȮy;NN!"BJrX>'c* 5`2 68 Ah5n? .2 ќ7{0nOh"̀|C`$X?Lp6 1 $)^;$X? /2(=62AEīU0| O\d,ļð/{?1LCOB1q@ANI{!aP>؈D2 8Jc=E>z%pd1Yc?{a:TY$XԹ9[o{[9s d #j]' W b}װ_ײ~|Ti$X܈!~>=͙ iHZ&pr]#GQ5g3!(X[zF% ӃLYԀArg5$RU #s (Xͅ[|MAꢃKe"F{Zų$6e;Hאc !ف>oRMHތ@u\j$X- //$E t8ȺZ0J[lt0ĝކM+9KW٭`J$wY[`{k*Mqk|i,~RȮ oV{_<=34P4?hyKWAv*V u5n$sb<oޚ\Q m2өW"~̠;7!U|8y+ c~!3۩3`70e Z }袏 mL$e6sͻNA=?> b2/pI\Cp]}fmloxPÿ#kPx@l\}?S R*eLz͇|TRGC,X^~5w {sup|BH6%IrYL{fjLl[sJU˴Q0n>ŋ:;>i`gyPl%M('Jͻvll@$ OŐ`w[{l뮄r`c.\4Dδ^Z)}'Zr8=bq5Mʠnq:Aد`BPHx$[- ʲŏՌH|g=5PNثSPbO?: Vp 㦃'VnGvЙxik # j"4n@ҋC?K7lq. 0xCC5FeSH{ ǐsK>:g7Q]Ph'; +7|{M 6{]a;COU{Ir-}` <)CWUR6G:V//]S]!-[?ndWMqϑ\ 3FJM My_>7z.?g3dC~RAY WSP֠4t[6'O&ф3+`P|2 7n9G[QXrAt`5/bq66EYuboʮ sKtHeyt$<4a V?<*'Ma_  KVa`ymytPԗ_5oT f!3(JxTp]yDTϾ|4V3!)p,qB>F$XeøfKPE>q9Sa-8^b; )A+@P#'D&yYUt;mGp~{Wv~$XزwNZ۷3^D닏:;/+,?g)v u&,?cB8'z]9V̂q_-yo= F$^VNO$X~+($};޹s_" [!x~m$|4w: \$LV(g =3dz=$Xs/X+obǯz(X>O'bz"~B`sg7XMˏT@?npwAűS%x/u*,?5.[$sq@%ӄ N\$X~ +c=#~pG @HŽUoz0n<*E8 y}-q.Ht8g`ŏ5Mlt,:pƵ/.4̟Vͯ5ڿKHplR VL:bNEў+ L# !jZ*/}^~KĪA6\>_߹?h3C9ЪF8m&<\TB`ە~`l!Uzu H'q\ y;^{RusQxR-$ec;ϝiTQ6[+&7J,85AY`.\TsM4cӢG6y wdFc[%[{xA\`anQ!".*hOpvϒʼnƋ0p01njUf(~pGԄ&q&8&i$ \99/,_^ֱ?|&XK}H(WB?7s d7k,*XaQHQ0SG.p ?,1Tj>8Տ$v$X =ܱx9ǚ.$np7p4z\u861|hé`Qq 0*G‚±mo(e޵3wi77pk"`RF/>cM;`_> _}zC scnz+< 9Ւ``bz}>mNomͨ=9/R'Go݂ձg\D$Pć 4᱈TR5[5[7\0*C=nWoOi0^z$kG׊0n:X E准X?٤kR>]cӽ%Yq*E} pgu>3eBKBB?V>eHrSp9fLZ1{_`;]dV`E,ڥ cL@ \y7Չ~pp}=VrXNۑ`@P'' B.3VU'=V2 x@Aժ-|x<]'[MuOPxB  'lRys諸 -xQ)ԩH} oiMOè@ݕ-{Ll'EF 3h:uӎ˯s^㟇7bk$[?l $V>lZ:L^fj6 _?nH/('p/s`y篸>ԡHdү x1 ~^6!s#xE_uDyuς)uȠD J"(E͙{^%'J#!HT9m(X*aء?q*Wi8Ƹj뼾|CAiv/ɮ σûlu$Q&e ^G11$(l;G~ n Ζvu$C{|Pø0|gʘٿC?8V_'<03$t* qGC؝: V3C+0g}s1 lSC9e@= uhTX˧aaȠ ASDz!YM^ǾMn;HzE_ `K+ Ƞ)Ͽٻs!{ \ynH}=I=ԅ 1@Pb{呠'A(~ GCڝ.Zˡ`/KNE9YpݮG߷BnUYue Fs{H싟6#zu@YL( H !kbZ KE(Q]_tbӀ# jdC,Bvסd`ۥK 6 0i`˜wa I׉3 F\*#{rJ5y6UG DUޥs`)Y.W# !,V@T`@YsX(ՐlU'O/| ?. :Io:7I<|h,g>ٟUr +V w8%uzj8}gEz|"]z-5'^XyQ;pn-V u r<e;p4duYz>2Myw rf pZ&aҮNAL'vC;a,_!47FRU?Qw Xf=T'c?0Q`aA4C*d-AxX, ayO!gڀ.nPWK>UxFoϟp{~l\'j# B"Zd&NXsۼK깷&V WA1m$P@S$V$XA![d壟 oKo, Ay|O?.0׿Ci%tk@!-/][8qib=Ũlc - @8ǿ]drns.% w HZ"dƈ̾e(x]Y`?/ep7FEz: Di~awys~)_^PNHZ7&! p' zVsy'@u8sM㛐0`A  ᆢ9ȝ9]wsW}?9SZ 6r 7 ; >H1Nr#u)NKSH8־I>(x F0 B7owAӋ& Ó`uSHɃ6Led ,-ùf!1B9S0d ,‰M}r2"b5qT B$XDCSp,y-8VK% 8h R°`HyfPJ`*!g  : ?5G "|ñ=!bs:_K "mc(XCŵ) <%¹[XW#G#y4䣞GIG2ñs.rG?YQd ,"W 8| w  ˡx+n%`A%\2K۶P{ w Ux_y:E hIH|W?5[[s&yn *r߳B.lԈk 5K:&"Z%N;? 0n=b?n]>l|WK,MbHEpr {J\`z@u(^`NNG`+! 1g?QHF<4x0R%30T/  *TfdʃXєTÜyUyƋRN`B"ŁL62Lh,];0v $XEHII"FB&$Phf NIDATAm :H , , H H H " " " "-++ 8v""1fXjAXl8z(2g\L&+*q3H+:tL & v2BB@hh(0P*TAxBL$X ˲Ej ZS&AEAE AD##D޹sq~Ht" AIPTT3Nĉ8}4CiI JJJp6+ =zaHH"L&5 qQq.7<`JDbRX`QQnقClV v(BRAR!*:zɸ&#={c[w$HNIΟ/BEy{KqH-U9sga0h,DYY)M(/7jV  /`** Al\,:tnݻ!_ +fhPn|.ڌ(hԈOHK)4QYiޒ$e$$&BR5^ك'{JKq)xw|@6 ӧ݋z7Z,Vt /Nma{ߞ=Xl߾FP(P( ɠP(*IQDsغy3dr9"##qyn|d\?j|.X3C~~f!9%K~^ٟE?,VwPcY~1{XG董8~8 f+ͰX,2 ǁ㸺={vH"TVVh4p8#1)#GɓެV;n ,@$UQ^c_㾻h׫Xs啘̟;*f5fa90zjmAHHH0x A-kp1! DItPc $IFb< NaÇ=@EIN ym[Grc֋/C&#ï'. jBe}z} u ( h4Ef>,G.#72dPTjPPj5 ZZ$X(--AeE%L&JJJ.rBѠ ^|W:(BH 2C1xd@=\-[z*>Q!,,mHoZ믿u8x*:$hZã?lHKKC< R ;HNI!jKfhZ3zkˑ/20ib $$Ē$A?ļ9s!ZNxWjtFEF~w~G{X,P._+ ,L< qzo@dT&vUٷtX_- +< RV26B/DVf&F&ɫ{aCXXN}pbCp"0'׿?~q;vbu9ѫT*Q\TsPkf2{~EJ}jzT$XM 5x$|j_ DRZAQcͪɡ̌37r *x*  F!O!'\{, lsFPW}[&CiiAgcZp7dr9ΟGYi)& ?I\ == ڹ,Pe6#??(e \ 39k^bjtan򋢈sZ`"6. ՗8< &y&۷mChht"_F3!!m$ Yg8h4 òp8.OTyfYDǴs;Gq?rKAC,RlK .Sj l=ۧw'FGrJ\έ\n2ʔe$wwI2 4nJ͛E6CK~ ZeCTU+@}h]* GEVVUBP(tT.EEEV: 44ԭ>}1@Nj]rǏ}U6z . $Iѣh}ߤ$o2MWfjqqq.ap؛5l=ӅۅZ`u޽nNx1~j |2sW;OLĄ&411Թ%&J\RzIݾTk4عcG'%% ѥ/,ji:h4X|9vlNׯ/\.e`V'M>>iŲ{M_ H 233gSԔPTnm۶!b3,!Ctػk7[],=v,DQt ^Pt_@13fs{ޝjEtL1ݣ1r$ڵk6yHů+WR43V*1/L]?*&gmH>Cl߶-hl%?kHNNvĒ$A#{]8vObVMYd).*+^O jծWצ}롋aÇjL&x'h WkcNHJJj%~wDAęӧ{4x2 x` zu#G_?eu12*S ;$ 8r0&| =XXYQӉ,a`xV_}97p#3T*T*{*++1pyU{mHEVn]<=I`X6$d2 61\.gg|WTTa7noԢOLwJvVEeEfz o`=n3+PVVaqb: MNt)κ|{%IBBBPQQy zFFF:tȈHԪDnwdBqq+ݢq.N<>Fa!ٳR۷Grr ch,8nSq Nݻo^Hٌ=z^&OƜFddzR*x?/[:!_tq8՚ub'_sB%%%(.*BF>}[/7OysBz IP(p8kcْ4Zqz=4-8ݎJ32`޽8x uY2Taw`$ J NV tAѵ刎ZL&(Éʊ6snSPt L L&L.ЬVQYY=wG4\/4 GYi)4Zrd2p`}_p:5 cCEnoBnp8P]]tdR ]u[pksQxGA5OG&A&Ս86$$$‰ZQ(3Նŵ0 XEDDD;wƜбS']t4|m3u*l6pv㸺}$Aź5] u{xA 0t.RΝ;W':vkog΄hYm3 &k3*Ik BR!,, {AΗg^4o^ԟqǝSd2&M\/qr9 Je')kJԌ& C ŋйKuൃ@0 [[O4;:tg5L&CVf5a 7ވY V#MAn6ò,ƌ׬AlL,z_q2Oc츱 qxf}#E\Jey8roW[]ITTFfC&MƏG0,[ gBEh4KJJBTT"""/Nk}{>x;3QteX,P\r,󨮮Dll,]{-v `u_ӥkW,X=V ߇ jJҫgE&q8`2 ""#vڡss۷oqeEJKndjw(`-wL^zwŶ͛QZZ V[77ԔR;ztcǍ 7QJ,y[i<DvvfelVPeRjMn=zફBF 3(FuIi&ܾG3-н4 z=>=ڷoHKOCbblXͷσB~䝈=Ӧ!,- qqqIO F x$&&"** aaለh8r pY `0䣴& & v[[I W($%%!%%zveuFBb"ͼ)|a!NTj r\M#4,q#!1 1 Cxx*:Wm0//DVY (v(U*t!CrR.v9;vDJJߧJKJ`,,ĩ'Lk32 aLxx8b둘!<. */ import QtQuick 2.2 import QtTest 1.0 import Ubuntu.Components 1.3 import Ubuntu.Test 0.1 import messagingapp.private 0.1 import messagingapptest.private 0.1 Item { id: root width: 1 height: 1 property var model: StickersHistoryModel SignalSpy { id: countSpy target: model signalName: "rowCountChanged" } SignalSpy { id: rowsInsertedSpy target: model signalName: "rowsInserted" } SignalSpy { id: rowsMovedSpy target: model signalName: "rowsMoved" } SignalSpy { id: dataChangedSpy target: model signalName: "dataChanged" } SignalSpy { id: rowsRemovedSpy target: model signalName: "rowsRemoved" } UbuntuTestCase { id: test name: 'stickersHistoryModelTestCase' when: windowShown function init() { model.databasePath = ":memory:" model.limit = 10 } function cleanup() { model.databasePath = "" countSpy.clear() rowsInsertedSpy.clear() dataChangedSpy.clear() rowsMovedSpy.clear() rowsRemovedSpy.clear() } function test_initiallyEmpty() { compare(model.count, 0) } function test_addingEmptyOrInvalidDoesNothing() { model.add("") compare(model.count, 0) model.add(null) compare(model.count, 0) model.add(undefined) compare(model.count, 0) } function test_add_new() { model.add("foo") compare(model.count, 1) compare(countSpy.count, 1) compare(rowsInsertedSpy.count, 1) compare(rowsInsertedSpy.signalArguments[0][1], 0) // first compare(rowsInsertedSpy.signalArguments[0][2], 0) // last model.add("bar") compare(model.count, 2) compare(countSpy.count, 2) compare(rowsInsertedSpy.count, 2) compare(rowsInsertedSpy.signalArguments[0][1], 0) // first compare(rowsInsertedSpy.signalArguments[0][2], 0) // last } function test_signals() { model.limit = 2 model.add("a") compare(model.count, 1) compare(countSpy.count, 1) compare(rowsInsertedSpy.count, 1) compare(rowsInsertedSpy.signalArguments[0][1], 0) // first compare(rowsInsertedSpy.signalArguments[0][2], 0) // last model.add("a") compare(dataChangedSpy.count, 1) model.add("b") compare(model.count, 2) compare(countSpy.count, 2) compare(rowsInsertedSpy.count, 2) compare(rowsInsertedSpy.signalArguments[0][1], 0) // first compare(rowsInsertedSpy.signalArguments[0][2], 0) // last model.add("a") compare(rowsMovedSpy.count, 1) compare(rowsMovedSpy.signalArguments[0][1], 1) // from first compare(rowsMovedSpy.signalArguments[0][2], 1) // from last compare(rowsMovedSpy.signalArguments[0][4], 0) // to compare(dataChangedSpy.count, 2) model.add("c") compare(model.count, 2) compare(rowsRemovedSpy.count, 1) compare(rowsRemovedSpy.signalArguments[0][1], 2) // from compare(rowsRemovedSpy.signalArguments[0][2], 2) // to } function test_get_and_order() { model.add("a") // datetimes have only millisecond precision, and we want to prevent // the two entries to have the same timestamp wait(100) model.add("b") var a = model.get(1) verify(a !== null) compare(a.sticker, "a") var b = model.get(0) verify(b !== null) compare(b.sticker, "b") verify(b.mostRecentUse.toISOString() > a.mostRecentUse.toISOString()) wait(100) model.add("a") a = model.get(0) verify(a !== null) compare(a.sticker, "a") b = model.get(1) verify(b !== null) compare(b.sticker, "b") verify(a.mostRecentUse.toISOString() > b.mostRecentUse.toISOString()) } function test_limit_change() { model.add("d") model.add("c") model.add("b") model.add("a") model.limit = 2 compare(model.count, 2) compare(model.get(0).sticker, "a") compare(model.get(1).sticker, "b") } } } messaging-app-0.1+16.04.20160323/tests/qml/CMakeLists.txt0000644000015600001650000000225212674565025023156 0ustar pbuserpbgroup00000000000000find_package(Qt5Core REQUIRED) find_package(Qt5Qml REQUIRED) find_package(Qt5Quick REQUIRED) find_package(Qt5QuickTest REQUIRED) find_package(Qt5Sql REQUIRED) set(XVFB_COMMAND) find_program(XVFB_RUN_BIN NAMES xvfb-run ) if(XVFB_RUN_BIN) set(XVFB_COMMAND ${XVFB_RUN_BIN} -s "-screen 0 1024x768x24" -a) else() message(WARNING "Qml tests disabled: xvfb-run not found") endif() set(TEST tst_QmlTests) set(SOURCES ${messaging-app_SOURCE_DIR}/src/audiorecorder.cpp ${messaging-app_SOURCE_DIR}/src/fileoperations.cpp ${messaging-app_SOURCE_DIR}/src/stickers-history-model.cpp tst_QmlTests.cpp ) add_executable(${TEST} ${SOURCES}) qt5_use_modules(${TEST} Core Multimedia Qml Quick QuickTest Sql) include_directories( ${messaging-app_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) add_test(${TEST} ${XVFB_COMMAND} ${CMAKE_CURRENT_BINARY_DIR}/${TEST} -input ${CMAKE_CURRENT_SOURCE_DIR} -import ${CMAKE_BINARY_DIR}/src -import ${UNITY8_QML_PATH}) # make qml files visible in QtCreator file(GLOB_RECURSE NON_COMPILED_FILES *.qml) add_custom_target(NON_COMPILED_TARGET ALL SOURCES ${NON_COMPILED_FILES}) messaging-app-0.1+16.04.20160323/tests/qml/tst_MessageBubble.qml0000644000015600001650000000471012674565025024524 0ustar pbuserpbgroup00000000000000/* * Copyright 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtTest 1.0 import Ubuntu.Test 0.1 import '../../src/qml/' Item { id: root width: units.gu(40) height: units.gu(40) MessageBubble { id: incomingMessageBubble objectName: 'incomingMessageBubble' height: parent.height / 3 messageIncoming: true } MessageBubble { id: outgoingMessageBubble objectName: 'outgoingMessageBubble' anchors.top: incomingMessageBubble.bottom height: parent.height / 3 messageIncoming: false } MessageBubble { id: changeIncomingMessageBubble objectName: 'changeIncomingMessageBubble' anchors.top: outgoingMessageBubble.bottom height: parent.height / 3 messageIncoming: true } UbuntuTestCase { id: messageBubbleTestCase name: 'messageBubbleTestCase' when: windowShown function init() { } function cleanup() { changeIncomingMessageBubble.messageIncoming = true; } function test_incomingMessageBubbleMustUseIncomingSource() { var incomingMessageBubble = findChild( root, 'incomingMessageBubble'); compare(incomingMessageBubble.color, "white") } function test_outgoingMessageBubbleMustUseOutgoingSource() { var outgoingMessageBubble = findChild( root, 'outgoingMessageBubble'); compare(outgoingMessageBubble.color, "green") } function test_changeIncomingMustUpdateSource() { var changeIncomingMessageBubble = findChild( root, 'changeIncomingMessageBubble'); changeIncomingMessageBubble.messageIncoming = false; compare(changeIncomingMessageBubble.color, "green") } } } messaging-app-0.1+16.04.20160323/tests/qml/tst_PreviewerImage.qml.disabled0000644000015600001650000000614712674565025026513 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * Authors: * Arthur Mello * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtTest 1.0 import Ubuntu.Test 0.1 import '../../src/qml/MMS' Item { id: root width: units.gu(40) height: units.gu(40) PreviewerImage { id: previewerImage objectName: "previewerImage" property var application: QtObject { property bool fullscreen: false } anchors.fill: parent attachment: { "contentType": "image/png", "filePath": Qt.resolvedUrl("./data/sample.png") } } UbuntuTestCase { id: previewerImageTestCase name: 'peviewerImageTestCase' when: windowShown function test_load_image() { var activityIndicator = findChild(previewerImage, "imageActivityIndicator") verify(activityIndicator != null) tryCompare(activityIndicator, "visible", false) var thumbnail = findChild(previewerImage, "thumbnailImage") verify(thumbnail != null) tryCompare(thumbnail, "opacity", 1.0) var highRes = findChild(previewerImage, "highResolutionImage") verify(highRes != null) compare(highRes.source, "") } function test_zoom_in_out() { var activityIndicator = findChild(previewerImage, "imageActivityIndicator") verify(activityIndicator != null) tryCompare(activityIndicator, "visible", false) var thumbnail = findChild(previewerImage, "thumbnailImage") verify(thumbnail != null) tryCompare(thumbnail, "opacity", 1.0) var highRes = findChild(previewerImage, "highResolutionImage") verify(highRes != null) compare(highRes.source, "") mouseDoubleClick(thumbnail) verify(highRes.source !== "") mouseDoubleClick(thumbnail) compare(highRes.source, "") } function test_toggle_fullscreen() { var activityIndicator = findChild(previewerImage, "imageActivityIndicator") verify(activityIndicator != null) tryCompare(activityIndicator, "visible", false) var thumbnail = findChild(previewerImage, "thumbnailImage") verify(thumbnail != null) verify(previewerImage.application.fullscreen) mouseClick(thumbnail) tryCompare(previewerImage.application, "fullscreen", false) } } } messaging-app-0.1+16.04.20160323/tests/data/0000755000015600001650000000000012674565500020533 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/tests/data/vcard.vcf0000644000015600001650000000127512674565025022341 0ustar pbuserpbgroup00000000000000BEGIN:VCARD VERSION:3.0 UID:47bbbfcab7c9b8ef0e7375074d22ff54905174bd X-QTPROJECT-EXTENDED-DETAIL:CLIENTPIDMAP;[\n "1"\n]\n N:teste3;teste3;;; FN:teste3 teste3 X-QTPROJECT-FAVORITE:false;0 TEL:3333333 CATEGORIES:T END:VCARD BEGIN:VCARD VERSION:3.0 UID:e5bb57fc852541dfc9ad29d583a36f1c353b65ed X-QTPROJECT-EXTENDED-DETAIL:CLIENTPIDMAP;[\n "1"\n]\n N:test34;teste;;; FN:teste test34 X-QTPROJECT-FAVORITE:false;0 TEL:44444 CATEGORIES:T END:VCARD BEGIN:VCARD VERSION:3.0 UID:0d753ce1005dde92f69e4ddb62222240691693a0 X-QTPROJECT-EXTENDED-DETAIL:CLIENTPIDMAP;[\n "1"\n]\n N:teste2;teste;;; FN:teste teste2 X-QTPROJECT-FAVORITE:false;0 TEL:111111 CATEGORIES:T END:VCARD messaging-app-0.1+16.04.20160323/tests/data/CMakeLists.txt0000644000015600001650000000023112674565025023271 0ustar pbuserpbgroup00000000000000project(test_data) set(AUTOPILOT_DATA vcard.vcf ) install(FILES ${AUTOPILOT_DATA} DESTINATION ${PYTHON_PACKAGE_DIR}/messaging_app/testdata/ ) messaging-app-0.1+16.04.20160323/tests/autopilot/0000755000015600001650000000000012674565500021642 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/0000755000015600001650000000000012674565500024457 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/emulators.py0000644000015600001650000004354112674565025027055 0ustar pbuserpbgroup00000000000000# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- # Copyright 2013, 2014 Canonical # # This file is part of messaging-app. # # messaging-app 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. """Messaging app autopilot emulators.""" import logging import time from autopilot import logging as autopilot_logging from autopilot.input import Keyboard from autopilot.introspection.dbus import StateNotFoundError from ubuntuuitoolkit import emulators as toolkit_emulators from ubuntuuitoolkit._custom_proxy_objects import _common from address_book_app import address_book from ubuntuuitoolkit._custom_proxy_objects._common \ import is_maliit_process_running from ubuntu_keyboard.emulators.keyboard import Keyboard as UbuntuKeyboard logger = logging.getLogger(__name__) class EmulatorException(Exception): """Exception raised when there is an error with the emulator.""" class MainView(toolkit_emulators.MainView): def __init__(self, *args): super(MainView, self).__init__(*args) self.pointing_device = toolkit_emulators.get_pointing_device() self.keyboard = Keyboard.create() self.logger = logging.getLogger(__name__) def get_pagestack(self): """Return PageStack with objectName mainStack""" return self.select_single("PageStack", objectName="mainStack") def get_thread_from_number(self, phone_number): """Return thread from number :parameter phone_number: the phone_number of message thread """ return self.wait_select_single(ThreadDelegate, phoneNumber=phone_number) def get_message(self, text): """Return message from text :parameter text: the text of the message """ time.sleep(2) # message is not always found on slow emulator for message in self.select_many(MessageDelegateFactory): for item in message.select_many('MessageBubble'): if "messageText" in item.get_properties(): if item.get_properties()['messageText'] == text: return message raise EmulatorException('Could not find message with the text ' '{}'.format(text)) def get_main_page(self): """Return messages with objectName messagesPage""" return self.wait_select_single("MainPage", objectName="") def go_back(self): """Click back button from toolbar on messages page""" self.get_header().click_custom_back_button() def click_header_action(self, action): """Click the action 'action' on the header""" action = self.wait_select_single(objectName='%s_button' % action) self.pointing_device.click_object(action) # messages page def get_messages_page(self): """Return messages with objectName messagesPage""" return self.wait_select_single("Messages", objectName="messagesPage") def get_newmessage_textfield(self): """Return TextField with objectName newPhoneNumberField""" return self.select_single(objectName="contactSearchInput") def get_multiple_selection_list_view(self): """Return MultipleSelectionListView from the messages page""" page = self.get_messages_page() return page.select_single('MessagesListView') def get_newmessage_multirecipientinput(self): """Return MultiRecipientInput from the messages page""" return self.select_single( "MultiRecipientInput", objectName="multiRecipient", ) def get_newmessage_textarea(self): """Return TextArea with blank objectName""" return self.get_messages_page().select_single( objectName='messageTextArea') def get_send_button(self): """Return Button with text Send""" return self.get_messages_page().select_single(objectName='sendButton') def get_contact_list_view(self): """Returns the ContactListView object""" return self.select_single( objectName='newRecipientList' ) def get_dialog_buttons(self, visible=True): """Return DialogButtons :parameter visible: the visible state of the dialog button """ if visible: return self.wait_select_single('DialogButtons', visible=True) else: return self.select_many('DialogButtons', visible=False) def long_press(self, obj): """long press on object because press_duration is not honored on touch see bug #1268782 :parameter obj: the object to long press on """ self.pointing_device.move_to_object(obj) self.pointing_device.press() time.sleep(3) self.pointing_device.release() def type_message(self, message): """Select and type message in new message text area in messages page :parameter message: the message to type """ text_entry = self.get_newmessage_textarea() self.pointing_device.click_object(text_entry) text_entry.focus.wait_for(True) time.sleep(.3) text_entry.write(str(message)) self.logger.info( 'typed: "{}" expected: "{}"'.format(text_entry.text, message)) def type_contact_phone_num(self, num_or_contact): """Select and type phone number or contact :parameter num_or_contact: number or contact to type """ text_entry = self.get_newmessage_textfield() self.pointing_device.click_object(text_entry) text_entry.focus.wait_for(True) time.sleep(.3) text_entry.write(str(num_or_contact)) self.keyboard.press_and_release("Enter") self.logger.info( 'typed "{}" expected "{}"'.format( self.get_newmessage_textfield().text, num_or_contact)) def click_send_button(self): """Click the send button on the message page""" button = self.get_send_button() button.enabled.wait_for(True) self.pointing_device.click_object(button) button.enabled.wait_for(False) def start_new_message(self): """Reveal the bottom edge page to start composing a new message""" self.reveal_bottom_edge_page() def enable_messages_selection_mode(self): """Enable the selection mode on the messages page by pressing and holding the first item""" message = self.wait_select_single("MessageDelegateFactory", objectName="message0") self.long_press(message) # FIXME: there should be a better way to detect when the popover is # gone time.sleep(2) # and now click the message again to start with it unselected self.pointing_device.click_object(message) def enable_threads_selection_mode(self): """Enable the selection mode on the threads page by pressing and holding the first item""" # FIXME: there is probably a better way to do this thread = self.select_many("ThreadDelegate")[0] self.long_press(thread) # and now click to unselect it self.pointing_device.click_object(thread) def close_osk(self): """Swipe down to close on-screen keyboard""" if is_maliit_process_running(): osk = UbuntuKeyboard() osk.dismiss() def click_add_contact_icon(self): """Click the add contact icon""" header = self.get_header() header.click_action_button("contactList") def click_add_button(self): """Click add button from toolbar on messages page""" header = self.get_header() header.click_action_button("addContactAction") def click_call_button(self): """Click call button from toolbar on messages page""" header = self.get_header() header.click_action_button("contactCallAction") def click_threads_header_delete(self): """Click the header action 'Delete' on Messages view""" self.click_header_action('selectionModeDeleteAction') def click_threads_header_cancel(self): """Click the header action 'Cancel' on Messages view""" self.get_header().click_custom_back_button() def click_threads_header_settings(self): """Click the header action 'Settings' on main view""" self.click_header_action('settingsAction') def click_messages_header_delete(self): """Click the header action 'Delete' on Messages view""" self.click_header_action('selectionModeDeleteAction') def click_messages_header_cancel(self): """Click the header action 'Cancel' on Messages view""" self.get_header().click_custom_back_button() def delete_thread(self, phone_number): """Delete thread containing specified phone number. :parameter phone_number: phone number of thread to delete :parameter direction: right or left, the direction to swipe to delete """ thread = self.get_thread_from_number(phone_number) thread.swipe_to_delete() # wait for the animation to end time.sleep(1) thread.confirm_removal() def delete_message(self, text): """Deletes message with specified text. :parameter text: the text of the message you want to delete. :parameter direction: right or left, the direction to swipe to delete. """ message = self.get_message(text) message.swipe_to_delete() message.confirm_removal() @autopilot_logging.log_action(logger.info) def send_message(self, numbers, message, check_sent=True): """Write a new message and send it. :param numbers: phone numbers of contacts to send message to. :param message: the message to be sent. """ self.start_new_message() # type address number for number in numbers: self.type_contact_phone_num(number) self.keyboard.press_and_release("Enter") self.type_message(message) old_message_count = self.get_multiple_selection_list_view().count self.click_send_button() thread_bubble = None if (check_sent): self.get_multiple_selection_list_view().count.wait_for( old_message_count + 1) thread_bubble = self.get_message(message) return thread_bubble def _get_page(self, page_type, page_name): page = self.wait_select_single( page_type, objectName=page_name, active=True) return page def get_new_recipient_page(self): return self._get_page(NewRecipientPage, 'newRecipientPage') def open_settings_page(self): self.click_threads_header_settings() settings_page = self.wait_select_single(SettingsPage) settings_page.active.waitFor(True) return settings_page def get_swipe_item_demo(self): return self.wait_select_single( 'SwipeItemDemo', objectName='swipeItemDemo', parentActive=True) def reveal_bottom_edge_page(self): """Bring the bottom edge page to the screen""" try: start_x = (self.globalRect.x + (self.globalRect.width * 0.5)) start_y = (self.globalRect.y + self.height) stop_y = start_y - (self.height * 0.7) self.pointing_device.drag(start_x, start_y, start_x, stop_y, rate=2) self.composingNewMessage.wait_for(True) except StateNotFoundError: logger.error('BottomEdge element not found.') raise class MainPage(MainView): """Autopilot helper for the Main Page.""" def get_thread_count(self): """Return the number of message threads.""" return self.select_single( 'MultipleSelectionListView', objectName='threadList').count @autopilot_logging.log_action(logger.info) def open_thread(self, participants): """Opens the thread with the given participants.""" """FIXME: right now it only supports 1-1 conversations""" thread = self.select_single( ThreadDelegate, objectName='thread{}'.format(participants)) self.pointing_device.click_object(thread) root = self.get_root_instance() return root.wait_select_single(Messages, firstParticipantId=participants) class Messages(toolkit_emulators.UbuntuUIToolkitEmulatorBase): """Autopilot helper for the Messages Page.""" def get_messages_count(self): """Return the number of meesages.""" return self.get_list_view().count @autopilot_logging.log_action(logger.info) def select_messages(self, *indexes): """Select messages. :param indexes: The indexes of the messages to select. The most recently received message has the 0 index, and the oldest message has the higher index. """ for index in indexes: message_delegate = self._get_message_delegate(index) self.pointing_device.click_object(message_delegate) def scroll_list(self): list_view = self.get_list_view() x, y, width, height = list_view.globalRect start_x = stop_x = x + (width / 2) start_y = y + 10 stop_y = y + height - 10 self.pointing_device.drag(start_x, start_y, stop_x, stop_y) def _get_message_delegate(self, index): return self.wait_select_single( 'MessageDelegateFactory', objectName='message{}'.format(index)) def _long_press_to_select_message(self, message): # XXX We used to leave the pointing device pressed for three seconds, # but that failed some times on Jenkins. So now we are leaving it # pressed until we are in selection mode. The behavior is almost the # same, and if it keeps failing in Jenkins we will get more # information to understand the error. --elopio - 2014-03-24 self.pointing_device.move_to_object(message) self.pointing_device.press() self.selectionMode.wait_for(True) self.pointing_device.release() def get_messages(self): """Return a list with the information of the messages. Each item of the returned list is a tuple of (date, text). """ messages = [] # TODO return the messages in the same order that they are displayed. # --elopio - 2014-03-14 for index in range(self.get_messages_count()): message_delegate = self._get_message_delegate(index) date = message_delegate.select_single( objectName='messageDate').text text = message_delegate.select_single( objectName='messageText').text messages.append((date, text)) return messages def get_text_area_text(self): return self.wait_select_single(objectName='messageTextArea').text def get_list_view(self): """Returns the messages list view""" return self.wait_select_single( 'MessagesListView', objectName='messageList') class SettingsPage(toolkit_emulators.UbuntuUIToolkitEmulatorBase): """Autopilot helper for the settings page""" def get_mms_group_chat(self): return self.wait_select_single(objectName="mmsGroupChatEnabled") def toggle_mms_group_chat(self): self.pointing_device.click_object(self.get_mms_group_chat()) class ListItemWithActions(_common.UbuntuUIToolkitCustomProxyObjectBase): def confirm_removal(self): deleteButton = self.wait_select_single(name='delete') self.pointing_device.click_object(deleteButton) def swipe_to_delete(self): x, y, width, height = self.globalRect start_x = x + (width * 0.2) stop_x = x + (width * 0.8) start_y = stop_y = y + (height // 2) self.pointing_device.drag(start_x, start_y, stop_x, stop_y) def active_action(self, action_index): action_margin = ((self.actionWidth / 5) * 2) x_offset = ((self.actionWidth + action_margin) * action_index) x_offset += self.actionThreshold x, y, width, height = self.globalRect start_x = x + (width * 0.5) stop_x = start_x - x_offset start_y = stop_y = y + (height // 2) self.pointing_device.drag(start_x, start_y, stop_x, stop_y) class ThreadDelegate(ListItemWithActions): """Autopilot helper for ThreadDelegate.""" class MessageDelegateFactory(ListItemWithActions): """Autopilot helper for the MessageDelegateFactory.""" class MessagingContactViewPage(address_book.ContactViewPage): """Autopilot custom proxy object for MessagingContactViewPage component.""" def message_phone(self, index): phone_group = self.select_single( 'ContactDetailGroupWithTypeView', objectName='phones') call_buttons = phone_group.select_many( objectName="message-contact") self.pointing_device.click_object(call_buttons[index]) class NewRecipientPage(toolkit_emulators.UbuntuUIToolkitEmulatorBase): """Autopilot custom proxy object for NewRecipientPage components.""" def _click_button(self, button): """Generic way to click a button""" self.visible.wait_for(True) button.visible.wait_for(True) self.pointing_device.click_object(button) return button def open_contact(self, index): contact_delegate = self._get_contact_delegate(index) self.pointing_device.click_object(contact_delegate) return self.get_root_instance().select_single( MessagingContactViewPage, objectName='contactViewPage') def _get_contact_delegate(self, index): contact_delegates = self._get_sorted_contact_delegates() return contact_delegates[index] def _get_sorted_contact_delegates(self): contact_delegates = self.select_many('ContactDelegate', visible=True) return sorted( contact_delegates, key=lambda delegate: delegate.globalRect.y) messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/__init__.py0000644000015600001650000000063112674565025026572 0ustar pbuserpbgroup00000000000000# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- # Copyright 2012 - 2014 Canonical # # This file is part of messaging-app. # # messaging-app 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. """messaging-app autopilot tests and emulators - top level package.""" messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/tests/0000755000015600001650000000000012674565500025621 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/tests/__init__.py0000644000015600001650000000625112674565025027740 0ustar pbuserpbgroup00000000000000# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- # Copyright 2012-2014 Canonical # # This file is part of messaging-app. # # messaging-app 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. """Messaging App autopilot tests.""" from autopilot.input import Mouse, Touch, Pointer from autopilot.matchers import Eventually from autopilot.platform import model from autopilot.testcase import AutopilotTestCase from testtools.matchers import Equals from ubuntuuitoolkit import emulators as toolkit_emulators from messaging_app import emulators, helpers import os import logging import subprocess logger = logging.getLogger(__name__) # ensure we have an ofono account; we assume that we have these tools, # otherwise we consider this a test failure (missing dependencies) helpers.ensure_ofono_account() class MessagingAppTestCase(AutopilotTestCase): """A common test case class that provides several useful methods for Messaging App tests. """ # Don't use keyboard on desktop if model() == 'Desktop': try: subprocess.call(['/sbin/initctl', 'stop', 'maliit-server']) except: pass if model() == 'Desktop': scenarios = [ ('with mouse', dict(input_device_class=Mouse)), ] else: scenarios = [ ('with touch', dict(input_device_class=Touch)), ] local_location = '../../src/messaging-app' def setUp(self, parameter=""): self.pointing_device = Pointer(self.input_device_class.create()) super(MessagingAppTestCase, self).setUp() subprocess.call(['pkill', 'messaging-app']) if os.path.exists(self.local_location): self.launch_test_local(parameter) else: self.launch_test_installed(parameter) self.assertThat(self.main_view.visible, Eventually(Equals(True))) def launch_test_local(self, parameter): self.app = self.launch_test_application( self.local_location, parameter, app_type='qt', emulator_base=toolkit_emulators.UbuntuUIToolkitEmulatorBase) def launch_test_installed(self, parameter): if model() == 'Desktop': self.app = self.launch_test_application( 'messaging-app', parameter, emulator_base=toolkit_emulators.UbuntuUIToolkitEmulatorBase) else: self.app = self.launch_upstart_application( 'messaging-app', parameter, emulator_base=toolkit_emulators.UbuntuUIToolkitEmulatorBase) @property def main_view(self): return self.app.select_single(emulators.MainView) def verify_thread(self, phone_num, message): """Check that the thread with given number and message exists""" # verify our number mess_thread = self.main_view.get_thread_from_number(phone_num) self.assertThat(mess_thread.phoneNumber, Equals(phone_num)) # verify our text self.assertThat(mess_thread.textMessage, Equals(message)) return mess_thread messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/tests/test_messaging.py0000644000015600001650000005677512674565025031235 0ustar pbuserpbgroup00000000000000# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- # Copyright 2012, 2014 Canonical # # This file is part of messaging-app. # # messaging-app 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. """Tests for the Messaging App using ofono-phonesim""" from __future__ import absolute_import import time from autopilot.matchers import Eventually from testtools.matchers import Equals, HasLength, Not from testtools import skip from messaging_app import emulators from messaging_app import fixture_setup from messaging_app import helpers from messaging_app.tests import MessagingAppTestCase import ubuntuuitoolkit from gi.repository import Gio class BaseMessagingTestCase(MessagingAppTestCase): def setUp(self): test_setup = fixture_setup.MessagingTestEnvironment() self.useFixture(test_setup) super(BaseMessagingTestCase, self).setUp() # no initial messages self.thread_list = self.app.select_single(objectName='threadList') self.assertThat(self.thread_list.visible, Equals(True)) self.assertThat(self.thread_list.count, Equals(0)) class TestMessaging(BaseMessagingTestCase): """Tests for the communication panel.""" def test_helper_get_contact_list_view(self): """test get_contact_list_view() helper is working""" # open the chat window self.main_view.start_new_message() self.main_view.click_add_contact_icon() # pop up the contact list to choose recipient contact_view = self.main_view.get_contact_list_view() self.assertThat(contact_view.visible, Eventually(Equals(True))) def test_write_new_message_to_group(self): recipient_list = ["123", "321"] self.main_view.start_new_message() # type address number for number in recipient_list: self.main_view.type_contact_phone_num(number) self.keyboard.press_and_release("Enter") # check if recipients match multircpt_entry = self.main_view.get_newmessage_multirecipientinput() self.assertThat( multircpt_entry.get_properties()['recipientCount'], Eventually(Equals(len(recipient_list))) ) def test_receive_message(self): """Verify that we can receive a text message""" # receive an sms message phone_num = '0815' message = 'hello to Ubuntu' helpers.receive_sms(phone_num, message) # verify that we got the message self.assertThat(self.thread_list.count, Eventually(Equals(1))) self.verify_thread(phone_num, message) def test_write_new_message(self): """Verify we can write and send a new text message""" phone_num = '123' message = 'hello from Ubuntu' self.main_view.send_message([phone_num], message) # switch back to main page with thread list self.main_view.close_osk() self.main_view.go_back() # verify the main page with the contacts that have sent messages is # visible self.assertThat(self.thread_list.visible, Eventually(Equals(True))) # verify a message in the thread list self.assertThat(self.thread_list.count, Equals(1)) # verify the thread self.verify_thread(phone_num, message) def test_deleting_message_long_press(self): """Verify we can delete a message with a long press on the message""" phone_num = '555-555-4321' message = 'delete me' self.main_view.send_message([phone_num], message) self.main_view.close_osk() # get bubble after close the osk to make sure that it has the # new position bubble = self.main_view.get_message(message) # long press on bubble self.main_view.long_press(bubble) # select delete button self.main_view.click_messages_header_delete() # verify message is deleted bubble.wait_until_destroyed() def test_cancel_deleting_message_long_press(self): """Verify we can cancel deleting a message with a long press""" phone_num = '5555551234' message = 'do not delete' self.main_view.send_message([phone_num], message) self.main_view.close_osk() # get bubble after close the osk to make sure that it has the # new position bubble = self.main_view.get_message(message) # long press on bubble and verify cancel button does not delete message self.main_view.long_press(bubble) self.main_view.click_messages_header_cancel() time.sleep(5) # on a slow machine it might return a false positive # the bubble must exist bubble = self.main_view.get_message(message) def test_open_received_message(self): """Verify we can open a txt message we have received""" number = '5555555678' message = 'open me' # receive message helpers.receive_sms(number, message) self.assertThat(self.thread_list.count, Eventually(Equals(1))) # click message thread mess_thread = self.verify_thread(number, message) self.pointing_device.click_object(mess_thread) self.main_view.get_message(message) # send new message self.main_view.type_message('{} 2'.format(message)) self.main_view.click_send_button() # verify both messages are seen in list self.main_view.get_message('{} 2'.format(message)) self.main_view.get_message(message) def test_header_delete_message(self): """Verify we can use the toolbar to delete a message""" phone_num = '555-555-4321' message = 'delete me' bubble = self.main_view.send_message([phone_num], message) self.main_view.close_osk() # press on select button and message then delete self.main_view.enable_messages_selection_mode() self.pointing_device.click_object(bubble) self.main_view.click_messages_header_delete() # verify messsage is gone bubble.wait_until_destroyed() def test_delete_message_without_selecting_a_message(self): """Verify we only delete messages that have been selected""" phone_num = '555-555-4321' message = 'delete me' self.main_view.send_message([phone_num], message) self.main_view.close_osk() # press on select button then delete self.main_view.enable_messages_selection_mode() # click the delete button self.main_view.click_messages_header_delete() # verify messsage is not gone time.sleep(5) # wait 5 seconds, the emulator is slow self.main_view.get_message(message) def test_receive_text_with_letters_in_phone_number(self): """verify we can receive a text message with letters for a phone #""" number = 'letters' message = 'open me' # receive message helpers.receive_sms(number, message) self.assertThat(self.thread_list.count, Eventually(Equals(1))) # click message thread # phonesim sends text with number as letters@ mess_thread = self.main_view.get_thread_from_number('letters@') self.pointing_device.click_object(mess_thread) self.main_view.get_message(message) # send new message self.main_view.type_message('{} 2'.format(message)) self.main_view.click_send_button() # verify both messages are seen in list self.main_view.get_message('{} 2'.format(message)) self.main_view.get_message(message) def test_cancel_delete_thread_from_main_view(self): """Verify we can cancel deleting a message thread""" phone_num = '123' message = 'hello from Ubuntu' self.main_view.send_message([phone_num], message) # switch back to main page with thread list self.main_view.close_osk() self.main_view.go_back() # verify the main page with the contacts that have sent messages is # visible self.assertThat(self.thread_list.visible, Eventually(Equals(True))) # verify a message in the thread list self.assertThat(self.thread_list.count, Equals(1)) # verify our number self.verify_thread(phone_num, message) # use select button in toolbar self.main_view.enable_threads_selection_mode() # click cancel button self.main_view.click_threads_header_cancel() # verify the thread was not deleted self.verify_thread(phone_num, message) def test_delete_thread_from_main_view(self): """Verify we can delete a message thread""" phone_num = '123' message = 'hello from Ubuntu' self.main_view.send_message([phone_num], message) # switch back to main page with thread list self.main_view.close_osk() self.main_view.go_back() # verify the main page with the contacts that have sent messages is # visible self.assertThat(self.thread_list.visible, Eventually(Equals(True))) # verify a message in the thread list self.assertThat(self.thread_list.count, Equals(1)) # verify the thread mess_thread = self.verify_thread(phone_num, message) # use select button in toolbar self.main_view.enable_threads_selection_mode() # click thread we want to delete self.pointing_device.click_object(mess_thread) # click cancel button self.main_view.click_threads_header_delete() # verify our text was deleted mess_thread.wait_until_destroyed() def test_delete_message_thread_swipe_right(self): """Verify we can delete a message thread by swiping right""" # receive an sms message helpers.receive_sms('0815', 'hello to Ubuntu') # verify that we got the message self.assertThat(self.thread_list.count, Eventually(Equals(1))) # delete thread by swiping self.main_view.delete_thread('0815') self.assertThat(self.thread_list.count, Eventually(Equals(0))) def test_delete_message_swipe_right(self): """Verify we can delete a message by swiping right""" phone_num = '555-555-4321' message = 'delete me okay' self.main_view.send_message([phone_num], message) # delete message self.main_view.delete_message(message) list_view = self.main_view.get_multiple_selection_list_view() self.assertThat(list_view.count, Eventually(Equals(0))) # FIXME: copy and use MockNotificationSystem fixture from dialer-app # once bug #1453958 is fixed @skip("Disabled due to bug #1453958") def test_check_multiple_messages_received(self): """Verify that received messages are correctly displayed""" main_page = self.main_view.select_single(emulators.MainPage) recipient = '123456' helpers.receive_sms(recipient, 'first message') # wait for the thread main_page.get_thread_from_number(recipient) messages_page = main_page.open_thread(recipient) for i in list(reversed(range(10))): helpers.receive_sms(recipient, 'message %s' % i) list_view = messages_page.get_list_view() self.assertThat(list_view.count, Eventually(Equals(11))) messages = messages_page.get_messages() for i in range(10): expectedMessage = 'message %s' % i self.assertThat(messages[i][1], Equals(expectedMessage)) def test_open_new_conversation_with_group_participant(self): recipient_list = ["123", "321"] self.main_view.send_message(recipient_list, "hello from Ubuntu") self.main_view.click_header_action('groupChatAction') participant = self.main_view.select_single( objectName='participant1') self.pointing_device.click_object(participant) # We use 'title' here because participants is variant and not # accessible from here self.main_view.wait_select_single(emulators.Messages, title=recipient_list[1]) def test_messages_with_color_name_ids(self): """Verify that we can open threads with numbers matching color names""" # receive an sms message phone_num = 'Orange' message = 'hello to Ubuntu' helpers.receive_sms(phone_num, message) # verify that we got the message self.assertThat(self.thread_list.count, Eventually(Equals(1))) # verify thread self.verify_thread(phone_num, message) class MessagingTestCaseWithExistingThread(MessagingAppTestCase): def setUp(self): test_setup = fixture_setup.MessagingTestEnvironment( use_testdata_db=True) self.useFixture(test_setup) super(MessagingTestCaseWithExistingThread, self).setUp() self.main_page = self.main_view.select_single(emulators.MainPage) self.number = '08154' def receive_messages(self, count=3): # send the required number of messages. Reversed because on the QML, # the one with the 0 index is the latest received. messages = [] message_indexes = list(reversed(range(count))) for index in message_indexes: message_text = 'test message {}'.format(index) helpers.receive_sms( self.number, message_text) time.sleep(1) # Prepend to make sure that the indexes match. messages.insert(0, message_text) # Wait for the thread. self.main_page.get_thread_from_number(self.number) return messages def test_delete_multiple_messages(self): """Verify we can delete multiple messages""" messages_page = self.main_page.open_thread(self.number) messages = messages_page.get_messages() self.main_view.enable_messages_selection_mode() messages_page.select_messages(1, 2) self.main_view.click_messages_header_delete() remaining_messages = messages_page.get_messages() self.assertThat(remaining_messages, HasLength(1)) remaining_message = remaining_messages[0] self.assertEqual( remaining_message, messages[0]) def test_scroll_to_new_message(self): """Verify that the view is scrolled to display a new message""" # use the number of an existing thread to avoid OSD problems self.number = '08155' messages_page = self.main_page.open_thread(self.number) # scroll the list to display older messages messages_page.scroll_list() # now receive a new message self.receive_messages(1) # and make sure that the list gets scrolled to the new message again list_view = messages_page.get_list_view() self.assertThat(list_view.atYEnd, Eventually(Equals(True))) class MessagingTestSearch(MessagingAppTestCase): def setUp(self): test_setup = fixture_setup.MessagingTestEnvironment( use_testdata_db=True) self.useFixture(test_setup) super(MessagingTestSearch, self).setUp() self.thread_list = self.app.select_single(objectName='threadList') def test_search_for_message(self): def count_visible_threads(threads): count = 0 for thread in threads: if thread.height != 0: count += 1 return count # verify that we got the messages self.assertThat(self.thread_list.count, Eventually(Equals(5))) threads = self.thread_list.select_many('ThreadDelegate') # tap search self.main_view.click_header_action('searchAction') text_field = self.main_view.select_single( ubuntuuitoolkit.TextField, objectName='searchField') text_field.write('Ubuntu2') self.assertThat( lambda: count_visible_threads(threads), Eventually(Equals(3))) text_field.clear() text_field.write('Ubuntu1') self.assertThat( lambda: count_visible_threads(threads), Eventually(Equals(2))) text_field.clear() text_field.write('Ubuntu') self.assertThat( lambda: count_visible_threads(threads), Eventually(Equals(5))) text_field.clear() text_field.write('08154') self.assertThat( lambda: count_visible_threads(threads), Eventually(Equals(1))) text_field.clear() text_field.write('%') # as we are testing for items NOT to appear, there is no other way # other than sleeping for awhile before checking if the threads are # visible time.sleep(5) self.assertThat(count_visible_threads(threads), Equals(0)) class MessagingTestCaseWithArgument(MessagingAppTestCase): def setUp(self): test_setup = fixture_setup.MessagingTestEnvironment() self.useFixture(test_setup) super(MessagingTestCaseWithArgument, self).setUp( parameter="message:///5555559876?text=text%20message") def test_launch_app_with_predefined_text(self): self.messages_view = self.main_view.select_single( emulators.Messages, text='text message') class MessagingTestCaseWithArgumentNoSlashes(MessagingAppTestCase): def setUp(self): test_setup = fixture_setup.MessagingTestEnvironment() self.useFixture(test_setup) super(MessagingTestCaseWithArgumentNoSlashes, self).setUp( parameter="message:5555559876?text=text%20message") def test_launch_app_with_predefined_text_no_slashes(self): self.messages_view = self.main_view.select_single( emulators.Messages, firstParticipantId='5555559876', text='text message') class MessagingTestSettings(MessagingAppTestCase): def setUp(self): test_setup = fixture_setup.MessagingTestEnvironment( use_temporary_user_conf=False) self.useFixture(test_setup) super(MessagingTestSettings, self).setUp() def test_mms_group_chat_settings(self): gsettings = Gio.Settings.new('com.ubuntu.phone') key = 'mms-group-chat-enabled' settingsPage = self.main_view.open_settings_page() self.assertThat(settingsPage.visible, Eventually(Equals(True))) option = settingsPage.get_mms_group_chat() # read the current value and make sure the checkbox reflects it settingsValue = gsettings.get_boolean(key) self.assertThat(option.checked, Eventually(Equals(settingsValue))) # now toggle it and check that the value changes oldValue = settingsValue settingsPage.toggle_mms_group_chat() self.assertThat(option.checked, Eventually(Not(Equals(oldValue)))) # give it some time time.sleep(2) settingsValue = gsettings.get_boolean(key) self.assertThat(option.checked, Eventually(Equals(gsettings.get_boolean(key)))) # just reset it to the previous value settingsPage.toggle_mms_group_chat() class MessagingTestSwipeToDeleteDemo(MessagingAppTestCase): def setUp(self): test_setup = fixture_setup.MessagingTestEnvironment( use_empty_config=True) self.useFixture(test_setup) super(MessagingTestSwipeToDeleteDemo, self).setUp() def test_write_new_message_with_tutorial(self): """Verify if the tutorial appears after send a message""" phone_num = '123' message = 'hello from Ubuntu' self.main_view.send_message([phone_num], message) self.main_view.close_osk() swipe_item_demo = self.main_view.get_swipe_item_demo() self.assertThat(swipe_item_demo.enabled, Eventually(Equals(True))) self.assertThat(swipe_item_demo.necessary, Eventually(Equals(True))) got_it_button = swipe_item_demo.select_single( 'Button', objectName='gotItButton') self.pointing_device.click_object(got_it_button) self.assertThat(swipe_item_demo.enabled, Eventually(Equals(False))) self.assertThat(swipe_item_demo.necessary, Eventually(Equals(False))) def test_receive_new_message_with_tutorial(self): """Verify if the tutorial appears after receive a message""" thread_list = self.app.select_single(objectName='threadList') self.assertThat(thread_list.visible, Equals(True)) self.assertThat(thread_list.count, Equals(0)) number = '5555555678' message = 'open me' # receive message helpers.receive_sms(number, message) # verify that we got the message self.assertThat(thread_list.count, Eventually(Equals(1))) # click message thread mess_thread = self.verify_thread(number, message) self.pointing_device.click_object(mess_thread) swipe_item_demo = self.main_view.get_swipe_item_demo() self.assertThat(swipe_item_demo.enabled, Eventually(Equals(True))) self.assertThat(swipe_item_demo.necessary, Eventually(Equals(True))) got_it_button = swipe_item_demo.select_single( 'Button', objectName='gotItButton') self.pointing_device.click_object(got_it_button) self.assertThat(swipe_item_demo.enabled, Eventually(Equals(False))) self.assertThat(swipe_item_demo.necessary, Eventually(Equals(False))) def test_write_new_message_with_tutorial_no_network(self): """Verify if the tutorial appears and is not stuck by the popup""" helpers.set_network_status("unregistered") phone_num = '123' message = 'hello from Ubuntu' self.main_view.send_message([phone_num], message, False) self.main_view.close_osk() closeButton = self.main_view.wait_select_single( 'Button', objectName='closeNoNetworkDialog') self.pointing_device.click_object(closeButton) closeButton.wait_until_destroyed() swipe_item_demo = self.main_view.get_swipe_item_demo() self.assertThat(swipe_item_demo.enabled, Eventually(Equals(True))) self.assertThat(swipe_item_demo.necessary, Eventually(Equals(True))) got_it_button = swipe_item_demo.select_single( 'Button', objectName='gotItButton') self.pointing_device.click_object(got_it_button) self.assertThat(swipe_item_demo.enabled, Eventually(Equals(False))) self.assertThat(swipe_item_demo.necessary, Eventually(Equals(False))) class MessagingTestSendAMessageFromContactView(MessagingAppTestCase): def setUp(self): test_setup = fixture_setup.MessagingTestEnvironment() self.useFixture(test_setup) qcontact_memory = fixture_setup.UseMemoryContactBackend() self.useFixture(qcontact_memory) preload_vcards = fixture_setup.PreloadVcards() self.useFixture(preload_vcards) super(MessagingTestSendAMessageFromContactView, self).setUp() def test_message_a_contact_from_contact_view(self): # start a new message self.main_view.start_new_message() self.main_view.click_add_contact_icon() # select the first phone from first contact in the list new_recipient_page = self.main_view.get_new_recipient_page() contact_view_page = new_recipient_page.open_contact(0) contact_view_page.message_phone(0) # message page became active again messages_page = self.main_view.get_messages_page() self.assertThat(messages_page.active, Eventually(Equals(True))) # check if the contact was added in the recipient list multircpt_entry = self.main_view.get_newmessage_multirecipientinput() self.assertThat( multircpt_entry.get_properties()['recipientCount'], Eventually(Equals(1)) ) messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/fixture_setup.py0000644000015600001650000002217412674565025027747 0ustar pbuserpbgroup00000000000000# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- # Copyright 2014 Canonical # # This file is part of messaging-app. # # messaging-app 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. import dbus import os import subprocess import shutil import tempfile import dbusmock from autopilot.platform import model import fixtures from ubuntuuitoolkit import fixture_setup from messaging_app import helpers class MessagingTestEnvironment(fixtures.Fixture): def __init__(self, use_testdata_db=False, use_empty_config=False, use_temporary_user_conf=True): self.use_testdata_db = use_testdata_db self.use_empty_config = use_empty_config self.use_temporary_user_conf = use_temporary_user_conf def setUp(self): super(MessagingTestEnvironment, self).setUp() self.useFixture(OfonoPhoneSIM()) if self.use_testdata_db: self.useFixture(FillCustomSmsHistory()) else: self.useFixture(UseEmptySmsHistory()) # check for the configuration file if self.use_temporary_user_conf and self.use_empty_config: self.useFixture(UseEmptyConfiguration()) elif self.use_temporary_user_conf: self.useFixture(UseDefaultConfiguration()) self.useFixture(RespawnService()) self.useFixture(MockNotificationSystem()) telephonyProtocolsDir = '/usr/share/telephony-service/protocols' self.useFixture( fixture_setup.InitctlEnvironmentVariable( TELEPHONY_SERVICE_PROTOCOLS_DIR=telephonyProtocolsDir) ) self.useFixture( fixtures.EnvironmentVariable( 'TELEPHONY_SERVICE_PROTOCOLS_DIR', newvalue=telephonyProtocolsDir) ) class FillCustomSmsHistory(fixtures.Fixture): history_service_dir = os.path.expanduser("~/.local/share/history-service/") history_db = "history.sqlite" testdata_sys = "/usr/lib/python3/dist-packages/messaging_app/testdata/" testdata_local = "messaging_app/testdata/" database_path = '/tmp/' + history_db prefilled_history_local = os.path.join(testdata_local, history_db) prefilled_history_system = os.path.join(testdata_sys, history_db) def setUp(self): super(FillCustomSmsHistory, self).setUp() self.addCleanup(self._clear_test_data) self.addCleanup(self._kill_service_to_respawn) self._clear_test_data() self._prepare_history_data() self._kill_service_to_respawn() self._start_service_with_custom_data() def _prepare_history_data(self): if os.path.exists(self.prefilled_history_local): shutil.copy(self.prefilled_history_local, self.database_path) else: shutil.copy(self.prefilled_history_system, self.database_path) def _clear_test_data(self): if os.path.exists(self.database_path): os.remove(self.database_path) def _kill_service_to_respawn(self): subprocess.call(['pkill', 'history-daemon']) def _start_service_with_custom_data(self): os.environ['HISTORY_SQLITE_DBPATH'] = self.database_path with open(os.devnull, 'w') as devnull: subprocess.Popen(['history-daemon'], stderr=devnull) class UseEmptySmsHistory(FillCustomSmsHistory): database_path = ':memory:' def setUp(self): super(UseEmptySmsHistory, self).setUp() def _prepare_history_data(self): # just avoid doing anything self.database_path = ':memory:' def _clear_test_data(self): # don't do anything self.database_path = '' class UseEmptyConfiguration(fixtures.Fixture): def setUp(self): super(UseEmptyConfiguration, self).setUp() self.user_home_dir = tempfile.mkdtemp( suffix='', prefix='messaging-app') self.user_config_dir = self.user_home_dir + '/.config' self.app_config_dir = ( self.user_config_dir + '/com.ubuntu.messaging-app/') os.makedirs(self.app_config_dir) self.useFixture( fixtures.EnvironmentVariable( 'HOME', newvalue=self.user_home_dir) ) self.useFixture( fixtures.EnvironmentVariable( 'XDG_CONFIG_HOME', newvalue=self.user_config_dir) ) self.useFixture( fixture_setup.InitctlEnvironmentVariable( HOME=self.user_home_dir) ) self.useFixture( fixture_setup.InitctlEnvironmentVariable( XDG_CONFIG_HOME=self.user_config_dir) ) def tearDown(self): super(UseEmptyConfiguration, self).tearDown() shutil.rmtree(self.user_home_dir) class UseDefaultConfiguration(UseEmptyConfiguration): def setUp(self): super(UseDefaultConfiguration, self).setUp() config_file_path = (self.app_config_dir + '/MessagingApp.conf') with open(config_file_path, 'w') as config_file: config_file.write('[General]\nhintNecessary=false\n') class RespawnService(fixtures.Fixture): def setUp(self): super(RespawnService, self).setUp() self.addCleanup(self._kill_services_to_respawn) self._kill_services_to_respawn() def _kill_services_to_respawn(self): subprocess.call(['pkill', '-f', 'telephony-service-handler']) # on desktop, notify-osd may generate persistent popups (like for "SMS # received"), don't make that stay around for the tests subprocess.call(['pkill', '-f', 'notify-osd']) class OfonoPhoneSIM(fixtures.Fixture): def setUp(self): super(OfonoPhoneSIM, self).setUp() if not self._is_phonesim_running(): raise RuntimeError('ofono-phonesim is not setup') self.addCleanup(self._restore_sim_connection) self._set_modem_on_phonesim() helpers.set_network_status("registered") def _is_phonesim_running(self): try: bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object('org.ofono', '/'), 'org.ofono.Manager') modems = manager.GetModems() for path, properties in modems: if path == '/phonesim': return True return False except dbus.exceptions.DBusException: return False def _set_modem_on_phonesim(self): subprocess.call( ['mc-tool', 'update', 'ofono/ofono/account0', 'string:modem-objpath=/phonesim']) subprocess.call(['mc-tool', 'reconnect', 'ofono/ofono/account0']) def _restore_sim_connection(self): subprocess.call( ['mc-tool', 'update', 'ofono/ofono/account0', 'string:modem-objpath=/ril_0']) subprocess.call(['mc-tool', 'reconnect', 'ofono/ofono/account0']) class MockNotificationSystem(fixtures.Fixture): def setUp(self): super().setUp() # only mock the notification system on desktop, on ubuntu touch the # notification dbus service is embedded into unity if model() == 'Desktop': self.addCleanup(self._stop_mock) self._kill_notification_service() # start the mock service (self.process, self.obj) = \ dbusmock.DBusTestCase.spawn_server_template( 'notification_daemon') else: self.addCleanup(self._clear_existing_notifications) def _stop_mock(self): self.process.terminate() self.process.wait() def _kill_notification_service(self): """Kill the notification daemon.""" subprocess.call(['pkill', '-f', 'notify-osd']) def _clear_existing_notifications(self): """Kill processes that might be displaying notifications""" bus = dbus.SessionBus() indicator = bus.get_object('com.canonical.TelephonyServiceIndicator', '/com/canonical/TelephonyServiceIndicator') indicator.ClearNotifications() class UseMemoryContactBackend(fixtures.Fixture): def setUp(self): super().setUp() self.useFixture( fixtures.EnvironmentVariable( 'QTCONTACTS_MANAGER_OVERRIDE', newvalue='memory') ) self.useFixture( fixture_setup.InitctlEnvironmentVariable( QTCONTACTS_MANAGER_OVERRIDE='memory') ) class PreloadVcards(fixtures.Fixture): AUTOPILOT_DIR = "/usr/lib/python3/dist-packages/messaging_app" VCARD_PATH_BIN = ("%s/testdata/vcard.vcf" % AUTOPILOT_DIR) VCARD_PATH_DEV = os.path.abspath("../data/vcard.vcf") def setUp(self): super().setUp() vcard_full_path = PreloadVcards.VCARD_PATH_BIN if os.path.isfile(PreloadVcards.VCARD_PATH_DEV): vcard_full_path = PreloadVcards.VCARD_PATH_DEV self.useFixture( fixtures.EnvironmentVariable( 'QTCONTACTS_PRELOAD_VCARD', newvalue=vcard_full_path) ) self.useFixture( fixture_setup.InitctlEnvironmentVariable( QTCONTACTS_PRELOAD_VCARD=vcard_full_path) ) messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/testdata/0000755000015600001650000000000012674565500026270 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/testdata/history.sqlite0000644000015600001650000005200012674565025031213 0ustar pbuserpbgroup00000000000000SQLite format 3@ ---   YXT5A;ofono/ofono/account0081542015-02-18T09:51:10+1000-52015-02-18T11:51:10.000UT5A;ofono/ofono/account0081552015-02-18T09:51:19+1000-12015-02-18T11:51:19.000R5A; ofono/ofono/account0081532015-02-04T15:19:46+1000-12015-02-04T15:19:46.000R5A; ofono/ofono/account0081522015-02-04T15:19:46+1000-12015-02-04T15:19:46.000R5A; ofono/ofono/account0081512015-02-04T15:19:46+1000-12015-02-04T15:19:46.000 GGl#5ofono/ofono/account00815508155#5ofono/ofono/account00815408154#5ofono/ofono/account00815308153#5ofono/ofono/account00815208152#5ofono/ofono/account00815108151   %%ytablevoice_eventsvoice_eventsCREATE TABLE voice_events ( accountId varchar(255), threadId varchar(255), eventId varchar(255), senderId varchar(255), timestamp datetime, newEvent bool, duration int, missed bool , remoteParticipant varchar(255))?33%tablethread_participantsthread_participantsCREATE TABLE thread_participants ( accountId varchar(255), threadId varchar(255), type tinyint, participantId varchar(255) )^tablethreadsthreadsCREATE TABLE threads ( accountId varchar(255), threadId varchar(255), type tinyint, lastEventId varchar(255), lastEventTimestamp datetime, count int, unreadCount int )W))ktableschema_versionschema_versionCREATE TABLE schema_version ( version int ) {{99Stabletext_event_attachmentstext_event_attachmentsCREATE TABLE text_event_attachments ( accountId varchar(255), threadId varchar(255), eventId varchar(255), attachmentId varchar(255), contentType varchar(255), filePath varchar(255), status tinyint )9Etriggerthreads_delete_triggerthreadsCREATE TRIGGER threads_delete_trigger AFTER DELETE ON threads FOR EACH ROW BEGIN DELETE FROM thread_participants WHERE accountId=old.accountId AND threadId=old.threadId AND type=old.type; ENDY##ytabletext_eventstext_events CREATE TABLE text_events ( accountId varchar(255), threadId varchar(255), eventId varchar(255), senderId varchar(255), timestamp datetime, newEvent bool, message varchar(512), messageType tinyint, messageStatus tinyint, readTimestamp datetime, subject varchar(256) ) ERT ON voice_events FOR EACH ROW BEGIN UPDATE threads SET count=(SELECT count(eventId) FROM voice_events WHERE accountId=new.accountId AND threadId=new.threadId) WHERE accountId=new.accountId AND threadId=new.threadId AND type=1; UPDATE threads SET unreadCount=(SELECT count(eventId) FROM voice_events WHERE accountId=new.accountId AND threadId=new.threadId AND newEvent='1') WHERE accountId=new.accountId AND threadId=new.threadId AND type=1; UPDATE threads SET lastEventId=(SELECT eventId FROM voice_events WHERE accountId=new.accountId AND threadId=new.threadId ORDER BY timestamp DESC LIMIT 1) WHERE accountId=new.accountId AND threadId=new.threadId AND type=1; UPDATE threads SET lastEventTimestamp=(SELECT timestamp FROM voice_events WHERE accountId=new.accountId AND threadId=new.threadId ORDER BY timestamp DESC LIMIT 1) WHERE accountId=new.accountId AND threadId=new.threadId AND type=1; END f3fC%otriggervoice_events_insert_triggervoice_eventsCREATE TRIGGER voice_events_insert_trigger AFTER INS f C%otriggervoice_events_update_triggervoice_eventsCREATE TRIGGER voice_events_update_trigger AFTER UPD f C%otriggervoice_events_delete_triggervoice_eventsCREATE TRIGGER voice_events_delete_trigger AFTER DEL B A#+triggertext_events_insert_triggertext_eventsCREATE TRIGGER text_events_insert_trigger AFTER INSERT ON text_events FOR EACH ROW BEGIN UPDATE threads SET count=(SELECT count(eventId) FROM B A#+triggertext_events_update_triggertext_eventsCREATE TRIGGER text_events_update_trigger AFTER UPDATE ON text_events FOR EACH ROW BEGIN UPDATE threads SET count=(SELECT count(eventId) FROM ATE ON voice_events FOR EACH ROW BEGIN UPDATE threads SET count=(SELECT count(eventId) FROM voice_events WHERE accountId=new.accountId AND threadId=new.threadId) WHERE accountId=new.accountId AND threadId=new.threadId AND type=1; UPDATE threads SET unreadCount=(SELECT count(eventId) FROM voice_events WHERE accountId=new.accountId AND threadId=new.threadId AND newEvent='1') WHERE accountId=new.accountId AND threadId=new.threadId AND type=1; UPDATE threads SET lastEventId=(SELECT eventId FROM voice_events WHERE accountId=new.accountId AND threadId=new.threadId ORDER BY timestamp DESC LIMIT 1) WHERE accountId=new.accountId AND threadId=new.threadId AND type=1; UPDATE threads SET lastEventTimestamp=(SELECT timestamp FROM voice_events WHERE accountId=new.accountId AND threadId=new.threadId ORDER BY timestamp DESC LIMIT 1) WHERE accountId=new.accountId AND threadId=new.threadId AND type=1; ENDETE ON voice_events FOR EACH ROW BEGIN UPDATE threads SET count=(SELECT count(eventId) FROM voice_events WHERE accountId=old.accountId AND threadId=old.threadId) WHERE accountId=old.accountId AND threadId=old.threadId AND type=1; UPDATE threads SET unreadCount=(SELECT count(eventId) FROM voice_events WHERE accountId=old.accountId AND threadId=old.threadId AND newEvent='1') WHERE accountId=old.accountId AND threadId=old.threadId AND type=1; UPDATE threads SET lastEventId=(SELECT eventId FROM voice_events WHERE accountId=old.accountId AND threadId=old.threadId ORDER BY timestamp DESC LIMIT 1) WHERE accountId=old.accountId AND threadId=old.threadId AND type=1; UPDATE threads SET lastEventTimestamp=(SELECT timestamp FROM voice_events WHERE accountId=old.accountId AND threadId=old.threadId ORDER BY timestamp DESC LIMIT 1) WHERE accountId=old.accountId AND threadId=old.threadId AND type=1; ENDtext_events WHERE accountId=new.accountId AND threadId=new.threadId AND messageType!=2) WHERE accountId=new.accountId AND threadId=new.threadId AND type=0; UPDATE threads SET unreadCount=(SELECT count(eventId) FROM text_events WHERE accountId=new.accountId AND threadId=new.threadId AND newEvent='1' AND messageType!=2) WHERE accountId=new.accountId AND threadId=new.threadId AND type=0; UPDATE threads SET lastEventId=(SELECT eventId FROM text_events WHERE accountId=new.accountId AND threadId=new.threadId AND messageType!=2 ORDER BY timestamp DESC LIMIT 1) WHERE accountId=new.accountId AND threadId=new.threadId AND type=0; UPDATE threads SET lastEventTimestamp=(SELECT timestamp FROM text_events WHERE accountId=new.accountId AND threadId=new.threadId AND messageType!=2 ORDER BY timestamp DESC LIMIT 1) WHERE accountId=new.accountId AND threadId=new.threadId AND type=0; ENDtext_events WHERE accountId=new.accountId AND threadId=new.threadId AND messageType!=2) WHERE accountId=new.accountId AND threadId=new.threadId AND type=0; UPDATE threads SET unreadCount=(SELECT count(eventId) FROM text_events WHERE accountId=new.accountId AND threadId=new.threadId AND newEvent='1' AND messageType!=2) WHERE accountId=new.accountId AND threadId=new.threadId AND type=0; UPDATE threads SET lastEventId=(SELECT eventId FROM text_events WHERE accountId=new.accountId AND threadId=new.threadId AND messageType!=2 ORDER BY timestamp DESC LIMIT 1) WHERE accountId=new.accountId AND threadId=new.threadId AND type=0; UPDATE threads SET lastEventTimestamp=(SELECT timestamp FROM text_events WHERE accountId=new.accountId AND threadId=new.threadId AND messageType!=2 ORDER BY timestamp DESC LIMIT 1) WHERE accountId=new.accountId AND threadId=new.threadId AND type=0; ENDuntId AND threadId=old.threadId AND type=0; UPDATE threads SET unreadCount=(SELECT count(eventId) FROM text_events WHERE accountId=old.accountId AND threadId=old.threadId AND newEvent='1' AND messageType!=2) WHERE accountId=old.accountId AND threadId=old.threadId AND type=0; UPDATE threads SET lastEventId=(SELECT eventId FROM text_events WHERE accountId=old.accountId AND threadId=old.threadId AND messageType!=2 ORDER BY timestamp DESC LIMIT 1) WHERE accountId=old.accountId AND threadId=old.threadId AND type=0; UPDATE threads SET lastEventTimestamp=(SELECT timestamp FROM text_events WHERE accountId=old.accountId AND threadId=old.threadId AND messageType!=2 ORDER BY timestamp DESC LIMIT 1) WHERE accountId=old.accountId AND threadId=old.threadId AND type=0; DELETE from text_event_attachments WHERE accountId=old.accountId AND threadId=old.threadId AND eventId=old.eventId; END R A#Ktriggertext_events_delete_triggertext_eventsCREATE TRIGGER text_events_delete_trigger AFTER DELETE ON text_events FOR EACH ROW BEGIN UPDATE threads SET count=(SELECT count(eventId) FROM text_events WHERE accountId=old.accountId AND threadId=old.threadId AND messageType!=2) WHERE accountId=old.acco pw9 Awwc 5A; ofono/ofono/account0081552015-02-18T09:20:04+1000-4081552015-02-18T11:20:04.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-18T09:20:01+1000-3081552015-02-18T11:20:01.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-18T09:19:58+1000-2081552015-02-18T11:19:58.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-18T09:19:56+1000-1081552015-02-18T11:19:56.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-04T15:19:46+1000-1081552015-02-04T15:19:46.000Ubuntu23eb 5A; ofono/ofono/account0081532015-02-04T15:19:46+1000-1081532015-02-04T15:19:46.000Ubuntu2b 5A; ofono/ofono/account0081522015-02-04T15:19:46+1000-1081522015-02-04T15:19:46.000Ubuntu1a 5A; ofono/ofono/account0081512015-02-04T15:19:46+1000-1081512015-02-04T15:19:46.000Ubuntu o6l;od 5C; ofono/ofono/account0081552015-02-18T09:20:22+1000-13081552015-02-18T11:20:22.000Ubuntu23d 5C; ofono/ofono/account0081552015-02-18T09:20:20+1000-12081552015-02-18T11:20:20.000Ubuntu23d 5C; ofono/ofono/account0081552015-02-18T09:20:18+1000-11081552015-02-18T11:20:18.000Ubuntu23d 5C; ofono/ofono/account0081552015-02-18T09:20:16+1000-10081552015-02-18T11:20:16.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-18T09:20:14+1000-9081552015-02-18T11:20:14.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-18T09:20:11+1000-8081552015-02-18T11:20:11.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-18T09:20:10+1000-7081552015-02-18T11:20:10.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-18T09:20:08+1000-6081552015-02-18T11:20:08.000Ubuntu23c 5A; ofono/ofono/account0081552015-02-18T09:20:06+1000-5081552015-02-18T11:20:06.000Ubuntu23 m4h7mc 5A; ofono/ofono/account0081542015-02-18T09:51:10+1000-5081542015-02-18T11:51:10.000Ubuntu22c 5A; ofono/ofono/account0081542015-02-18T09:51:05+1000-4081542015-02-18T11:51:05.000Ubuntu12c 5A; ofono/ofono/account0081542015-02-18T09:51:01+1000-3081542015-02-18T11:51:01.000Ubuntu11d 5C; ofono/ofono/account0081552015-02-18T09:20:52+1000-19081552015-02-18T11:20:52.000Ubuntu23d 5C; ofono/ofono/account0081552015-02-18T09:20:50+1000-18081552015-02-18T11:20:50.000Ubuntu23d 5C; ofono/ofono/account0081552015-02-18T09:20:48+1000-17081552015-02-18T11:20:48.000Ubuntu23d 5C; ofono/ofono/account0081552015-02-18T09:20:46+1000-16081552015-02-18T11:20:46.000Ubuntu23d 5C; ofono/ofono/account0081552015-02-18T09:20:43+1000-15081552015-02-18T11:20:43.000Ubuntu23d 5C; ofono/ofono/account0081552015-02-18T09:20:25+1000-14081552015-02-18T11:20:25.000Ubuntu23 c 5A; ofono/ofono/account0081552015-02-18T09:51:19+1000-1081552015-02-18T11:51:19.000Ubuntu23messaging-app-0.1+16.04.20160323/tests/autopilot/messaging_app/helpers.py0000644000015600001650000000736312674565025026506 0ustar pbuserpbgroup00000000000000# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- # Copyright 2014 Canonical # # This file is part of messaging-app. # # messaging-app 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. import dbus import os import shutil import tempfile import subprocess import sys import time from dbus import exceptions def run_script(script): # prepare and send a Qt GUI script to phonesim, over its private D-BUS # set up by ofono-phonesim-autostart script_dir = tempfile.mkdtemp(prefix="phonesim_script") os.chmod(script_dir, 0o755) with open(os.path.join(script_dir, "script.js"), "w") as f: f.write(script) with open("/run/lock/ofono-phonesim-dbus.address") as f: phonesim_bus = f.read().strip() bus = dbus.bus.BusConnection(phonesim_bus) script_proxy = bus.get_object("org.ofono.phonesim", "/") script_proxy.SetPath(script_dir) script_proxy.Run("script.js") shutil.rmtree(script_dir) def set_network_status(status): status_number = 0 if status == "registered": status_number = 1 run_script(""" tabRegistration.gbNetworkRegistration.cbRegistrationStatus.currentIndex = "%s"; tabRegistration.gbNetworkRegistration.pbRegistration.click(); """ % (status_number)) def receive_sms(sender, text): """Receive an SMS based on sender number and text :parameter sender: phone number the message is from :parameter text: text you want to send in the message """ # prepare and send a Qt GUI script to phonesim, over its private D-BUS # set up by ofono-phonesim-autostart run_script("""tabSMS.gbMessage1.leMessageSender.text = "%s"; tabSMS.gbMessage1.leSMSClass.text = "1"; tabSMS.gbMessage1.teSMSText.setPlainText("%s"); tabSMS.gbMessage1.pbSendSMSMessage.click(); """ % (sender, text)) def get_phonesim(): bus = dbus.SystemBus() try: manager = dbus.Interface(bus.get_object('org.ofono', '/'), 'org.ofono.Manager') except dbus.exceptions.DBusException: return False modems = manager.GetModems() for path, properties in modems: if path == '/phonesim': return properties return None def is_phonesim_running(): """Determine whether we are running with phonesim.""" phonesim = get_phonesim() return phonesim is not None def ensure_ofono_account(): # oFono modems are now set online by NetworkManager, so for the tests # we need to manually put them online. subprocess.check_call(['/usr/share/ofono/scripts/enable-modem', '/phonesim']) subprocess.check_call(['/usr/share/ofono/scripts/online-modem', '/phonesim']) # wait until the modem is actually online for index in range(10): phonesim = get_phonesim() if phonesim['Online'] == 1: break time.sleep(1) else: raise exceptions.RuntimeError("oFono simulator didn't get online.") # this is a bit drastic, but sometimes mission-control-5 won't recognize # clients installed after it was started, so, we make sure it gets # restarted subprocess.check_call(['pkill', '-9', 'mission-control']) if not _is_ofono_account_set(): subprocess.check_call(['ofono-setup']) if not _is_ofono_account_set(): sys.stderr.write('ofono-setup failed to create ofono account!\n') sys.exit(1) def _is_ofono_account_set(): mc_tool = subprocess.Popen( [ 'mc-tool', 'list' ], stdout=subprocess.PIPE, universal_newlines=True) mc_accounts = mc_tool.communicate()[0] return 'ofono/ofono/account' in mc_accounts messaging-app-0.1+16.04.20160323/tests/CMakeLists.txt0000644000015600001650000000110412674565025022360 0ustar pbuserpbgroup00000000000000set(AUTOPILOT_DIR autopilot/messaging_app) file(GLOB AUTOPILOT_PY_FILES ${AUTOPILOT_DIR}/*.py ${AUTOPILOT_DIR}/tests/*.py) # custom target to get autopilot files visible on QtCreator add_custom_target(messaging_app_AUTOPILOT_PY_FILES ALL SOURCES ${AUTOPILOT_PY_FILES}) 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} ) add_subdirectory(qml) add_subdirectory(data) messaging-app-0.1+16.04.20160323/src/0000755000015600001650000000000012674565500017247 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/src/messagingapplication.h0000644000015600001650000000334712674565025023632 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2012-2015 Canonical, Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ #ifndef MESSAGINGAPPLICATION_H #define MESSAGINGAPPLICATION_H #include #include #include class MessagingApplication : public QGuiApplication { Q_OBJECT Q_PROPERTY(bool fullscreen READ fullscreen WRITE setFullscreen NOTIFY fullscreenChanged) public: MessagingApplication(int &argc, char **argv); virtual ~MessagingApplication(); bool fullscreen() const; bool setup(); Q_SIGNALS: void fullscreenChanged(); public Q_SLOTS: void activateWindow(); void parseArgument(const QString &arg); QString readTextFile(const QString &fileName); QString fileMimeType(const QString &fileName); void showNotificationMessage(const QString &message, const QString &icon = QString()); QObject *findMessagingChild(const QString &objectName); private Q_SLOTS: void setFullscreen(bool fullscreen); void onViewStatusChanged(QQuickView::Status status); void onApplicationReady(); private: QQuickView *m_view; QString m_arg; bool m_applicationIsReady; }; #endif // MESSAGINGAPPLICATION_H messaging-app-0.1+16.04.20160323/src/main.cpp0000644000015600001650000000273412674565025020707 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2012-2013 Canonical, Ltd. * * Authors: * Olivier Tilloy * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ // Qt #include #include #include #include // libc #include #include #include // local #include "messagingapplication.h" #include "config.h" // WORKAROUND: to make easy to debug apps #include static QQmlDebuggingEnabler debuggingEnabler(false); // Temporarily disable the telepathy folks backend // as it doesn’t play well with QtFolks. int main(int argc, char** argv) { QGuiApplication::setApplicationName("Messaging App"); QGuiApplication::setOrganizationName("com.ubuntu.messaging-app"); MessagingApplication application(argc, argv); if (!application.setup()) { return 0; } return application.exec(); } messaging-app-0.1+16.04.20160323/src/qml/0000755000015600001650000000000012674565500020040 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/src/qml/MultiRecipientInput.qml0000644000015600001650000002221712674565025024536 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2013 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Contacts 0.1 import Ubuntu.Telephony 0.1 import QtContacts 5.0 StyledItem { id: multiRecipientWidget property int recipientCount: recipientModel.count-1 property int selectedIndex: -1 property variant recipients: [] property string searchString: "" signal clearSearch() styleName: "TextFieldStyle" clip: true height: contactFlow.height focus: activeFocus signal forceFocus() MouseArea { anchors.fill: parent enabled: parent.focus === false onClicked: forceFocus() z: 1 } function addRecipient(identifier) { for (var i = 0; i multiRecipientWidget.width) { scrollableArea.contentX = scrollableArea.contentWidth - multiRecipientWidget.width } } flickableDirection: Flickable.HorizontalFlick Flow { id: contactFlow anchors.left: parent.left anchors.leftMargin: units.gu(1) anchors.top: parent.top move: Transition { UbuntuNumberAnimation { properties: "x,y";} } Component { id: contactDelegate Label { Rectangle { anchors.fill: parent anchors.topMargin: units.gu(1) anchors.bottomMargin: units.gu(1) color: UbuntuColors.warmGrey visible: selected z: -1 } MouseArea { anchors.fill: parent onClicked: selectedIndex == index ? selectedIndex = -1 : selectedIndex = index } property string contactName: { if (contactWatcher.isUnknown) { return contactWatcher.identifier } return contactWatcher.alias } property alias identifier: contactWatcher.identifier property int index property bool selected: selectedIndex == index property string separator: index == recipientCount-1 ? "" : "," height: units.gu(4) visible: height != 0 text: contactName + separator font.pixelSize: FontUtils.sizeToPixels("medium") font.family: "Ubuntu" font.weight: Font.Light color: selected ? "white" : "#752571" verticalAlignment: Text.AlignVCenter ContactWatcher { id: contactWatcher addressableFields: messages.account.addressableVCardFields } } } Component { id: searchDelegate TextField { id: contactSearchInput // the following items are used to calculate the text size of the hint and text entry Label { id: hintLabel visible: false text: i18n.tr("To:") } Label { id: textLabel visible: false text: contactSearchInput.text } objectName: "contactSearchInput" focus: true style: MultiRecipientFieldStyle {} height: units.gu(4) width: text != "" ? textLabel.paintedWidth + units.gu(3) : hintLabel.paintedWidth + units.gu(3) hasClearButton: false clip: false placeholderText: multiRecipientWidget.recipientCount <= 0 ? hintLabel.text : "" font.family: "Ubuntu" font.weight: Font.Light color: "#752571" font.pixelSize: FontUtils.sizeToPixels("medium") inputMethodHints: Qt.ImhNoPredictiveText onActiveFocusChanged: { if (!activeFocus && text !== "") { addRecipient(text) text = "" } } onTextChanged: { if (text.substring(text.length -1, text.length) == ",") { addRecipient(text.substring(0, text.length - 1)) text = "" return } searchString = text } Keys.onReturnPressed: { if (text == "") return addRecipient(text) text = "" } Connections { target: multiRecipientWidget onClearSearch: text = "" } Connections { target: multiRecipientWidget onForceFocus: { contactSearchInput.forceActiveFocus() } } Keys.onPressed: { if (event.key === Qt.Key_Backspace && text == "" && recipientCount > 0) { if (selectedIndex != -1) { recipientModel.remove(selectedIndex) selectedIndex = -1 } else { recipientModel.remove(recipientCount-1) } } if (event.key === Qt.Key_Comma) { if (text == "") return addRecipient(text) text = "" event.accepted = true } else { if (selectedIndex != -1) { recipientModel.remove(selectedIndex) selectedIndex = -1 if (event.key === Qt.Key_Backspace) event.accepted = true } } } } } spacing: units.gu(0.5) Repeater { id: rpt model: recipientModel delegate: Loader { sourceComponent: { if (searchItem) searchDelegate else contactDelegate } Binding { target: item property: "identifier" value: identifier when: (identifier && status == Loader.Ready) } Binding { target: item property: "index" value: index when: (index && status == Loader.Ready) } } } } } } messaging-app-0.1+16.04.20160323/src/qml/NewRecipientPage.qml0000644000015600001650000001626112674565025023754 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2016 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Contacts 0.1 import QtContacts 5.0 Page { id: newRecipientPage objectName: "newRecipientPage" property Item multiRecipient: null property string phoneToAdd: "" property QtObject contactIndex: null function moveListToContact(contact) { if (active) { newRecipientPage.contactIndex = null contactList.positionViewAtContact(contact) } else { newRecipientPage.contactIndex = contact } } function addRecipient(phoneNumber) { multiRecipient.addRecipient(phoneNumber) multiRecipient.forceActiveFocus() mainStack.removePage(newRecipientPage) } header: PageHeader { id: pageHeader property alias leadingActions: leadingBar.actions property alias trailingActions: trailingBar.actions title: i18n.tr("Add recipient") leadingActionBar { id: leadingBar } trailingActionBar { id: trailingBar actions: [ Action { text: i18n.tr("Back") iconName: "back" onTriggered: { mainStack.removePage(newRecipientPage) newRecipientPage.destroy() } } ] } } Sections { id: headerSections model: [i18n.tr("All"), i18n.tr("Favorites")] } TextField { id: searchField anchors { left: parent.left leftMargin: units.gu(2) right: parent.right rightMargin: units.gu(2) topMargin: units.gu(1.5) bottomMargin: units.gu(1.5) verticalCenter: parent.verticalCenter } onTextChanged: newRecipientPage.currentIndex = -1 inputMethodHints: Qt.ImhNoPredictiveText placeholderText: i18n.tr("Search...") visible: false } state: "default" states: [ State { id: defaultState name: "default" property list trailingActions: [ Action { text: i18n.tr("Search") iconName: "search" onTriggered: { newRecipientPage.state = "searching" contactList.showAllContacts() searchField.forceActiveFocus() } } ] PropertyChanges { target: pageHeader trailingActions: defaultState.trailingActions extension: headerSections } PropertyChanges { target: searchField text: "" visible: false } }, State { id: searchingState name: "searching" property list leadingActions: [ Action { iconName: "back" text: i18n.tr("Cancel") onTriggered: { newRecipientPage.forceActiveFocus() newRecipientPage.state = "default" headerSections.selectedIndex = 0 } } ] PropertyChanges { target: pageHeader leadingActions: searchingState.leadingActions trailingActions: [] contents: searchField } PropertyChanges { target: headerSections visible: false } PropertyChanges { target: searchField text: "" visible: true } } ] ContactListView { id: contactList objectName: "newRecipientList" anchors { top: pageHeader.bottom left: parent.left right: parent.right bottom: keyboard.top } showAddNewButton: true showImportOptions: (contactList.count === 0) && (filterTerm == "") filterTerm: searchField.text onContactClicked: { if (newRecipientPage.phoneToAdd != "") { mainView.addPhoneToContact(newRecipientPage, contact, newRecipientPage.phoneToAdd, newRecipientPage, contactList.listModel) } else { mainView.showContactDetails(newRecipientPage, contact, newRecipientPage, contactList.listModel) } } onAddNewContactClicked: { var newContact = ContactsJS.createEmptyContact(newRecipientPage.phoneToAdd, newRecipientPage) mainStack.addFileToCurrentColumnSync(newRecipientPage, Qt.resolvedUrl("MessagingContactEditorPage.qml"), { model: contactList.listModel, contact: newContact, initialFocusSection: (newRecipientPage.phoneToAdd != "" ? "phones" : "name"), contactListPage: newRecipientPage }) } } Component.onCompleted: { if (QTCONTACTS_PRELOAD_VCARD !== "") { contactList.listModel.importContacts("file://" + QTCONTACTS_PRELOAD_VCARD) } } onActiveChanged: { if (active && (state === "searching")) { searchField.forceActiveFocus() } } KeyboardRectangle { id: keyboard } Connections { target: headerSections onSelectedIndexChanged: { switch (headerSections.selectedIndex) { case 0: contactList.showAllContacts() break; case 1: contactList.showFavoritesContacts() break; default: break; } } } Connections { target: contactList.listModel onContactsChanged: { if (newRecipientPage.contactIndex) { contactList.positionViewAtContact(newRecipientPage.contactIndex) newRecipientPage.contactIndex = null } } } } messaging-app-0.1+16.04.20160323/src/qml/AccountSectionDelegate.qml0000644000015600001650000000511312674565025025131 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem import Ubuntu.Contacts 0.1 import "dateUtils.js" as DateUtils ListItemWithActions { property var messageData: null property int index: -1 property Item delegateItem property var account: telepathyHelper.accountForId(messageData.accountId) property string accountLabel: account ? account.displayName : "" // update the accountLabel when the list of accounts become available Item { Connections { target: telepathyHelper onAccountsChanged: accountLabel = telepathyHelper.accountForId(messageData.accountId).displayName } } height: sectionLabel.height + units.gu(2) anchors.left: parent.left anchors.right: parent.right ListItem.ThinDivider { id: leftDivider anchors.verticalCenter: sectionLabel.verticalCenter anchors.left: parent.left anchors.right: sectionLabel.left anchors.rightMargin: 0 anchors.leftMargin: 0 } ListItem.ThinDivider { id: rightDivider anchors.verticalCenter: sectionLabel.verticalCenter anchors.left: sectionLabel.right anchors.right: parent.right anchors.rightMargin: 0 anchors.leftMargin: 0 } onItemClicked: { if (root.isInSelectionMode) { if (!root.selectItem(delegateItem)) { root.deselectItem(delegateItem) } } } Label { id: sectionLabel anchors.horizontalCenter: parent.horizontalCenter height: paintedHeight clip: true // TRANSLATORS: %1 is the SIM card name and %2 is the timestamp text: i18n.tr("You switched to %1 @ %2") .arg(accountLabel) .arg(DateUtils.formatLogDate(messageData.timestamp)) fontSize: "x-small" horizontalAlignment: Text.AlignHCenter } } messaging-app-0.1+16.04.20160323/src/qml/dateUtils.js0000644000015600001650000000462612674565025022346 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ function areSameDay(date1, date2) { if (!date1 || !date2) return false return date1.getFullYear() == date2.getFullYear() && date1.getMonth() == date2.getMonth() && date1.getDate() == date2.getDate() } function formatLogDate(timestamp) { var today = new Date() var date = new Date(timestamp) if (areSameDay(today, date)) { return Qt.formatTime(timestamp, Qt.DefaultLocaleShortDate) } else { return Qt.formatDateTime(timestamp, Qt.DefaultLocaleShortDate) } } function friendlyDay(timestamp) { var date = new Date(timestamp); var today = new Date(); var yesterday = new Date(); yesterday.setDate(today.getDate()-1); if (areSameDay(today, date)) { return i18n.tr("Today"); } else if (areSameDay(yesterday, date)) { return i18n.tr("Yesterday"); } else { return Qt.formatDate(date, Qt.DefaultLocaleShortDate); } } function formatFriendlyDate(timestamp) { return Qt.formatTime(timestamp, Qt.DefaultLocaleShortDate) + " - " + friendlyDay(timestamp); } function formatFriendlyCallDuration(duration) { var time = new Date(duration); var text = ""; var hours = time.getHours(); var minutes = time.getMinutes(); var seconds = time.getSeconds(); if (hours > 0) { text = i18n.tr("%1 hour call", "%1 hours call", hours).arg(hours) } else if (minutes > 0) { text = i18n.tr("%1 minute call", "%1 minutes call", minutes).arg(minutes) } else { text = i18n.tr("%1 second call", "%1 seconds call", seconds).arg(seconds) } return text; } function formattedTime(time) { var d = new Date(0, 0, 0, 0, 0, time) return d.getHours() == 0 ? Qt.formatTime(d, "mm:ss") : Qt.formatTime(d, "h:mm:ss") } messaging-app-0.1+16.04.20160323/src/qml/AudioPlaybackBar.qml0000644000015600001650000001354012674565025023715 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import QtMultimedia 5.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Themes.Ambiance 1.3 import "dateUtils.js" as DateUtils Item { id: playbackBar signal resetRequested() property string source: "" property int duration: audioPlayer.duration readonly property bool playing: audioPlayer.playing Loader { id: audioPlayer readonly property bool playing: ready ? item.playing : false readonly property bool paused: ready ? item.paused : false readonly property bool stopped: ready ? item.stopped : false readonly property int position: ready ? item.position : 0 readonly property int duration: ready ? item.duration : 0 readonly property bool ready: status == Loader.Ready readonly property int playbackState: ready ? item.playbackState : Audio.StoppedState function play() { audioPlayer.active = true item.play() } function stop() { item.stop() audioPlayer.active = false } function pause() { item.pause() } function seek(pos) { item.seek(pos) } active: false sourceComponent: audioPlayerComponent } Component { id: audioPlayerComponent Audio { id: audioPlayer1 readonly property bool playing: audioPlayer1.playbackState == Audio.PlayingState readonly property bool paused: audioPlayer1.playbackState == Audio.PausedState readonly property bool stopped: audioPlayer1.playbackState == Audio.StoppedState source: playbackBar.source } } TransparentButton { id: closeButton objectName: "closeButton" anchors { left: parent.left leftMargin: units.gu(2) verticalCenter: parent.verticalCenter } iconName: "close" onClicked: { playbackBar.resetRequested() } } Item { id: audioPreview anchors { top: parent.top bottom: parent.bottom left: closeButton.right right: parent.right topMargin: units.gu(1) bottomMargin: units.gu(1) leftMargin: units.gu(3) rightMargin: units.gu(1) } TransparentButton { id: playButton anchors { top: parent.top left: parent.left topMargin: units.gu(0.5) } iconColor: "grey" iconName: audioPlayer.playing ? "media-playback-pause" : "media-playback-start" textSize: FontUtils.sizeToPixels("x-small") text: { if (audioPlayer.playing || audioPlayer.paused) { return DateUtils.formattedTime(audioPlayer.position/ 1000) } return DateUtils.formattedTime(playbackBar.duration / 1000) } onClicked: { if (audioPlayer.playing) { audioPlayer.pause() } else { audioPlayer.play() } } } Slider { id: slider Connections { target: audioPlayer onDurationChanged: { slider.maximumValue = audioPlayer.duration } } style: SliderStyle { Component.onCompleted: thumb.visible = false Connections { target: audioPlayer onPlaybackStateChanged: { thumb.visible = !audioPlayer.stopped if (!thumb.visible) { audioPlayer.seek(0) } } } } enabled: !audioPlayer.stopped function formatValue(v) { return DateUtils.formattedTime(v/1000) } anchors { top: parent.top bottom: parent.bottom left: playButton.right right: parent.right leftMargin: units.gu(1) } height: units.gu(3) minimumValue: 0.0 maximumValue: 100 value: audioPlayer.stopped ? 0 : audioPlayer.position activeFocusOnPress: false onPressedChanged: { if (!pressed) { if (audioPlayer.playing || audioPlayer.paused) { audioPlayer.seek(value) } else { audioPlayer.muted = true // we only get the duration while playing audioPlayer.play() audioPlayer.pause() if (audioPlayer.duration == 100) { audioPlayer.seek((audioPlayer.duration*value)/100) } else { audioPlayer.seek(value) } audioPlayer.muted = false } value = Qt.binding(function(){ return audioPlayer.stopped ? 0 : audioPlayer.position }) } } } } } messaging-app-0.1+16.04.20160323/src/qml/TransparentButton.qml0000644000015600001650000000667212674565025024265 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 Item { id: button width: sideBySide ? iconShape.width + spacing + label.width : iconShape.width height: sideBySide ? iconShape.height : iconShape.height + label.height + spacing property alias iconName: icon.name property alias iconSource: icon.source property alias iconColor: icon.color property int iconSize: units.gu(2) property alias iconRotation: icon.rotation property alias text: label.text property alias textSize: label.font.pixelSize property alias textColor: label.color property int spacing: 0 property bool sideBySide: false property bool iconPulsate: false property var iconPulsationScaleFrom: 0.7 property var iconPulsationScaleTo: 1.3 property alias drag: mouseArea.drag signal clicked() signal pressed() signal released() Item { id: iconShape height: iconSize width: iconSize anchors { left: parent.left right: sideBySide ? undefined : parent.right top: parent.top } Icon { id: icon anchors.centerIn: parent height: iconSize width: height color: "gray" Behavior on rotation { UbuntuNumberAnimation { } } SequentialAnimation { running: iconPulsate loops: Animation.Infinite NumberAnimation { target: icon; property: "scale"; from: button.iconPulsationScaleTo; to: button.iconPulsationScaleFrom; duration: 1000; easing.type: Easing.InOutQuad } NumberAnimation { target: icon; property: "scale"; from: button.iconPulsationScaleFrom; to: button.iconPulsationScaleTo; duration: 1000; easing.type: Easing.InOutQuad } } } } MouseArea { id: mouseArea anchors { fill: iconShape margins: units.gu(-2) } onClicked: { mouse.accepted = true button.clicked() } onPressed: button.pressed() onReleased: button.released() } Text { id: label color: "gray" height: text !== "" ? paintedHeight : 0 anchors { left: sideBySide ? iconShape.right : parent.left right: sideBySide ? undefined : parent.right bottom: sideBySide ? undefined : parent.bottom verticalCenter: sideBySide ? iconShape.verticalCenter : undefined leftMargin: sideBySide ? spacing : undefined } horizontalAlignment: sideBySide ? undefined : Text.AlignHCenter verticalAlignment: sideBySide ? Text.AlignVCenter : Text.AlignBottom font.family: "Ubuntu" font.pixelSize: FontUtils.sizeToPixels("small") } } messaging-app-0.1+16.04.20160323/src/qml/EmptyState.qml0000644000015600001650000000177412674565025022665 0ustar pbuserpbgroup00000000000000import QtQuick 2.0 import Ubuntu.Components 1.3 Item { id: emptyStateScreen property alias labelVisible: emptyStateLabel.visible anchors { left: parent.left leftMargin: units.gu(6) right: parent.right rightMargin: units.gu(6) verticalCenter: parent.verticalCenter } height: childrenRect.height Icon { id: emptyStateIcon anchors.top: emptyStateScreen.top anchors.horizontalCenter: parent.horizontalCenter height: units.gu(5) width: height opacity: 0.3 name: "message" } Label { id: emptyStateLabel anchors.top: emptyStateIcon.bottom anchors.topMargin: units.gu(2) anchors.left: parent.left anchors.right: parent.right text: i18n.tr("Compose a new message by swiping up from the bottom of the screen.") color: "#5d5d5d" fontSize: "x-large" wrapMode: Text.WordWrap horizontalAlignment: Text.AlignHCenter } } messaging-app-0.1+16.04.20160323/src/qml/AudioRecordingBar.qml0000644000015600001650000001153212674565025024102 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 import messagingapp.private 0.1 import "dateUtils.js" as DateUtils Item { id: recordingBar opacity: audioRecorder.recording ? 1.0 : 0.0 Behavior on opacity { UbuntuNumberAnimation {} } visible: opacity > 0 property bool handleError: false property int duration: 0 readonly property bool recording: audioRecorder.recording property real buttonOpacity: 1 signal audioRecorded(var audio) function startRecording() { handleError = true audioRecorder.record() } function stopRecording() { audioRecorder.stop() } Loader { id: audioRecorder readonly property bool ready: status == Loader.Ready readonly property bool recording: ready ? item.recorderStatus == AudioRecorder.RecordingStatus : false readonly property int duration: ready ? item.duration : 0 function record() { audioRecorder.active = true item.record() } function stop() { item.stop() audioRecorder.active = false } active: false sourceComponent: audioRecorderComponent } Component { id: audioRecorderComponent AudioRecorder { readonly property bool recording: recorderStatus == AudioRecorder.RecordingStatus onRecorderStatusChanged: { if (recorderState == AudioRecorder.StoppedState && actualLocation != "") { var filePath = actualLocation if (application.fileMimeType(filePath).toLowerCase().indexOf("audio/") <= -1) { //If the recording process is too quick the generated file is not an audio one and should be ignored return; } var attachment = {} attachment["contentType"] = application.fileMimeType(filePath) attachment["name"] = filePath.split('/').reverse()[0] attachment["filePath"] = filePath recordingBar.audioRecorded(attachment) recordingBar.duration = duration } } onErrorChanged: { switch(errorCode) { case AudioRecorder.ResourceError: if (handleError) { timer.start() } break default: } } codec: "audio/vorbis" quality: AudioRecorder.VeryHighQuality } } // WORKAROUND we can't trigger the dialog from the onErrorChanged signal. Timer { id: timer interval: 1 onTriggered: { Qt.inputMethod.hide() messages.focus = false PopupUtils.open(Qt.createComponent("Dialogs/NoMicrophonePermission.qml").createObject(messages)) handleError = false } } TransparentButton { id: recordingIcon objectName: "recordingIcon" iconPulsate: recordingBar.recording sideBySide: true spacing: units.gu(1) opacity: buttonOpacity anchors { left: parent.left leftMargin: units.gu(2) verticalCenter: parent.verticalCenter } focus: false iconColor: "red" iconName: "audio-input-microphone-symbolic" textSize: FontUtils.sizeToPixels("small") text: { if (audioRecorder.recording) { return DateUtils.formattedTime(audioRecorder.duration / 1000) } return DateUtils.formattedTime(0) } } Label { anchors { top: parent.top bottom: parent.bottom left: recordingIcon.right right: parent.right topMargin: units.gu(1) bottomMargin: units.gu(1) leftMargin: units.gu(1) rightMargin: units.gu(1) } opacity: buttonOpacity text: i18n.tr("<<< Swipe to cancel") verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter } } messaging-app-0.1+16.04.20160323/src/qml/SMSDelegate.qml0000644000015600001650000000426612674565025022662 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import "dateUtils.js" as DateUtils MessageDelegate { id: root function deleteMessage() { eventModel.removeEvents([root.messageData.properties]); } function resendMessage() { eventModel.removeEvents([root.messageData.properties]); // FIXME: export this information for MessageDelegate messages.sendMessage(textMessage, messages.participantIds, []) } function copyMessage() { Clipboard.push(bubble.messageText) application.showNotificationMessage(i18n.tr("Text message copied to clipboard"), "edit-copy") } height: bubble.height _lastItem: bubble MessageBubble { id: bubble states: [ State { name: "incoming" when: root.incoming AnchorChanges { target: bubble anchors.left: parent.left } }, State { name: "outgoing" when: !root.incoming AnchorChanges { target: bubble anchors.right: parent.right } } ] visible: (messageText !== "") messageIncoming: root.incoming messageText: root.messageData.textMessage messageTimeStamp: root.messageData.timestamp accountName: root.accountLabel messageStatus: root.messageData.textMessageStatus showDeliveryStatus: true } } messaging-app-0.1+16.04.20160323/src/qml/messaging-app.qml0000644000015600001650000003272212674565025023316 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtQuick.Window 2.2 import Qt.labs.settings 1.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 import Ubuntu.Telephony 0.1 import Ubuntu.Content 1.3 import Ubuntu.History 0.1 import "Stickers" MainView { id: mainView property bool multiplePhoneAccounts: { var numAccounts = 0 for (var i in telepathyHelper.activeAccounts) { if (telepathyHelper.activeAccounts[i].type == AccountEntry.PhoneAccount) { numAccounts++ } } return numAccounts > 1 } property QtObject account: defaultPhoneAccount() property bool applicationActive: Qt.application.active property alias mainStack: layout property bool dualPanel: mainStack.columns > 1 property QtObject bottomEdge: null property bool composingNewMessage: bottomEdge.status === BottomEdge.Committed property alias inputInfo: inputInfoObject signal emptyStackRequested() activeFocusOnPress: false function defaultPhoneAccount() { // we only use the default account property if we have more // than one account, otherwise we use always the first one if (multiplePhoneAccounts && telepathyHelper.defaultMessagingAccount) { return telepathyHelper.defaultMessagingAccount } else { for (var i in telepathyHelper.activeAccounts) { var tmpAccount = telepathyHelper.activeAccounts[i] if (tmpAccount.type == AccountEntry.PhoneAccount) { return tmpAccount } } } return null } function showContactDetails(currentPage, contact, contactListPage, contactsModel) { var initialProperties = { "contactListPage": contactListPage, "model": contactsModel} if (typeof(contact) == 'string') { initialProperties['contactId'] = contact } else { initialProperties['contact'] = contact } mainStack.addFileToCurrentColumnSync(currentPage, Qt.resolvedUrl("MessagingContactViewPage.qml"), initialProperties) } function addNewContact(currentPage, phoneNumber, contactListPage) { mainStack.addFileToCurrentColumnSync(currentPage, Qt.resolvedUrl("MessagingContactEditorPage.qml"), { "contactId": contactId, "addPhoneToContact": phoneNumber, "contactListPage": contactListPage }) } function addPhoneToContact(currentPage, contact, phoneNumber, contactListPage, contactsModel) { if (contact === "") { mainStack.addFileToCurrentColumnSync(currentPage, Qt.resolvedUrl("NewRecipientPage.qml"), { "phoneToAdd": phoneNumber }) } else { var initialProperties = { "addPhoneToContact": phoneNumber, "contactListPage": contactListPage, "model": contactsModel } if (typeof(contact) == 'string') { initialProperties['contactId'] = contact } else { initialProperties['contact'] = contact } mainStack.addFileToCurrentColumnSync(currentPage, Qt.resolvedUrl("MessagingContactViewPage.qml"), initialProperties) } } onApplicationActiveChanged: { if (applicationActive) { telepathyHelper.registerChannelObserver() } else { telepathyHelper.unregisterChannelObserver() } } function removeThreads(threads) { for (var i in threads) { var thread = threads[i]; var participants = []; for (var j in thread.participants) { participants.push(thread.participants[j].identifier) } // and acknowledge all messages for the threads to be removed chatManager.acknowledgeAllMessages(participants, thread.accountId) } // at last remove the threads threadModel.removeThreads(threads); } function showBottomEdgePage(properties) { bottomEdge.commitWithProperties(properties) } Connections { target: telepathyHelper // restore default bindings if any system settings changed onActiveAccountsChanged: { for (var i in telepathyHelper.activeAccounts) { if (telepathyHelper.activeAccounts[i] == account) { return; } } account = Qt.binding(defaultPhoneAccount) } onDefaultMessagingAccountChanged: account = Qt.binding(defaultPhoneAccount) } automaticOrientation: true width: units.gu(90) height: units.gu(71) anchorToKeyboard: false Component.onCompleted: { i18n.domain = "messaging-app" i18n.bindtextdomain("messaging-app", i18nDirectory) // when running in windowed mode, do not allow resizing view.minimumWidth = units.gu(40) view.minimumHeight = units.gu(60) } Connections { target: telepathyHelper onSetupReady: { if (multiplePhoneAccounts && !telepathyHelper.defaultMessagingAccount && !settings.mainViewIgnoreFirstTimeDialog && mainPage.displayedThreadIndex < 0) { PopupUtils.open(Qt.createComponent("Dialogs/NoDefaultSIMCardDialog.qml").createObject(mainView)) } } } HistoryGroupedThreadsModel { id: threadModel type: HistoryThreadModel.EventTypeText sort: HistorySort { sortField: "lastEventTimestamp" sortOrder: HistorySort.DescendingOrder } groupingProperty: "participants" filter: HistoryFilter {} matchContacts: true } Settings { id: settings category: "DualSim" property bool messagesDontShowFileSizeWarning: false property bool messagesDontAsk: false property bool mainViewIgnoreFirstTimeDialog: false } StickerPacksModel { id: stickerPacksModel } StickersModel { id: stickersModel } Connections { target: ContentHub onShareRequested: { var properties = {} emptyStack() properties["sharedAttachmentsTransfer"] = transfer mainView.showBottomEdgePage(properties) } } signal applicationReady function startsWith(string, prefix) { return string.toLowerCase().slice(0, prefix.length) === prefix.toLowerCase(); } function getContentType(filePath) { var contentType = application.fileMimeType(String(filePath).replace("file://","")) if (startsWith(contentType, "image/")) { return ContentType.Pictures } else if (startsWith(contentType, "text/vcard") || startsWith(contentType, "text/x-vcard")) { return ContentType.Contacts } else if (startsWith(contentType, "video/")) { return ContentType.Videos } return ContentType.Unknown } function emptyStack() { mainView.emptyStackRequested() mainStack.removePage(mainPage) layout.deleteInstances() showEmptyState() mainPage.displayedThreadIndex = -1 } function showEmptyState() { if (mainStack.columns > 1 && !application.findMessagingChild("emptyStatePage")) { layout.addComponentToNextColumnSync(mainPage, emptyStatePageComponent) } } function startNewMessage() { var properties = {} emptyStack() mainView.showBottomEdgePage(properties) } function startChat(identifiers, text, accountId) { var properties = {} var participantIds = identifiers.split(";") if (participantIds.length === 0) { return; } if (mainView.account) { var thread = threadModel.threadForParticipants(mainView.account.accountId, HistoryThreadModel.EventTypeText, participantIds, mainView.account.type == AccountEntry.PhoneAccount ? HistoryThreadModel.MatchPhoneNumber : HistoryThreadModel.MatchCaseSensitive, false) if (thread.hasOwnProperty("participants")) { properties["participants"] = thread.participants } } if (!properties.hasOwnProperty("participants")) { var participants = [] for (var i in participantIds) { var participant = {} participant["identifier"] = participantIds[i] participant["contactId"] = "" participant["alias"] = "" participant["avatar"] = "" participant["detailProperties"] = {} participants.push(participant) } properties["participants"] = participants; } properties["participantIds"] = participantIds properties["text"] = text if (typeof(accountId)!=='undefined') { properties["accountId"] = accountId } emptyStack() // FIXME: AdaptivePageLayout takes a really long time to create pages, // so we create manually and push that mainStack.addComponentToNextColumnSync(mainPage, messagesWithBottomEdge, properties) } InputInfo { id: inputInfoObject } // WORKAROUND: Due the missing feature on SDK, they can not detect if // there is a mouse attached to device or not. And this will cause the // bootom edge component to not work correct on desktop. Binding { target: QuickUtils property: "mouseAttached" value: inputInfo.hasMouse } Connections { target: UriHandler onOpened: { for (var i = 0; i < uris.length; ++i) { application.parseArgument(uris[i]) } } } Component { id: messagesWithBottomEdge Messages { id: messages height: mainPage.height Component.onCompleted: mainPage._messagesPage = messages Loader { id: messagesBottomEdgeLoader active: mainView.dualPanel sourceComponent: MessagingBottomEdge { id: messagesBottomEdge parent: messages hint.text: "" hint.height: 0 } } } } Component { id: emptyStatePageComponent Page { id: emptyStatePage objectName: "emptyStatePage" function deleteMe() { emptyStatePage.destroy(1) emptyStatePage.objectName = "" } Connections { target: layout onColumnsChanged: { if (layout.columns == 1) { emptyStatePage.deleteMe() if (!application.findMessagingChild("fakeItem")) { layout.removePage(mainPage) } } } } Connections { target: mainView onEmptyStackRequested: { emptyStatePage.deleteMe() } } EmptyState { labelVisible: false } header: PageHeader { } Loader { id: bottomEdgeLoader sourceComponent: MessagingBottomEdge { parent: emptyStatePage hint.text: "" hint.height: 0 } } } } MessagingPageLayout { id: layout anchors.fill: parent primaryPage: MainPage { id: mainPage } onColumnsChanged: { // we only have things to do here in case no thread is selected if (layout.columns == 2 && !application.findMessagingChild("emptyStatePage") && !application.findMessagingChild("fakeItem")) { layout.removePage(mainPage) emptyStack() } } Component.onCompleted: { if (layout.columns == 2 && !application.findMessagingChild("emptyStatePage")) { emptyStack() } } } } messaging-app-0.1+16.04.20160323/src/qml/MessageBubble.qml0000644000015600001650000001502412674565025023257 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.History 0.1 import Ubuntu.Telephony.PhoneNumber 0.1 as PhoneNumber import "dateUtils.js" as DateUtils import "3rd_party/ba-linkify.js" as BaLinkify BorderImage { id: root property int messageStatus: -1 property bool messageIncoming: false property alias sender: senderName.text property string messageText property var messageTimeStamp property int maxDelegateWidth: units.gu(27) property string accountName // FIXME for now we just display the delivery status if it's greater than Accepted property bool showDeliveryStatus: false property bool deliveryStatusAvailable: showDeliveryStatus && (statusDelivered || statusRead) readonly property bool error: (messageStatus === HistoryThreadModel.MessageStatusPermanentlyFailed) readonly property bool sending: (messageStatus === HistoryThreadModel.MessageStatusUnknown || messageStatus === HistoryThreadModel.MessageStatusTemporarilyFailed) && !messageIncoming readonly property bool statusDelivered: (messageStatus === HistoryThreadModel.MessageStatusDelivered) readonly property bool statusRead: (messageStatus === HistoryThreadModel.MessageStatusRead) // XXXX: should be hoisted function getCountryCode() { var localeName = Qt.locale().name return localeName.substr(localeName.length - 2, 2) } function formatTelSchemeWith(phoneNumber) { return '' + phoneNumber + '' } function parseText(text) { // remove html tags text = text.replace(//g,'>'); // replace line breaks text = text.replace(/\n/g, '
'); // check for links var htmlText = BaLinkify.linkify(text); if (htmlText !== text) { return htmlText } // linkify phone numbers if no web links were found var phoneNumbers = PhoneNumber.PhoneUtils.matchInText(text, getCountryCode()) for (var i = 0; i < phoneNumbers.length; ++i) { var currentNumber = phoneNumbers[i] text = text.replace(currentNumber, formatTelSchemeWith(currentNumber)) } return text } property string color: { if (error) { return "red" } else if (sending) { return "grey" } else if (messageIncoming) { return "white" } else { // FIXME: use blue for IM accounts return "green" } } source: "assets/" + color + "_bubble.sci" smooth: true // FIXME: maybe we should put everything inside a container to make width and height calculation easier height: senderName.height + senderName.anchors.topMargin + textLabel.height + border.bottom + units.gu(0.5) + (oneLine ? 0 : messageFooter.height + messageFooter.anchors.topMargin) // if possible, put the timestamp and the delivery status in the same line as the text property int oneLineWidth: textLabel.contentWidth + messageFooter.width property bool oneLine: oneLineWidth <= units.gu(27) width: Math.min(units.gu(27), Math.max(oneLine ? oneLineWidth : textLabel.contentWidth, messageFooter.width, senderName.contentWidth, border.right + border.left - units.gu(3))) + units.gu(3) Label { id: senderName anchors { top: parent.top topMargin: height != 0 ? units.gu(0.5) : 0 left: parent.left leftMargin: units.gu(1) } height: text === "" ? 0 : paintedHeight width: paintedWidth > maxDelegateWidth ? maxDelegateWidth : undefined fontSize: "small" } Label { id: textLabel objectName: "messageText" anchors { top: sender == "" ? parent.top : senderName.bottom topMargin: sender == "" ? units.gu(0.5) : units.gu(1) left: parent.left leftMargin: units.gu(1) } width: paintedWidth > maxDelegateWidth ? maxDelegateWidth : undefined fontSize: "medium" height: contentHeight onLinkActivated: Qt.openUrlExternally(link) text: root.parseText(messageText) textFormat: Text.RichText wrapMode: Text.Wrap color: root.messageIncoming ? UbuntuColors.darkGrey : "white" } Row { id: messageFooter width: childrenRect.width spacing: units.gu(1) anchors { top: textLabel.bottom topMargin: oneLine ? -textTimestamp.height : units.gu(0.5) right: parent.right rightMargin: units.gu(1) } Label { id: textTimestamp objectName: "messageDate" anchors.bottom: parent.bottom visible: !root.sending height: units.gu(2) width: paintedWidth > maxDelegateWidth ? maxDelegateWidth : undefined fontSize: "xx-small" color: root.messageIncoming ? UbuntuColors.lightGrey : "white" opacity: root.messageIncoming ? 1.0 : 0.8 elide: Text.ElideRight verticalAlignment: Text.AlignVCenter text: { if (messageTimeStamp === "") return "" var str = Qt.formatTime(messageTimeStamp, Qt.DefaultLocaleShortDate) if (root.accountName.length === 0 || !root.messageIncoming) { return str } str += " @ %1".arg(root.accountName) return str } } DeliveryStatus { id: deliveryStatus messageStatus: messageStatus enabled: deliveryStatusAvailable anchors.verticalCenter: textTimestamp.verticalCenter } } } messaging-app-0.1+16.04.20160323/src/qml/MultiRecipientFieldStyle.qml0000644000015600001650000000133512674565025025501 0ustar pbuserpbgroup00000000000000/* * Copyright 2012 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 Ubuntu.Components.Themes.Ambiance 1.3 TextFieldStyle { background: null } messaging-app-0.1+16.04.20160323/src/qml/ThumbnailUnknown.qml0000644000015600001650000000217712674565025024067 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 UbuntuShape { id: thumbnail property string filePath signal pressAndHold() width: units.gu(8) height: units.gu(8) Icon { anchors.centerIn: parent width: units.gu(6) height: units.gu(6) name: "attachment" } MouseArea { anchors.fill: parent onPressAndHold: { mouse.accept = true thumbnail.pressAndHold() } } } messaging-app-0.1+16.04.20160323/src/qml/AttachmentPanel.qml0000644000015600001650000001147512674565025023635 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem import QtQuick.Layouts 1.0 Item { id: panel signal attachmentAvailable(var attachment) property bool expanded: false function show() { expanded = true } function hide() { expanded = false } height: expanded ? childrenRect.height + units.gu(3): 0 opacity: expanded ? 1 : 0 visible: opacity > 0 Behavior on height { UbuntuNumberAnimation {} } Behavior on opacity { UbuntuNumberAnimation { } } enabled: expanded Connections { target: Qt.inputMethod onVisibleChanged: { if (Qt.inputMethod.visible) { panel.expanded = false } } } ContentImport { id: contentImporter onContentReceived: { var attachment = {} var filePath = String(contentUrl).replace('file://', '') attachment["contentType"] = application.fileMimeType(filePath) attachment["name"] = filePath.split('/').reverse()[0] attachment["filePath"] = filePath panel.attachmentAvailable(attachment) hide() } } ListItem.ThinDivider { id: divider anchors { top: parent.top left: parent.left right: parent.right } } GridLayout { id: grid property int iconSize: units.gu(3) property int buttonSpacing: units.gu(2) anchors { top: parent.top topMargin: units.gu(3) left: parent.left right: parent.right } height: childrenRect.height columns: 4 rowSpacing: units.gu(3) TransparentButton { id: pictureButton objectName: "pictureButton" iconName: "stock_image" iconSize: grid.iconSize spacing: grid.buttonSpacing text: i18n.tr("Image") Layout.alignment: Qt.AlignHCenter onClicked: { contentImporter.requestPicture() } } TransparentButton { id: videoButton objectName: "videoButton" iconName: "stock_video" iconSize: grid.iconSize spacing: grid.buttonSpacing text: i18n.tr("Video") Layout.alignment: Qt.AlignHCenter onClicked: { contentImporter.requestVideo() } } // FIXME: enable generic file sharing if we ever support it /*TransparentButton { id: fileButton objectName: "fileButton" iconSource: Qt.resolvedUrl("assets/stock_document.svg") iconSize: grid.iconSize spacing: grid.buttonSpacing text: i18n.tr("File") Layout.alignment: Qt.AlignHCenter onClicked: { contentImporter.requestDocument() } }*/ // FIXME: enable location sharing if we ever support it /*TransparentButton { id: locationButton objectName: "locationButton" iconName: "location" iconSize: grid.iconSize spacing: grid.buttonSpacing text: i18n.tr("Location") Layout.alignment: Qt.AlignHCenter }*/ TransparentButton { id: contactButton objectName: "contactButton" iconName: "stock_contact" iconSize: grid.iconSize spacing: grid.buttonSpacing text: i18n.tr("Contact") Layout.alignment: Qt.AlignHCenter onClicked: { contentImporter.requestContact() } } // FIXME: enable that once we add support for burn-after-read /*TransparentButton { id: burnAfterReadButton objectName: "burnAfterReadButton" iconSource: Qt.resolvedUrl("assets/burn-after-read.svg") iconSize: grid.iconSize spacing: grid.buttonSpacing text: i18n.tr("Burn after read") Layout.alignment: Qt.AlignHCenter }*/ } } messaging-app-0.1+16.04.20160323/src/qml/MessageDateSection.qml0000644000015600001650000000220012674565025024256 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem Item { property alias text: label.text height: units.gu(3) Label { id: label anchors.fill: parent elide: Text.ElideRight verticalAlignment: Text.AlignVCenter fontSize: "small" } ListItem.ThinDivider { anchors.bottom: parent.bottom anchors.rightMargin: 0 anchors.leftMargin: 0 } } messaging-app-0.1+16.04.20160323/src/qml/ColoredImage.qml0000644000015600001650000000577312674565025023123 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2014 Canonical, Ltd. * * 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.2 Item { id: root /*! \qmlproperty color color */ property alias color: colorizedImage.keyColorOut /*! \qmlproperty color keyColor */ property alias keyColor: colorizedImage.keyColorIn property alias mirror: image.mirror property alias source: image.source property alias asynchronous: image.asynchronous Image { id: image anchors.fill: parent visible: false } ShaderEffect { id: colorizedImage anchors.fill: parent visible: active // Whether or not a color has been set. property bool active: keyColorOut != Qt.rgba(0.0, 0.0, 0.0, 0.0) property Image source: active && image.status === Image.Ready ? image : null property color keyColorOut: Qt.rgba(0.0, 0.0, 0.0, 0.0) property color keyColorIn: "#ffffff" property real threshold: 0.1 readonly property string mirroredShader: " uniform highp mat4 qt_Matrix; attribute highp vec4 qt_Vertex; attribute highp vec2 qt_MultiTexCoord0; varying highp vec2 qt_TexCoord0; void main() { qt_TexCoord0 = vec2(1.0 - qt_MultiTexCoord0.s, qt_MultiTexCoord0.t); gl_Position = qt_Matrix * qt_Vertex; }" readonly property string originalShader: " uniform highp mat4 qt_Matrix; attribute highp vec4 qt_Vertex; attribute highp vec2 qt_MultiTexCoord0; varying highp vec2 qt_TexCoord0; void main() { qt_TexCoord0 = qt_MultiTexCoord0; gl_Position = qt_Matrix * qt_Vertex; }" vertexShader: root.mirror ? mirroredShader : originalShader fragmentShader: " varying highp vec2 qt_TexCoord0; uniform sampler2D source; uniform highp vec4 keyColorOut; uniform highp vec4 keyColorIn; uniform lowp float threshold; uniform lowp float qt_Opacity; void main() { lowp vec4 sourceColor = texture2D(source, qt_TexCoord0); gl_FragColor = mix(vec4(keyColorOut.rgb, 1.0) * sourceColor.a, sourceColor, step(threshold, distance(sourceColor.rgb / sourceColor.a, keyColorIn.rgb))) * qt_Opacity; }" } } messaging-app-0.1+16.04.20160323/src/qml/SettingsPage.qml0000644000015600001650000000706012674565025023155 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem import GSettings 1.0 Page { id: settingsPage title: i18n.tr("Settings") property var settingsModel: [ { "name": "mmsGroupChatEnabled", "description": i18n.tr("Enable MMS group chat") } ] // These fake items are used to track if there are instances loaded // on the second column because we have no access to the page stack Loader { sourceComponent: fakeItemComponent active: true } Component { id: fakeItemComponent Item { objectName:"fakeItem"} } GSettings { id: gsettings schema.id: "com.ubuntu.phone" } header: PageHeader { id: pageHeader title: settingsPage.title leadingActionBar { actions: [ Action { id: singlePanelBackAction objectName: "back" name: "cancel" text: i18n.tr("Cancel") iconName: "back" shortcut: "Esc" visible: !mainView.dualPanel onTriggered: { // emptyStack will make sure the page gets removed. mainView.emptyStack() } } ] } } Component { id: settingDelegate Item { anchors.left: parent.left anchors.right: parent.right height: units.gu(6) Label { id: descriptionLabel text: modelData.description anchors.left: parent.left anchors.right: checkbox.left anchors.verticalCenter: parent.verticalCenter anchors.leftMargin: units.gu(2) } Switch { id: checkbox objectName: modelData.name anchors.right: parent.right anchors.rightMargin: units.gu(2) anchors.verticalCenter: parent.verticalCenter checked: eval("gsettings."+modelData.name) onCheckedChanged: { if (eval("gsettings."+modelData.name) != checked) { eval("gsettings."+modelData.name+ "= checked") } } } } } ListView { anchors { top: pageHeader.bottom left: parent.left right: parent.right bottom: parent.bottom } model: settingsModel delegate: settingDelegate } Loader { id: messagesBottomEdgeLoader active: mainView.dualPanel sourceComponent: MessagingBottomEdge { id: messagesBottomEdge parent: settingsPage hint.text: "" hint.height: 0 } } } messaging-app-0.1+16.04.20160323/src/qml/SwipeItemDemo.qml0000644000015600001650000002360712674565025023300 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of dialer-app. * * dialer-app 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. * * dialer-app 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.0 import QtQuick.Layouts 1.1 import Qt.labs.settings 1.0 import Ubuntu.Components 1.3 import Ubuntu.Contacts 0.1 Loader { id: root property bool necessary: true property bool enabled: false function enable() { root.enabled = true; } function disable() { if (root.enabled) { root.necessary = false; root.enabled = false; } } sourceComponent: necessary && enabled ? listItemDemoComponent : null Settings { property alias hintNecessary: root.necessary } Component { id: listItemDemoComponent Rectangle { id: rectangleContents color: "black" opacity: 0.0 anchors.fill: parent Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SlowDuration } } Button { id: gotItButton objectName: "gotItButton" anchors { bottom: dragTitle.bottom horizontalCenter: parent.horizontalCenter bottomMargin: units.gu(21) } width: units.gu(17) strokeColor: UbuntuColors.green text: i18n.tr("Got it") enabled: !dismissAnimation.running onClicked: dismissAnimation.start() InverseMouseArea { anchors.fill: parent topmostItem: false } } RowLayout { id: dragTitle anchors { left: parent.left right: parent.right bottom: listItem.top margins: units.gu(1) } spacing: units.gu(2) Image { visible: listItem.swipeState === "RightToLeft" source: Qt.resolvedUrl("./assets/swipe_arrow.svg") rotation: 180 Layout.preferredWidth: sourceSize.width height: parent.height verticalAlignment: Image.AlignVCenter fillMode: Image.Pad sourceSize { width: units.gu(7) height: units.gu(2) } } Label { id: dragMessage Layout.fillWidth: true height: parent.height verticalAlignment: Image.AlignVCenter wrapMode: Text.Wrap fontSize: "large" color: "#ffffff" } Image { visible: listItem.swipeState === "LeftToRight" source: Qt.resolvedUrl("./assets/swipe_arrow.svg") Layout.preferredWidth: sourceSize.width height: parent.height verticalAlignment: Image.AlignVCenter fillMode: Image.Pad sourceSize { width: units.gu(7) height: units.gu(2) } } } MessageDelegateFactory { id: listItem property int xPos: 0 // message data property int index: 10 property int textMessageStatus: 1 property var textMessageAttachments: [] property var messageData: null incoming: true accountLabel: "" enabled: false anchors { bottom: parent.bottom bottomMargin: units.gu(8) left: parent.left right: parent.right } Component.onCompleted: { messageData = { "textMessage": i18n.tr("Welcome to your Ubuntu messaging app."), "timestamp": new Date(), "textMessageStatus": 1, "senderId": "self", "textReadTimestamp": new Date(), "textMessageAttachments": [], "newEvent": false, "accountId": "", "accountLabel" : ""} } rightSideActions: [ Action { id: infoAction iconName: "info" text: i18n.tr("Info") }, Action { iconName: "reload" text: i18n.tr("Retry") }, Action { iconName: "edit-copy" text: i18n.tr("Copy") } ] animated: false onXPosChanged: listItem.updatePosition(xPos) } SequentialAnimation { id: slideAnimation readonly property real leftToRightXpos: (-3 * (listItem.actionWidth + units.gu(2))) readonly property real rightToLeftXpos: listItem.leftActionWidth loops: Animation.Infinite running: root.enabled PropertyAction { target: dragMessage property: "text" value: i18n.tr("Swipe to reveal actions") } PropertyAction { target: dragMessage property: "horizontalAlignment" value: Text.AlignLeft } ParallelAnimation { PropertyAnimation { target: listItem property: "xPos" from: 0 to: slideAnimation.leftToRightXpos duration: 2000 } PropertyAnimation { target: dragTitle property: "opacity" from: 0 to: 1 duration: UbuntuAnimation.SleepyDuration } } PauseAnimation { duration: UbuntuAnimation.SleepyDuration } ParallelAnimation { PropertyAnimation { target: dragTitle property: "opacity" to: 0 duration: UbuntuAnimation.SlowDuration } PropertyAnimation { target: listItem property: "xPos" from: slideAnimation.leftToRightXpos to: 0 duration: UbuntuAnimation.SleepyDuration } } PropertyAction { target: dragMessage property: "text" value: i18n.tr("Swipe to delete") } PropertyAction { target: dragMessage property: "horizontalAlignment" value: Text.AlignRight } ParallelAnimation { PropertyAnimation { target: listItem property: "xPos" from: 0 to: slideAnimation.rightToLeftXpos duration: UbuntuAnimation.SleepyDuration } PropertyAnimation { target: dragTitle property: "opacity" from: 0 to: 1 duration: UbuntuAnimation.SlowDuration } } PauseAnimation { duration: UbuntuAnimation.SleepyDuration } ParallelAnimation { PropertyAnimation { target: dragTitle property: "opacity" to: 0 duration: UbuntuAnimation.SlowDuration } PropertyAnimation { target: listItem property: "xPos" from: slideAnimation.rightToLeftXpos to: 0 duration: UbuntuAnimation.SleepyDuration } } } SequentialAnimation { id: dismissAnimation alwaysRunToEnd: true running: false UbuntuNumberAnimation { target: rectangleContents property: "opacity" to: 0.0 duration: UbuntuAnimation.SlowDuration } ScriptAction { script: root.disable() } } Component.onCompleted: { opacity = 0.85 } } } } messaging-app-0.1+16.04.20160323/src/qml/StandardAnimation.qml0000644000015600001650000000137712674565025024165 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2013 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 NumberAnimation { duration: 300 easing.type: Easing.InOutQuad } messaging-app-0.1+16.04.20160323/src/qml/MessagesListView.qml0000644000015600001650000001153012674565025024013 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem import Ubuntu.Contacts 0.1 import Ubuntu.History 0.1 import "dateUtils.js" as DateUtils MultipleSelectionListView { id: root property var _currentSwipedItem: null property list _availableActions property string latestEventId: "" function updateSwippedItem(item) { if (item.swipping) { return } if (item.swipeState !== "Normal") { if (_currentSwipedItem !== item) { if (_currentSwipedItem) { _currentSwipedItem.resetSwipe() } _currentSwipedItem = item } } else if (item.swipeState !== "Normal" && _currentSwipedItem === item) { _currentSwipedItem = null } } // fake bottomMargin header: Item { height: units.gu(1) } listModel: participants.length > 0 ? eventModel : null verticalLayoutDirection: ListView.BottomToTop highlightFollowsCurrentItem: true // this is to keep the scrolling smooth cacheBuffer: units.gu(10)*20 currentIndex: 0 _availableActions: [ Action { id: infoAction iconName: "info" text: i18n.tr("Info") onTriggered: { var messageData = listModel.get(value._index) var messageType = messageData.textMessageAttachments.length > 0 ? i18n.tr("MMS") : i18n.tr("SMS") var messageInfo = {"type": messageType, "senderId": messageData.senderId, "sender": messageData.sender, "timestamp": messageData.timestamp, "textReadTimestamp": messageData.textReadTimestamp, "status": messageData.textMessageStatus, "participants": messages.participants} messageInfoDialog.showMessageInfo(messageInfo) } }, Action { id: reloadAction iconName: "reload" text: i18n.tr("Retry") onTriggered: value.resendMessage() }, Action { id: copyAction iconName: "edit-copy" text: i18n.tr("Copy") onTriggered: value.copyMessage() } ] listDelegate: Loader { id: loader anchors.left: parent.left anchors.right: parent.right height: status == Loader.Ready ? item.height : 0 Component.onCompleted: { var properties = {"messageData": model} var sourceFile = textMessageType == HistoryThreadModel.MessageTypeInformation ? "AccountSectionDelegate.qml" : "RegularMessageDelegate.qml" loader.setSource(sourceFile, properties) } Binding { target: loader.item property: "index" value: index when: (loader.status === Loader.Ready) } Binding { target: loader.item property: "delegateItem" value: loader when: (loader.status === Loader.Ready) } } onSelectionDone: { var removeDividers = (items.count == eventModel.count) var events = []; for (var i=0; i < items.count; i++) { var event = items.get(i).model if (!removeDividers && event.textMessageType == HistoryThreadModel.MessageTypeInformation) { continue; } events.push(event.properties); } if (events.length > 0) { eventModel.removeEvents(events); } } Timer { id: newMessageTimer interval: 50 repeat: false onTriggered: positionViewAtBeginning() } onCountChanged: { if (count == 0) { latestEventId = "" return } if (latestEventId == "") { latestEventId = eventModel.get(0).eventId } else if (latestEventId != eventModel.get(0).eventId) { latestEventId = eventModel.get(0).eventId newMessageTimer.start() } } } messaging-app-0.1+16.04.20160323/src/qml/ThreadDelegate.qml0000644000015600001650000003440512674565025023425 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 import Ubuntu.Telephony 0.1 import Ubuntu.Contacts 0.1 import QtContacts 5.0 import Ubuntu.History 0.1 import "dateUtils.js" as DateUtils ListItemWithActions { id: delegate property var participant: participants ? participants[0] : {} property bool groupChat: participants.length > 1 property string searchTerm property string phoneNumber: delegateHelper.phoneNumber property bool unknownContact: delegateHelper.isUnknown property string threadId: model.threadId property var displayedEvent: null property var displayedEventTextAttachments: displayedEvent ? displayedEvent.textMessageAttachments : eventTextAttachments property var displayedEventTimestamp: displayedEvent ? displayedEvent.timestamp : eventTimestamp property var displayedEventTextMessage: displayedEvent ? displayedEvent.textMessage : eventTextMessage property QtObject presenceItem: delegateHelper.presenceItem property string groupChatLabel: { var firstRecipient if (unknownContact) { firstRecipient = delegateHelper.phoneNumber } else { firstRecipient = delegateHelper.alias } if (participants.length > 1) { // TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients return i18n.tr("%1 + %2").arg(firstRecipient).arg(String(participants.length-1)) } return firstRecipient } function formatDisplayedText(text) { return text.replace("\n", " ") } property string textMessage: { // check if this is an mms, if so, search for the actual text var imageCount = 0 var videoCount = 0 var contactCount = 0 var audioCount = 0 var attachmentCount = 0 for (var i = 0; i < displayedEventTextAttachments.length; i++) { if (startsWith(displayedEventTextAttachments[i].contentType, "text/plain")) { return application.readTextFile(displayedEventTextAttachments[i].filePath) } else if (startsWith(displayedEventTextAttachments[i].contentType, "image/")) { imageCount++ } else if (startsWith(displayedEventTextAttachments[i].contentType, "video/")) { videoCount++ } else if (startsWith(displayedEventTextAttachments[i].contentType, "text/vcard") || startsWith(displayedEventTextAttachments[i].contentType, "text/x-vcard")) { contactCount++ } else if (startsWith(displayedEventTextAttachments[i].contentType, "audio/")) { audioCount++ } } attachmentCount = imageCount + videoCount + contactCount + audioCount if (imageCount > 0 && attachmentCount == imageCount) { return i18n.tr("Attachment: %1 image", "Attachments: %1 images").arg(imageCount) } if (videoCount > 0 && attachmentCount == videoCount) { return i18n.tr("Attachment: %1 video", "Attachments: %1 videos").arg(videoCount) } if (contactCount > 0 && attachmentCount == contactCount) { return i18n.tr("Attachment: %1 contact", "Attachments: %1 contacts").arg(contactCount) } if (audioCount > 0 && attachmentCount == audioCount) { return i18n.tr("Attachment: %1 audio clip", "Attachments: %1 audio clips").arg(audioCount) } if (attachmentCount > 0) { return i18n.tr("Attachment: %1 file", "Attachments: %1 files").arg(attachmentCount) } return formatDisplayedText(displayedEventTextMessage) } anchors.left: parent.left anchors.right: parent.right height: units.gu(10) leftSideAction: Action { iconName: "delete" text: i18n.tr("Delete") onTriggered: { mainView.removeThreads(model.threads) } } Component.onCompleted: { if (searchTerm !== "") { delegateHelper.updateSearch() } } ContactAvatar { id: avatar fallbackAvatarUrl: { if (groupChat) { return "image://theme/contact-group" } else if (delegateHelper.avatar !== "") { return delegateHelper.avatar } else { return "image://theme/contact" } } fallbackDisplayName: delegateHelper.alias showAvatarPicture: groupChat || (delegateHelper.avatar !== "") || (initials.length === 0) anchors { left: parent.left top: parent.top bottom: parent.bottom } height: units.gu(6) width: units.gu(6) } Label { id: contactName anchors { top: avatar.top topMargin: units.gu(0.5) left: avatar.right leftMargin: units.gu(1) } color: UbuntuColors.lightAubergine text: { if (groupChat) { return groupChatLabel } else { if (delegateHelper.phoneNumber == "x-ofono-unknown") { // FIXME: replace the dtr() call by a regular tr() call after // string freeze return i18n.dtr("telephony-service", "Unknown Number") } else if (unknownContact) { return delegateHelper.phoneNumber } else { return delegateHelper.alias } } } } Label { id: time anchors { verticalCenter: contactName.verticalCenter right: parent.right } text: { if (!displayedEvent) { Qt.formatTime(displayedEventTimestamp, Qt.DefaultLocaleShortDate) } else { DateUtils.friendlyDay(Qt.formatDate(displayedEventTimestamp, "yyyy/MM/dd")) } } fontSize: "small" } Image { id: protocolIcon anchors { top: time.bottom topMargin: units.gu(1) right: parent.right } height: units.gu(2) width: units.gu(2) visible: source !== "" source: { if (delegateHelper.presenceType != PresenceRequest.PresenceTypeUnknown && delegateHelper.presenceType != PresenceRequest.PresenceTypeUnset) { return telepathyHelper.accountForId(delegateHelper.presenceAccountId).protocolInfo.icon } return "" } } UbuntuShape { id: unreadCountIndicator height: units.gu(2) width: height anchors { top: avatar.top topMargin: units.gu(-0.5) left: avatar.left leftMargin: units.gu(-0.5) } z: 1 visible: unreadCount > 0 color: "#38b44a" Label { anchors.centerIn: parent text: unreadCount color: "white" fontSize: "x-small" font.weight: Font.Light } } // This is currently not being used in the new designs, but let's keep it here for now /* Label { id: phoneType anchors { top: contactName.bottom left: contactName.left } text: delegateHelper.phoneNumberSubTypeLabel color: "gray" fontSize: "x-small" }*/ Label { id: latestMessage anchors { top: contactName.bottom topMargin: units.gu(0.5) left: contactName.left right: time.left rightMargin: units.gu(3) bottom: avatar.bottom } elide: Text.ElideRight fontSize: "x-small" text: textMessage // avoid any kind of formatting in the text message preview textFormat: Text.PlainText maximumLineCount: 1 } Item { id: delegateHelper property string phoneNumber: participant.identifier property string alias: participant.alias ? participant.alias : "" property string avatar: participant.avatar ? participant.avatar : "" property string contactId: participant.contactId ? participant.contactId : "" property alias subTypes: phoneDetail.subTypes property alias contexts: phoneDetail.contexts property bool isUnknown: contactId === "" property string phoneNumberSubTypeLabel: "" property alias presenceAccountId: presenceRequest.accountId property alias presenceType: presenceRequest.type property alias presenceItem: presenceRequest property string latestFilter: "" property var searchHistoryFilter property var searchHistoryFilterString: 'import Ubuntu.History 0.1; HistoryUnionFilter { %1 }' property var searchIntersectionFilter: 'HistoryIntersectionFilter { HistoryFilter { filterProperty: "accountId"; filterValue: \'%1\' } HistoryFilter { filterProperty: "threadId"; filterValue: \'%2\' } HistoryFilter { filterProperty: "message"; filterValue: searchTerm; matchFlags: HistoryFilter.MatchContains } } ' function updateSearch() { var found = false var searchTermLowerCase = searchTerm.toLowerCase() if (searchTerm !== "") { if ((delegateHelper.phoneNumber.toLowerCase().search(searchTermLowerCase) !== -1) || (!unknownContact && delegateHelper.alias.toLowerCase().search(searchTermLowerCase) !== -1)) { found = true } else { var componentFilters = "" for(var i in model.threads) { componentFilters += searchIntersectionFilter.arg(model.threads[i].accountId).arg(model.threads[i].threadId) } var finalString = searchHistoryFilterString.arg(componentFilters) if (finalString !== latestFilter) { delegateHelper.searchHistoryFilter = Qt.createQmlObject(finalString, searchEventModelLoader) latestFilter = finalString } searchEventModelLoader.active = true } } else { delegate.displayedEvent = null searchEventModelLoader.active = false found = true } delegate.height = found ? units.gu(8) : 0 } // WORKAROUND: history-service can't filter by contact names Connections { target: delegate onSearchTermChanged: { delegateHelper.updateSearch() } } Loader { id: searchEventModelLoader active: false asynchronous: true sourceComponent: searchEventModelComponent } Component { id: searchEventModelComponent HistoryEventModel { id: eventModel type: HistoryThreadModel.EventTypeText filter: delegateHelper.searchHistoryFilter onCountChanged: { if (count > 0) { delegate.height = units.gu(8) delegate.displayedEvent = eventModel.get(0) } else if (searchTerm == "") { delegate.height = units.gu(8) delegate.displayedEvent = null } else { delegate.displayedEvent = null delegate.height = 0 } } } } // FIXME: there is another instance of PresenceRequest in Messages.qml, // we have to reuse the same instance when possible PresenceRequest { id: presenceRequest accountId: { // if this is a regular sms chat, try requesting the presence on // a multimedia account if (!telepathyHelper.ready) { return "" } var account = telepathyHelper.accountForId(model.accountId) if (!account) { return "" } if (account.type == AccountEntry.PhoneAccount) { for (var i in telepathyHelper.accounts) { var tmpAccount = telepathyHelper.accounts[i] if (tmpAccount.type == AccountEntry.MultimediaAccount) { return tmpAccount.accountId } } return "" } return account.accountId } // we just request presence on 1-1 chats identifier: !groupChat ? participant.identifier : "" } function updateSubTypeLabel() { var subLabel = ""; if (participant && participant.phoneNumber) { var typeInfo = phoneTypeModel.get(phoneTypeModel.getTypeIndex(phoneDetail)) if (typeInfo) { subLabel = typeInfo.label } } phoneNumberSubTypeLabel = subLabel } onSubTypesChanged: updateSubTypeLabel(); onContextsChanged: updateSubTypeLabel(); onIsUnknownChanged: updateSubTypeLabel(); PhoneNumber { id: phoneDetail contexts: participant.phoneContexts ? participant.phoneContexts : [] subTypes: participant.phoneSubTypes ? participant.phoneSubTypes : [] } ContactDetailPhoneNumberTypeModel { id: phoneTypeModel } } } messaging-app-0.1+16.04.20160323/src/qml/Stickers/0000755000015600001650000000000012674565500021627 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/src/qml/Stickers/StickerDelegate.qml0000644000015600001650000000167112674565025025410 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.3 import Ubuntu.Components 1.3 AbstractButton { property alias stickerSource: image.source Image { id: image anchors.fill: parent anchors.margins: units.gu(0.5) fillMode: Image.PreserveAspectFit smooth: true } } messaging-app-0.1+16.04.20160323/src/qml/Stickers/HistoryButton.qml0000644000015600001650000000172312674565025025204 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.3 import Ubuntu.Components 1.3 AbstractButton { property bool selected Rectangle { anchors.fill: parent color: selected ? "#f5f5f5" : "transparent" } Icon { name: "history" anchors.fill: parent anchors.margins: units.gu(1.5) } } messaging-app-0.1+16.04.20160323/src/qml/Stickers/StickersPicker.qml0000644000015600001650000000754412674565025025303 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.3 import Ubuntu.Components 1.3 import messagingapp.private 0.1 FocusScope { id: pickerRoot signal stickerSelected(string path) Component.onCompleted: { StickersHistoryModel.databasePath = dataLocation + "/stickers/stickers.sqlite" StickersHistoryModel.limit = 10 } property bool expanded: false readonly property int packCount: stickerPacksModel.count // FIXME: try to get something similar to the keyboard height // FIXME: animate the displaying height: expanded ? units.gu(30) : 0 opacity: expanded ? 1 : 0 visible: opacity > 0 Connections { target: Qt.inputMethod onVisibleChanged: { if (Qt.inputMethod.visible && oskEnabled) { pickerRoot.expanded = false } } } Behavior on height { UbuntuNumberAnimation { } } Behavior on opacity { UbuntuNumberAnimation { } } ListView { id: setsList model: stickerPacksModel orientation: ListView.Horizontal anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top height: units.gu(6) header: HistoryButton { height: units.gu(6) width: height onTriggered: stickersGrid.model.packName = "" selected: stickersGrid.model.packName === "" } delegate: StickerPackDelegate { anchors.top: parent.top anchors.bottom: parent.bottom width: units.gu(6) path: filePath onTriggered: stickersGrid.model.packName = fileName selected: stickersGrid.model.packName === fileName } } Rectangle { anchors.fill: stickersGrid color: "#f5f5f5" } GridView { id: stickersGrid anchors.left: parent.left anchors.right: parent.right anchors.top: setsList.bottom anchors.bottom: parent.bottom clip: true cellWidth: units.gu(10) cellHeight: units.gu(10) visible: stickersGrid.model.packName.length > 0 model: stickersModel delegate: StickerDelegate { stickerSource: filePath width: stickersGrid.cellWidth height: stickersGrid.cellHeight onTriggered: { StickersHistoryModel.add("%1/%2".arg(stickersGrid.model.packName).arg(fileName)) pickerRoot.stickerSelected(stickerSource) } } } GridView { id: historyGrid anchors.left: parent.left anchors.right: parent.right anchors.top: setsList.bottom anchors.bottom: parent.bottom clip: true cellWidth: units.gu(10) cellHeight: units.gu(10) visible: stickersGrid.model.packName.length === 0 model: StickersHistoryModel delegate: StickerDelegate { stickerSource: "%1/stickers/%2".arg(dataLocation).arg(sticker) width: stickersGrid.cellWidth height: stickersGrid.cellHeight onTriggered: { StickersHistoryModel.add(sticker) pickerRoot.stickerSelected(stickerSource) } } } } messaging-app-0.1+16.04.20160323/src/qml/Stickers/StickerPacksModel.qml0000644000015600001650000000144612674565025025720 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.3 import Qt.labs.folderlistmodel 2.1 FolderListModel { folder: dataLocation + "/stickers/" showFiles: false } messaging-app-0.1+16.04.20160323/src/qml/Stickers/StickersModel.qml0000644000015600001650000000160512674565025025116 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.3 import Qt.labs.folderlistmodel 2.1 FolderListModel { property string packName folder: "%1/stickers/%2".arg(dataLocation).arg(packName) showDirs: false nameFilters: ["*.png", "*.webm", "*.gif"] } messaging-app-0.1+16.04.20160323/src/qml/Stickers/StickerPackDelegate.qml0000644000015600001650000000264712674565025026213 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.3 import Qt.labs.folderlistmodel 2.1 import Ubuntu.Components 1.3 AbstractButton { property alias path: stickers.folder property string name property bool selected Rectangle { anchors.fill: parent color: selected ? "#f5f5f5" : "transparent" } Icon { anchors.fill: parent visible: stickers.count === 0 name: "cancel" } Image { visible: stickers.count > 0 anchors.fill: parent anchors.margins: units.gu(0.5) fillMode: Image.PreserveAspectFit smooth: true source: visible ? stickers.get(0, "filePath") : "" } FolderListModel { id: stickers showDirs: false nameFilters: ["*.png", "*.webm", "*.gif"] } } messaging-app-0.1+16.04.20160323/src/qml/Stickers/CMakeLists.txt0000644000015600001650000000031112674565025024364 0ustar pbuserpbgroup00000000000000file(GLOB STICKERS_QML_FILES *.qml) add_custom_target(messaging_app_Stickers_QMlFiles ALL SOURCES ${STICKERS_QML_FILES}) install(FILES ${STICKERS_QML_FILES} DESTINATION ${MESSAGING_APP_DIR}/Stickers) messaging-app-0.1+16.04.20160323/src/qml/MessageInfoDialog.qml0000644000015600001650000001220512674565025024075 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 import Ubuntu.History 0.1 import Ubuntu.Telephony.PhoneNumber 0.1 as PhoneUtils Item { id: root property QtObject activeDialog: null property var activeMessage: null function showMessageInfo(message) { if (!activeDialog) { Qt.inputMethod.hide() activeMessage = message activeDialog = PopupUtils.open(messageInfoDialog, QuickUtils.rootItem(this)) } } Component { id: messageInfoDialog Dialog { id: dialogue parent: QuickUtils.rootItem(this) function statusToString(status) { switch(status) { case HistoryThreadModel.MessageStatusDelivered: return i18n.tr("Delivered") case HistoryThreadModel.MessageStatusTemporarilyFailed: return i18n.tr("Temporarily Failed") case HistoryThreadModel.MessageStatusPermanentlyFailed: return i18n.tr("Failed") case HistoryThreadModel.MessageStatusAccepted: return i18n.tr("Accepted") case HistoryThreadModel.MessageStatusRead: return i18n.tr("Read") case HistoryThreadModel.MessageStatusDeleted: return i18n.tr("Deleted") case HistoryThreadModel.MessageStatusPending: return i18n.tr("Pending") case HistoryThreadModel.MessageStatusUnknown: //FIXME: Received messages has Unknown status is that correct?? if (root.activeMessage.senderId !== "self") { return i18n.tr("Received") } else { return i18n.tr("Unknown") } default: return i18n.tr("Unknown") } } function getTargetName(message) { if (message.senderId !== "self") { return i18n.tr("Myself") } else if (message.participants.length > 1) { return i18n.tr("Group") } else { return PhoneUtils.PhoneUtils.format(message.participants[0].identifier) } } title: i18n.tr("Message info") Label { text: "%1: %2".arg(i18n.tr("Type")).arg(root.activeMessage.type) } Label { text: "%1: %2".arg(i18n.tr("From")) .arg(root.activeMessage.senderId !== "self" ? PhoneUtils.PhoneUtils.format(root.activeMessage.senderId) : i18n.tr("Myself")) } Label { text: "%1: %2".arg(i18n.tr("To")) .arg(getTargetName(root.activeMessage)) } Repeater { model: root.activeMessage.senderId === "self" && root.activeMessage.participants.length > 1 ? root.activeMessage.participants : [] Label { text: PhoneUtils.PhoneUtils.format(modelData.identifier) } } Label { text: "%1: %2".arg(i18n.tr("Sent")).arg(Qt.formatDateTime(root.activeMessage.timestamp, Qt.DefaultLocaleShortDate)) visible: (root.activeMessage.senderId === "self") } Label { text: "%1: %2".arg(i18n.tr("Received")).arg(Qt.formatDateTime(root.activeMessage.timestamp, Qt.DefaultLocaleShortDate)) visible: (root.activeMessage.senderId !== "self") } Label { text: "%1: %2".arg(i18n.tr("Read")).arg(Qt.formatDateTime(root.activeMessage.textReadTimestamp, Qt.DefaultLocaleShortDate)) visible: (root.activeMessage.senderId !== "self") && (root.activeMessage.textReadTimestamp > 0) } Label { text: "%1: %2".arg(i18n.tr("Status")).arg(statusToString(root.activeMessage.status)) } Button { text: i18n.tr("Close") onClicked: { PopupUtils.close(root.activeDialog) } } Component.onDestruction: { root.activeDialog = null root.activeMessage = null } } } } messaging-app-0.1+16.04.20160323/src/qml/InputInfo.qml0000644000015600001650000000110512674565025022465 0ustar pbuserpbgroup00000000000000import QtQuick 2.0 //import Unity.InputInfo 0.1 Item { // FIXME: implement correctly without relying on unity private stuff property bool hasMouse: mainView.dualPanel //miceModel.count > 0 || touchPadModel.count > 0 property bool hasKeyboard: false //keyboardsModel.count > 0 /*InputDeviceModel { id: miceModel deviceFilter: InputInfo.Mouse } InputDeviceModel { id: touchPadModel deviceFilter: InputInfo.TouchPad } InputDeviceModel { id: keyboardsModel deviceFilter: InputInfo.Keyboard }*/ } messaging-app-0.1+16.04.20160323/src/qml/ContentImport.qml0000644000015600001650000001020012674565025023353 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2012-2014 Canonical, Ltd. * * 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.2 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 as Popups import Ubuntu.Content 1.3 as ContentHub Item { id: root property var importDialog: null signal contentReceived(string contentUrl) function requestContent(contentType) { if (!root.importDialog) { root.importDialog = PopupUtils.open(contentHubDialog, root) root.importDialog.contentType = contentType } else { console.warn("Import dialog already running") } } function requestPicture() { requestContent(ContentHub.ContentType.Pictures) } function requestVideo() { requestContent(ContentHub.ContentType.Videos) } function requestContact() { requestContent(ContentHub.ContentType.Contacts) } function requestDocument() { requestContent(ContentHub.ContentType.Documents) } Component { id: contentHubDialog Popups.PopupBase { id: dialogue property alias activeTransfer: signalConnections.target property alias contentType: peerPicker.contentType focus: true Rectangle { anchors.fill: parent ContentHub.ContentPeerPicker { id: peerPicker objectName: "contentPeerPicker" anchors.fill: parent contentType: ContentHub.ContentType.Pictures handler: ContentHub.ContentHandler.Source onPeerSelected: { peer.selectionType = ContentHub.ContentTransfer.Multiple dialogue.activeTransfer = peer.request() } onCancelPressed: { PopupUtils.close(root.importDialog) } } } Connections { id: signalConnections onStateChanged: { var done = ((dialogue.activeTransfer.state === ContentHub.ContentTransfer.Charged) || (dialogue.activeTransfer.state === ContentHub.ContentTransfer.Aborted)) if (dialogue.activeTransfer.state === ContentHub.ContentTransfer.Charged) { dialogue.hide() for (var i in dialogue.activeTransfer.items) { root.contentReceived(dialogue.activeTransfer.items[i].url) } } if (done) { acceptTimer.restart() } } } // WORKAROUND: Work around for application becoming insensitive to touch events // if the dialog is dismissed while the application is inactive. // Just listening for changes to Qt.application.active doesn't appear // to be enough to resolve this, so it seems that something else needs // to be happening first. As such there's a potential for a race // condition here, although as yet no problem has been encountered. Timer { id: acceptTimer interval: 100 repeat: true running: false onTriggered: { if(Qt.application.active) { PopupUtils.close(root.importDialog) } } } Component.onDestruction: root.importDialog = null } } } messaging-app-0.1+16.04.20160323/src/qml/MessagingContactViewPage.qml0000644000015600001650000001156512674565025025446 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * dialer-app 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. * * dialer-app 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.2 import QtContacts 5.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 as Popups import Ubuntu.Contacts 0.1 import Ubuntu.AddressBook.Base 0.1 import Ubuntu.AddressBook.ContactView 0.1 import Ubuntu.AddressBook.ContactShare 0.1 ContactViewPage { id: root objectName: "contactViewPage" readonly property string contactEditorPageURL: Qt.resolvedUrl("MessagingContactEditorPage.qml") property string addPhoneToContact: "" property var contactListPage: null function addPhoneToContactImpl(contact, phoneNumber) { var detailSourceTemplate = "import QtContacts 5.0; PhoneNumber{ number: \"" + phoneNumber.trim() + "\" }" var newDetail = Qt.createQmlObject(detailSourceTemplate, contact) if (newDetail) { contact.addDetail(newDetail) mainStack.addPageToCurrentColumn(root, root.contactEditorPageURL, { model: root.model, contact: contact, initialFocusSection: "phones", newDetails: [newDetail], contactListPage: root.contactListPage }) root.addPhoneToContact = "" } else { console.warn("Fail to create phone number detail") } } headerActions: [ Action { objectName: "share" text: i18n.tr("Share") iconName: "share" visible: root.editable onTriggered: { pageStack.addComponentToCurrentColumnSync(root, contactShareComponent, { contactModel: root.model, contacts: [root.contact] }) } }, Action { objectName: "edit" text: i18n.tr("Edit") iconName: "edit" visible: root.editable onTriggered: { pageStack.addFileToCurrentColumnSync(root, contactEditorPageURL, { model: root.model, contact: root.contact, contactListPage: root.contactListPage }) } } ] extensions: ContactDetailSyncTargetView { contact: root.contact anchors { left: parent.left right: parent.right } height: implicitHeight } Component { id: contactShareComponent ContactSharePage {} } Component { id: contactModelComponent ContactModel { id: contactModelHelper manager: (typeof(QTCONTACTS_MANAGER_OVERRIDE) !== "undefined") && (QTCONTACTS_MANAGER_OVERRIDE != "") ? QTCONTACTS_MANAGER_OVERRIDE : "galera" autoUpdate: false // make sure that the model is empty (no extra contact loaded) filter: InvalidFilter {} } } onActionTrigerred: { if ((action === "message") || (action == "default")) { if (root.contactListPage) { var list = root.contactListPage list.addRecipient(detail.value(0)) } else { console.warn("Action message without contactList") mainView.startChat(detail.value(0), "") return } } else { Qt.openUrlExternally(("%1:%2").arg(action).arg(detail.value(0))) } pageStack.removePage(root) } onContactRemoved: pageStack.removePage(root) onContactFetched: { root.contact = contact if (root.active && root.addPhoneToContact != "") { root.addPhoneToContactImpl(contact, root.addPhoneToContact) root.addPhoneToContact = "" } } onActiveChanged: { if (active && root.contact && root.addPhoneToContact != "") { root.addPhoneToContactImpl(contact, root.addPhoneToContact) root.addPhoneToContact = "" } } Component.onCompleted: { if (!root.model && root.editable) { root.model = contactModelComponent.createObject(root) } } } messaging-app-0.1+16.04.20160323/src/qml/MMSDelegate.qml0000644000015600001650000002101412674565025022642 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Telephony 0.1 MessageDelegate { id: root property var attachments: messageData.textMessageAttachments property var dataAttachments: [] property var textAttachements: [] property string messageText: "" swipeLocked: { for (var i=0; i < attachmentsView.children.length; i++) { if (attachmentsView.children[i].item && !attachmentsView.children[i].item.swipeLocked) { return false } } return true } function clicked(mouse) { var childPoint = root.mapToItem(attachmentsView, mouse.x, mouse.y) var attachment = attachmentsView.childAt(childPoint.x, childPoint.y) if (attachment && attachment.item && attachment.item.previewer) { var properties = {} properties["attachment"] = attachment.item.attachment properties["thumbnail"] = attachment.item mainStack.addFileToCurrentColumnSync(messages.basePage, Qt.resolvedUrl(attachment.item.previewer), properties) } } function deleteMessage() { eventModel.removeEvents([messageData.properties]); } function resendMessage() { var newAttachments = [] for (var i = 0; i < attachments.length; i++) { var attachment = [] var item = attachments[i] // we dont include smil files. they will be auto generated if (item.contentType.toLowerCase() === "application/smil") { continue } // text messages will be sent as textMessage. skip it // to avoid duplication if (item.contentType.toLowerCase() === "text/plain") { continue } attachment.push(item.attachmentId) attachment.push(item.contentType) attachment.push(item.filePath) newAttachments.push(attachment) } messages.sendMessage(textMessage, messages.participantIds, newAttachments, {"x-canonical-tmp-files": true}) deleteMessage(); } function copyMessage() { Clipboard.push(root.messageText) application.showNotificationMessage(i18n.tr("Text message copied to clipboard"), "edit-copy") } onAttachmentsChanged: { root.dataAttachments = [] root.textAttachements = [] for (var i=0; i < attachments.length; i++) { var attachment = attachments[i] if (startsWith(attachment.contentType, "text/plain") ) { root.textAttachements.push(attachment) } else if (startsWith(attachment.contentType, "audio/")) { root.dataAttachments.push({"type": "audio", "data": attachment, "delegateSource": "MMS/MMSAudio.qml", }) } else if (startsWith(attachment.contentType, "image/")) { root.dataAttachments.push({"type": "image", "data": attachment, "delegateSource": "MMS/MMSImage.qml", }) } else if (startsWith(attachment.contentType, "application/smil") || startsWith(attachment.contentType, "application/x-smil")) { // smil files will always be ignored here } else if (startsWith(attachment.contentType, "text/vcard") || startsWith(attachment.contentType, "text/x-vcard")) { root.dataAttachments.push({"type": "vcard", "data": attachment, "delegateSource": "MMS/MMSContact.qml" }) } else if (startsWith(attachment.contentType, "video/")) { root.dataAttachments.push({"type": "video", "data": attachment, "delegateSource": "MMS/MMSVideo.qml", }) } else { root.dataAttachments.push({"type": "default", "data": attachment, "delegateSource": "MMS/MMSDefault.qml" }) } } attachmentsRepeater.model = root.dataAttachments if (root.textAttachements.length > 0) { root.messageText = application.readTextFile(root.textAttachements[0].filePath) bubbleLoader.active = true root._lastItem = bubbleLoader } } height: attachmentsView.height Column { id: attachmentsView anchors { top: parent.top left: parent.left right: parent.right } height: childrenRect.height spacing: units.gu(0.1) Repeater { id: attachmentsRepeater onCountChanged: { if (bubbleLoader.active) { root._lastItem = bubbleLoader } else { root._lastItem = itemAt(count - 1) } } Loader { id: attachmentLoader states: [ State { when: root.incoming name: "incoming" AnchorChanges { target: attachmentLoader anchors.left: parent ? parent.left : undefined } }, State { when: !root.incoming name: "outgoing" AnchorChanges { target: attachmentLoader anchors.right: parent ? parent.right : undefined } } ] source: modelData.delegateSource Binding { target: attachmentLoader.item ? attachmentLoader.item : null property: "attachment" value: modelData.data when: attachmentLoader.status === Loader.Ready } Binding { target: attachmentLoader.item ? attachmentLoader.item : null property: "lastItem" value: _lastItem === attachmentLoader when: attachmentLoader.status === Loader.Ready } } } Loader { id: bubbleLoader source: Qt.resolvedUrl("MMSMessageBubble.qml") active: false states: [ State { when: incoming name: "incoming" AnchorChanges { target: bubbleLoader anchors.left: parent.left } }, State { name: "outgoing" when: !incoming AnchorChanges { target: bubbleLoader anchors.right: parent.right } } ] Binding { target: bubbleLoader.item property: "messageText" value: root.messageText.length > 0 ? root.messageText : i18n.tr("Missing message data") when: bubbleLoader.status === Loader.Ready } Binding { target: bubbleLoader.item property: "sender" value: messageData.sender.alias !== "" ? messageData.sender.alias : messageData.senderId when: messageData.participants.length > 1 && bubbleLoader.status === Loader.Ready && messageData.senderId !== "self" } } } } messaging-app-0.1+16.04.20160323/src/qml/DeliveryStatus.qml0000644000015600001650000000236312674565025023550 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.History 0.1 Image { property int messageStatus: -1 enabled: true height: enabled ? units.gu(1) : 0 width: enabled ? undefined : 0 fillMode: Image.PreserveAspectFit source: { if (!enabled) { return "" } if (messageStatus == HistoryThreadModel.MessageStatusDelivered) { return Qt.resolvedUrl("./assets/single_tick.svg") } else if (messageStatus == HistoryThreadModel.MessageStatusRead) { return Qt.resolvedUrl("./assets/double_tick.svg") } return "" } } messaging-app-0.1+16.04.20160323/src/qml/Messages.qml0000644000015600001650000013355512674565025022340 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2016 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtQuick.Window 2.0 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem import Ubuntu.Components.Popups 1.3 import Ubuntu.Content 1.3 import Ubuntu.History 0.1 import Ubuntu.Telephony 0.1 import Ubuntu.Contacts 0.1 import messagingapp.private 0.1 import "dateUtils.js" as DateUtils Page { id: messages objectName: "messagesPage" // this property can be overriden by the user using the account switcher, // in the suru divider property string accountId: "" property QtObject account: getCurrentAccount() property bool phoneAccount: isPhoneAccount() property variant participants: [] property variant participantIds: [] property bool groupChat: participants.length > 1 property bool keyboardFocus: true property alias selectionMode: messageList.isInSelectionMode // FIXME: MainView should provide if the view is in portait or landscape property int orientationAngle: Screen.angleBetween(Screen.primaryOrientation, Screen.orientation) property bool landscape: orientationAngle == 90 || orientationAngle == 270 property var sharedAttachmentsTransfer: [] property alias contactWatcher: contactWatcherInternal property string text: "" property string scrollToEventId: "" property bool isSearching: scrollToEventId !== "" property string latestEventId: "" property var pendingEventsToMarkAsRead: [] property bool reloadFilters: false // to be used by tests as variant does not work with autopilot property bool userTyping: false property QtObject chatEntry: !account ? null : chatManager.chatEntryForParticipants(account.accountId, participants, true) property string firstParticipantId: participantIds.length > 0 ? participantIds[0] : "" property variant firstParticipant: participants.length > 0 ? participants[0] : null property var threads: [] property QtObject presenceRequest: presenceItem property var accountsModel: getAccountsModel() property alias oskEnabled: keyboard.oskEnabled property bool isReady: false property string firstRecipientAlias: ((contactWatcher.isUnknown && contactWatcher.isInteractive) || contactWatcher.alias === "") ? contactWatcher.identifier : contactWatcher.alias // When using this view from the bottom edge, we are not in the stack, so we need to push on top of the parent page property var basePage: messages property bool startedFromBottomEdge: false signal ready signal cancel function getAccountsModel() { var accounts = [] // on new chat dialogs display all possible accounts if (accountId == "" && participants.length === 0) { for (var i in telepathyHelper.activeAccounts) { accounts.push(telepathyHelper.activeAccounts[i]) } // suru divider must be empty if there is only one sim card if (accounts.length == 1 && accounts[0].type == AccountEntry.PhoneAccount) { return [] } return accounts } var tmpAccount = telepathyHelper.accountForId(messages.accountId) // on generic accounts we don't give the option to switch to another account if (tmpAccount && tmpAccount.type == AccountEntry.GenericAccount) { return [tmpAccount] } // if we get here, this is a regular sms conversation. just // add the available phone accounts next for (var i in telepathyHelper.activeAccounts) { var account = telepathyHelper.activeAccounts[i] if (account.type == AccountEntry.PhoneAccount) { accounts.push(account) } } return accounts } function getSectionsModel() { var accountNames = [] // suru divider must be empty if there is only one sim card if (messages.accountsModel.length == 1 && messages.accountsModel[0].type == AccountEntry.PhoneAccount) { return [] } for (var i in messages.accountsModel) { accountNames.push(messages.accountsModel[i].displayName) } return accountNames.length > 0 ? accountNames : [] } function getSelectedIndex() { if (accountId == "" && participants.length === 0) { // if this is a new message, just pre select the the // default phone account for messages if available if (multiplePhoneAccounts && telepathyHelper.defaultMessagingAccount) { for (var i in messages.accountsModel) { if (telepathyHelper.defaultMessagingAccount == messages.accountsModel[i]) { return i } } } // otherwise pre-select the first available phone account if any for (var i in messages.accountsModel) { if (messages.accountsModel[i].type == AccountEntry.PhoneAccount) { return i } } // otherwise select none return -1 } // if we get here, just pre-select the account that is set in messages.account return accountIndex(messages.account) } function accountIndex(account) { var index = -1; for (var i in messages.accountsModel) { if (messages.accountsModel[i] == account) { index = i; break; } } return index; } function getCurrentAccount() { if (messages.accountId !== "") { var tmpAccount = telepathyHelper.accountForId(messages.accountId) // if the selected account is a phone account, check if there is a default // phone account for messages if (tmpAccount && tmpAccount.type == AccountEntry.PhoneAccount) { if (telepathyHelper.defaultMessagingAccount) { for (var i in messages.accountsModel) { if (messages.accountsModel[i] == telepathyHelper.defaultMessagingAccount) { return telepathyHelper.defaultMessagingAccount } } } for (var i in messages.accountsModel) { if (messages.accountsModel[i].type == AccountEntry.PhoneAccount) { return messages.accountsModel[i] } } } for (var i in messages.accountsModel) { if (tmpAccount.accountId == messages.accountId) { return tmpAccount } } return null } else { return mainView.account } } function isPhoneAccount() { var tmpAccount = telepathyHelper.accountForId(accountId) return (!tmpAccount || tmpAccount.type == AccountEntry.PhoneAccount || tmpAccount.type == AccountEntry.MultimediaAccount) } function addNewThreadToFilter(newAccountId, participantIds) { var newAccount = telepathyHelper.accountForId(newAccountId) var matchType = HistoryThreadModel.MatchCaseSensitive if (newAccount.type == AccountEntry.PhoneAccount || newAccount.type == AccountEntry.MultimediaAccount) { matchType = HistoryThreadModel.MatchPhoneNumber } var thread = eventModel.threadForParticipants(newAccountId, HistoryThreadModel.EventTypeText, participantIds, matchType, true) var threadId = thread.threadId // dont change the participants list if (messages.participants.length == 0) { messages.participants = thread.participants var ids = [] for (var i in messages.participants) { ids.push(messages.participants[i].identifier) } messages.participantIds = ids; } var found = false; for (var i in messages.threads) { if (messages.threads[i].threadId == threadId && messages.threads[i].accountId == newAccountId) { found = true; break; } } if (!found) { messages.threads.push({"accountId": newAccountId, "threadId": threadId}) reloadFilters = !reloadFilters } return thread } function sendMessageNetworkCheck() { if (messages.account.simLocked) { Qt.inputMethod.hide() // workaround for bug #1461861 messages.focus = false PopupUtils.open(Qt.createComponent("Dialogs/SimLockedDialog.qml").createObject(messages)) return false } if (!messages.account.connected) { Qt.inputMethod.hide() // workaround for bug #1461861 messages.focus = false PopupUtils.open(noNetworkDialogComponent) return false } return true } // FIXME: support more stuff than just phone number function onPhonePickedDuringSearch(phoneNumber) { multiRecipient.addRecipient(phoneNumber) multiRecipient.clearSearch() multiRecipient.forceActiveFocus() } function sendMessage(text, participantIds, attachments, properties) { if (typeof(properties) === 'undefined') { properties = {} } // check if at least one account is selected if (!messages.account) { Qt.inputMethod.hide() // workaround for bug #1461861 messages.focus = false PopupUtils.open(Qt.createComponent("Dialogs/NoSIMCardSelectedDialog.qml").createObject(messages)) return false } // create the new thread and update the threadId list var thread = addNewThreadToFilter(messages.account.accountId, participantIds) for (var i=0; i < eventModel.count; i++) { var event = eventModel.get(i) if (event.senderId == "self" && event.accountId != messages.account.accountId) { var tmpAccount = telepathyHelper.accountForId(event.accountId) if (!tmpAccount || (tmpAccount.type == AccountEntry.MultimediaAccount && messages.account.type == AccountEntry.PhoneAccount)) { // we don't add the information event if the last outgoing message // was a fallback to a multimedia service break; } // if the last outgoing message used a different accountId, add an // information event and quit the loop eventModel.writeTextInformationEvent(messages.account.accountId, thread.threadId, participantIds, "") break; } else if (event.senderId == "self" && event.accountId == messages.account.accountId) { // in case last ougoing event used the same accountId, just skip break; } } if (!sendMessageNetworkCheck()) { // we can't simply send the message as the handler checks for // connection state. while this is not fixed, we generate the event here // and insert it into the history service var event = {} var timestamp = new Date() var tmpEventId = timestamp.toISOString() event["accountId"] = messages.account.accountId event["threadId"] = thread.threadId event["eventId"] = tmpEventId event["type"] = HistoryEventModel.MessageTypeText event["participants"] = thread.participants event["senderId"] = "self" event["timestamp"] = timestamp event["newEvent"] = false event["message"] = text event["messageStatus"] = HistoryEventModel.MessageStatusPermanentlyFailed event["readTimestamp"] = timestamp; event["subject"] = ""; // we dont support subject yet if (attachments.length > 0) { event["messageType"] = HistoryEventModel.MessageTypeMultiPart var newAttachments = [] for (var i = 0; i < attachments.length; i++) { var attachment = {} var item = attachments[i] attachment["accountId"] = messages.account.accountId attachment["threadId"] = thread.threadId attachment["eventId"] = tmpEventId attachment["attachmentId"] = item[0] attachment["contentType"] = item[1] attachment["filePath"] = item[2] attachment["status"] = HistoryEventModel.AttachmentDownloaded newAttachments.push(attachment) } event["attachments"] = newAttachments } else { event["messageType"] = HistoryEventModel.MessageTypeText } eventModel.writeEvents([event]); } else { var isMmsGroupChat = participants.length > 1 && telepathyHelper.mmsGroupChat && messages.account.type == AccountEntry.PhoneAccount // mms group chat only works if we know our own phone number var isSelfContactKnown = account.selfContactId != "" if (isMmsGroupChat && !isSelfContactKnown) { // TODO: inform the user to enter the phone number of the selected sim card manually // and use it in the telepathy-ofono account as selfContactId. return false } var fallbackAccountId = chatManager.sendMessage(messages.account.accountId, participantIds, text, attachments, properties) // create the new thread and update the threadId list if (fallbackAccountId != messages.account.accountId) { addNewThreadToFilter(fallbackAccountId, participantIds) } } // FIXME: soon it won't be just about SIM cards, so the dialogs need updating if (multiplePhoneAccounts && !telepathyHelper.defaultMessagingAccount && !settings.messagesDontAsk && account.type == AccountEntry.PhoneAccount) { Qt.inputMethod.hide() PopupUtils.open(Qt.createComponent("Dialogs/SetDefaultSIMCardDialog.qml").createObject(messages)) } else { // FIXME: We only show the swipe tutorial after select the default sim card to avoid problems with the dialog // Since the dialog will be removed soon we do not expend time refactoring the code to make it visible after the dialog swipeItemDemo.enable() } return true } function updateFilters(accounts, participants, reload, threads) { if (participants.length == 0 || accounts.length == 0) { return null } var componentUnion = "import Ubuntu.History 0.1; HistoryUnionFilter { %1 }" var componentFilters = "" if (threads.length > 0) { for (var i in threads) { var filterAccountId = 'HistoryFilter { property string value: "%1"; filterProperty: "accountId"; filterValue: value }'.arg(threads[i].accountId) var filterThreadId = 'HistoryFilter { property string value: "%1"; filterProperty: "threadId"; filterValue: value }'.arg(threads[i].threadId) componentFilters += 'HistoryIntersectionFilter { %1 %2 } '.arg(filterAccountId).arg(filterThreadId) } return Qt.createQmlObject(componentUnion.arg(componentFilters), eventModel) } var filterAccounts = [] if (messages.accountsModel.length == 1 && messages.accountsModel[0].type == AccountEntry.GenericAccount) { filterAccounts = [messages.accountsModel[0]] } else { for (var i in telepathyHelper.accounts) { var account = telepathyHelper.accounts[i] if (account.type === AccountEntry.PhoneAccount || account.type === AccountEntry.MultimediaAccount) { filterAccounts.push(account) } } } for (var i in filterAccounts) { var account = filterAccounts[i]; var filterValue = eventModel.threadIdForParticipants(account.accountId, HistoryThreadModel.EventTypeText, participants, account.type === AccountEntry.PhoneAccount || account.type === AccountEntry.MultimediaAccount ? HistoryThreadModel.MatchPhoneNumber : HistoryThreadModel.MatchCaseSensitive); if (filterValue === "") { continue } // WORKAROUND: we don't set value directly to filterValue otherwise strings matching color names // will be converted to QColor componentFilters += 'HistoryFilter { property string value: "%1"; filterProperty: "threadId"; filterValue: value } '.arg(filterValue) } if (componentFilters === "") { return null } return Qt.createQmlObject(componentUnion.arg(componentFilters), eventModel) } function markMessageAsRead(accountId, threadId, eventId, type) { if (!mainView.applicationActive) { var pendingEvent = {"accountId": accountId, "threadId": threadId, "eventId": eventId, "type": type} pendingEventsToMarkAsRead.push(pendingEvent) return false } chatManager.acknowledgeMessage(participantIds, eventId, accountId) return eventModel.markEventAsRead(accountId, threadId, eventId, type); } header: PageHeader { id: pageHeader property alias leadingActions: leadingBar.actions property alias trailingActions: trailingBar.actions property list bottomEdgeLeadingActions: [ Action { id: backAction objectName: "cancel" name: "cancel" text: i18n.tr("Cancel") iconName: "down" shortcut: "Esc" onTriggered: { messages.cancel() } } ] property list singlePanelLeadingActions: [ Action { id: singlePanelBackAction objectName: "back" name: "cancel" text: i18n.tr("Cancel") iconName: "back" shortcut: "Esc" onTriggered: { // emptyStack will make sure the page gets removed. mainView.emptyStack() } } ] title: { if (landscape) { return "" } if (participants.length == 1) { return firstRecipientAlias } return i18n.tr("New Message") } flickable: null Sections { id: headerSections anchors { left: parent.left leftMargin: units.gu(2) bottom: parent.bottom } visible: headerSections.model.length > 1 enabled: visible model: getSectionsModel() selectedIndex: getSelectedIndex() onSelectedIndexChanged: { if (selectedIndex >= 0) { messages.account = messages.accountsModel[selectedIndex] } } } extension: headerSections.model.length > 1 ? headerSections : null leadingActionBar { id: leadingBar states: [ State { name: "bottomEdgeBack" when: startedFromBottomEdge PropertyChanges { target: leadingBar actions: pageHeader.bottomEdgeLeadingActions } }, State { name: "singlePanelBack" when: !mainView.dualPanel && !startedFromBottomEdge PropertyChanges { target: leadingBar actions: pageHeader.singlePanelLeadingActions } } ] } trailingActionBar { id: trailingBar } Item { id: trailingActionArea anchors { bottom: parent.bottom right: parent.right } } } states: [ State { id: selectionState name: "selection" when: selectionMode property list leadingActions: [ Action { objectName: "selectionModeCancelAction" iconName: "back" onTriggered: messageList.cancelSelection() } ] property list trailingActions: [ Action { objectName: "selectionModeSelectAllAction" iconName: "select" onTriggered: { if (messageList.selectedItems.count === messageList.count) { messageList.clearSelection() } else { messageList.selectAll() } } }, Action { objectName: "selectionModeDeleteAction" enabled: messageList.selectedItems.count > 0 iconName: "delete" onTriggered: messageList.endSelection() } ] PropertyChanges { target: pageHeader title: " " leadingActions: selectionState.leadingActions trailingActions: selectionState.trailingActions } }, State { id: groupChatState name: "groupChat" when: groupChat property list trailingActions: [ Action { id: groupChatAction objectName: "groupChatAction" iconName: "contact-group" onTriggered: PopupUtils.open(participantsPopover, trailingActionArea) } ] PropertyChanges { target: pageHeader // TRANSLATORS: %1 refers to the number of participants in a group chat title: i18n.tr("Group (%1)").arg(participants.length) contents: headerContents trailingActions: groupChatState.trailingActions } }, State { id: unknownContactState name: "unknownContact" when: participants.length == 1 && contactWatcher.isUnknown property list trailingActions: [ Action { objectName: "contactCallAction" visible: participants.length == 1 && contactWatcher.interactive iconName: "call-start" text: i18n.tr("Call") onTriggered: { Qt.inputMethod.hide() // FIXME: support other things than just phone numbers Qt.openUrlExternally("tel:///" + encodeURIComponent(contactWatcher.identifier)) } }, Action { objectName: "addContactAction" visible: contactWatcher.isUnknown && participants.length == 1 && contactWatcher.interactive iconName: "contact-new" text: i18n.tr("Add") onTriggered: { Qt.inputMethod.hide() // FIXME: support other things than just phone numbers mainView.addPhoneToContact(messages, "", contactWatcher.identifier, null, null) } } ] PropertyChanges { target: pageHeader contents: headerContents trailingActions: unknownContactState.trailingActions } }, State { id: newMessageState // NOTE: in case the state name is changed here, the bottom edge component needs // to be updated too name: "newMessage" when: participants.length === 0 property list trailingActions: [ Action { objectName: "contactList" iconName: "contact" onTriggered: { Qt.inputMethod.hide() mainStack.addFileToCurrentColumnSync(messages.basePage, Qt.resolvedUrl("NewRecipientPage.qml"), {"multiRecipient": multiRecipient}) } } ] property Item contents: MultiRecipientInput { id: multiRecipient objectName: "multiRecipient" enabled: visible anchors { left: parent ? parent.left : undefined right: parent ? parent.right : undefined rightMargin: units.gu(2) top: parent ? parent.top: undefined topMargin: units.gu(1) } Connections { target: mainView.bottomEdge onStatusChanged: { if (mainView.bottomEdge.status === BottomEdge.Committed) { multiRecipient.forceFocus() } } } } PropertyChanges { target: pageHeader title: " " trailingActions: newMessageState.trailingActions contents: newMessageState.contents } }, State { id: knownContactState name: "knownContact" when: participants.length == 1 && !contactWatcher.isUnknown property list trailingActions: [ Action { objectName: "contactCallKnownAction" visible: participants.length == 1 && messages.phoneAccount iconName: "call-start" text: i18n.tr("Call") onTriggered: { Qt.inputMethod.hide() // FIXME: support other things than just phone numbers Qt.openUrlExternally("tel:///" + encodeURIComponent(contactWatcher.identifier)) } }, Action { objectName: "contactProfileAction" visible: !contactWatcher.isUnknown && participants.length == 1 && messages.phoneAccount iconSource: "image://theme/contact" text: i18n.tr("Contact") onTriggered: { mainView.showContactDetails(messages.basePage, contactWatcher.contactId, null, null) } } ] PropertyChanges { target: pageHeader contents: headerContents trailingActions: knownContactState.trailingActions } } ] Component.onCompleted: { if (messages.accountId !== "") { var account = telepathyHelper.accountForId(messages.accountId) if (account && account.type == AccountEntry.MultimediaAccount) { // fallback the first available phone account if (telepathyHelper.phoneAccounts.length > 0) { messages.accountId = telepathyHelper.phoneAccounts[0].accountId } } } // if we add multiple attachments at the same time, it break the Repeater + Loaders fillAttachmentsTimer.start() } Timer { id: fillAttachmentsTimer interval: 50 onTriggered: composeBar.addAttachments(sharedAttachmentsTransfer) } onReady: { isReady = true if (participants.length === 0 && keyboardFocus) multiRecipient.forceFocus() } onActiveChanged: { if (active && (eventModel.count > 0)){ swipeItemDemo.enable() } } // These fake items are used to track if there are instances loaded // on the second column because we have no access to the page stack Loader { sourceComponent: fakeItemComponent active: !startedFromBottomEdge } Component { id: fakeItemComponent Item { objectName:"fakeItem"} } Connections { target: telepathyHelper onSetupReady: { // force reevaluation messages.account = Qt.binding(getCurrentAccount) messages.phoneAccount = Qt.binding(isPhoneAccount) headerSections.model = Qt.binding(getSectionsModel) headerSections.selectedIndex = Qt.binding(getSelectedIndex) } } Connections { target: chatManager onChatEntryCreated: { // TODO: track using chatId and not participants if (accountId == account.accountId && firstParticipant && participants[0] == firstParticipant.identifier) { messages.chatEntry = chatEntry } } onChatsChanged: { for (var i in chatManager.chats) { var chat = chatManager.chats[i] // TODO: track using chatId and not participants if (chat.account.accountId == account.accountId && firstParticipant && chat.participants[0] == firstParticipant.identifier) { messages.chatEntry = chat return } } messages.chatEntry = null } } // this is necessary to automatically update the view when the // default account changes in system settings Connections { target: mainView onAccountChanged: { if (!messages.phoneAccount) { return } messages.account = mainView.account } onApplicationActiveChanged: { if (mainView.applicationActive) { for (var i in pendingEventsToMarkAsRead) { var event = pendingEventsToMarkAsRead[i] markMessageAsRead(event.accountId, event.threadId, event.eventId, event.type) } pendingEventsToMarkAsRead = [] } } } Timer { id: typingTimer interval: 6000 onTriggered: { messages.userTyping = false; } } Repeater { model: messages.chatEntry ? messages.chatEntry.chatStates : null Item { function processChatState() { if (modelData.state == ChatEntry.ChannelChatStateComposing) { messages.userTyping = true typingTimer.start() } else { messages.userTyping = false } } Component.onCompleted: processChatState() Connections { target: modelData onStateChanged: processChatState() } } } MessagesHeader { id: headerContents width: parent ? parent.width - units.gu(2) : undefined height: units.gu(5) title: pageHeader.title subtitle: { if (userTyping) { return i18n.tr("Typing..") } switch (presenceRequest.type) { case PresenceRequest.PresenceTypeAvailable: return i18n.tr("Online") case PresenceRequest.PresenceTypeOffline: return i18n.tr("Offline") case PresenceRequest.PresenceTypeAway: return i18n.tr("Away") case PresenceRequest.PresenceTypeBusy: return i18n.tr("Busy") default: return "" } } visible: true } PresenceRequest { id: presenceItem accountId: { // if this is a regular sms chat, try requesting the presence on // a multimedia account if (!account) { return "" } if (account.type == AccountEntry.PhoneAccount) { for (var i in telepathyHelper.accounts) { var tmpAccount = telepathyHelper.accounts[i] if (tmpAccount.type == AccountEntry.MultimediaAccount) { return tmpAccount.accountId } } return "" } return account.accountId } // we just request presence on 1-1 chats identifier: participants.length == 1 ? participants[0].identifier : "" } ActivityIndicator { id: activityIndicator anchors { verticalCenter: parent.verticalCenter horizontalCenter: parent.horizontalCenter } running: isSearching visible: running } Component { id: participantsPopover Popover { id: popover anchorToKeyboard: false Column { id: containerLayout anchors { left: parent.left top: parent.top right: parent.right } Repeater { model: participants Item { height: childrenRect.height width: popover.width ListItem.Standard { id: participant objectName: "participant%1".arg(index) text: contactWatcher.isUnknown ? contactWatcher.identifier : contactWatcher.alias onClicked: { PopupUtils.close(popover) mainView.startChat(contactWatcher.identifier) } } ContactWatcher { id: contactWatcher identifier: modelData.identifier contactId: modelData.contactId alias: modelData.alias avatar: modelData.avatar detailProperties: modelData.detailProperties addressableFields: messages.account.addressableVCardFields } } } } } } Component { id: noNetworkDialogComponent Dialog { id: noNetworkDialog objectName: "noNetworkDialog" title: i18n.tr("No network") text: multiplePhoneAccounts ? i18n.tr("There is currently no network on %1").arg(messages.account.displayName) : i18n.tr("There is currently no network.") Button { objectName: "closeNoNetworkDialog" text: i18n.tr("Close") color: UbuntuColors.orange onClicked: { PopupUtils.close(noNetworkDialog) Qt.inputMethod.hide() } } } } Loader { id: searchListLoader property int resultCount: (status === Loader.Ready) ? item.count : 0 source: (multiRecipient.searchString !== "") && multiRecipient.focus ? Qt.resolvedUrl("ContactSearchList.qml") : "" clip: true visible: source != "" anchors { top: parent.top topMargin: header.height + units.gu(2) left: parent.left right: parent.right bottom: composeBar.top } z: 1 Behavior on height { UbuntuNumberAnimation { } } Rectangle { anchors.fill: parent color: Theme.palette.normal.background } Binding { target: searchListLoader.item property: "filterTerm" value: multiRecipient.searchString when: (searchListLoader.status === Loader.Ready) } Timer { id: checkHeight interval: 300 repeat: false onTriggered: { searchListLoader.height = searchListLoader.resultCount > 0 ? searchListLoader.parent.height - keyboard.height : 0 } } onStatusChanged: { if (status === Loader.Ready) { item.phonePicked.connect(messages.onPhonePickedDuringSearch) } } // WORKAROUND: Contact model get all contacts removed in every search, to avoid the view to blick // we will wait some msecs before reduce the size to 0 to confirm that there is no results on the view onResultCountChanged: { if (searchListLoader.resultCount > 0) { searchListLoader.height = searchListLoader.parent.height - keyboard.height } else { checkHeight.restart() } } } ContactWatcher { id: contactWatcherInternal identifier: firstParticipant ? firstParticipant.identifier : "" contactId: firstParticipant ? firstParticipant.contactId : "" alias: firstParticipant ? firstParticipant.alias : "" avatar: firstParticipant ? firstParticipant.avatar : "" detailProperties: firstParticipant ? firstParticipant.detailProperties : {} addressableFields: messages.account ? messages.account.addressableVCardFields : ["tel"] // just to have a fallback there } HistoryEventModel { id: eventModel type: HistoryThreadModel.EventTypeText filter: updateFilters(telepathyHelper.accounts, messages.participantIds, messages.reloadFilters, messages.threads) matchContacts: true sort: HistorySort { sortField: "timestamp" sortOrder: HistorySort.DescendingOrder } onCountChanged: { if (isSearching) { // if we ask for more items manually listview will stop working, // so we only set again once the item was found messageList.listModel = null // always check last 15 items var maxItems = 15 for (var i = count-1; count >= i; i--) { if (--maxItems < 0) { break; } if (eventModel.get(i).eventId == scrollToEventId) { scrollToEventId = "" messageList.listModel = eventModel messageList.positionViewAtIndex(i, ListView.Center) return; } } if (eventModel.canFetchMore && isSearching) { fetchMoreTimer.running = true } else { // event not found scrollToEventId = "" messageList.listModel = eventModel } } } } Timer { id: fetchMoreTimer running: false interval: 100 repeat: false onTriggered: eventModel.fetchMore() } // this item is used as parent of the participants popup. using // messages.header as parent was hanging the app Item { id: screenTop anchors { top: pageHeader.bottom left: parent.left right: parent.right } height: 0 } MessagesListView { id: messageList objectName: "messageList" visible: !isSearching Rectangle { color: Theme.palette.normal.background anchors.fill: parent Image { width: units.gu(20) fillMode: Image.PreserveAspectFit anchors.centerIn: parent visible: source !== "" source: { var accountId = "" if (messages.account) { accountId = messages.account.accountId } if (presenceRequest.type != PresenceRequest.PresenceTypeUnknown && presenceRequest.type != PresenceRequest.PresenceTypeUnset) { accountId = presenceRequest.accountId } return telepathyHelper.accountForId(accountId).protocolInfo.backgroundImage } z: 1 } z: -1 } // because of the header clip: true anchors { top: screenTop.bottom left: parent.left right: parent.right bottom: composeBar.top } } ComposeBar { id: composeBar anchors { bottom: isSearching ? parent.bottom : keyboard.top left: parent.left right: parent.right } showContents: !selectionMode && !isSearching maxHeight: messages.height - keyboard.height - screenTop.y text: messages.text canSend: participants.length > 0 || multiRecipient.recipientCount > 0 || multiRecipient.searchString !== "" oskEnabled: messages.oskEnabled Component.onCompleted: { // if page is active, it means this is not a bottom edge page if (messages.active && messages.keyboardFocus && participants.length != 0) { forceFocus() } } onSendRequested: { // refresh the recipient list multiRecipient.focus = false if (messages.account && messages.accountId == "") { messages.accountId = messages.account.accountId headerSections.selectedIndex = Qt.binding(getSelectedIndex) } var newAttachments = [] var videoSize = 0; for (var i = 0; i < attachments.count; i++) { var attachment = [] var item = attachments.get(i) // we dont include smil files. they will be auto generated if (item.contentType.toLowerCase() === "application/smil") { continue } if (startsWith(item.contentType.toLowerCase(),"video/")) { videoSize += FileOperations.size(item.filePath) } attachment.push(item.name) attachment.push(item.contentType) attachment.push(item.filePath) newAttachments.push(attachment) } if (videoSize > 307200 && !settings.messagesDontShowFileSizeWarning) { // FIXME we are guessing here if the handler will try to send it over multimedia account var isPhone = (account && account.type == AccountEntry.PhoneAccount) if (isPhone) { for (var i in telepathyHelper.accounts) { var tmpAccount = telepathyHelper.accounts[i] if (tmpAccount.type == AccountEntry.MultimediaAccount) { // now check if the user is at least known by the account if (presenceRequest.type != PresenceRequest.PresenceTypeUnknown && presenceRequest.type != PresenceRequest.PresenceTypeUnset) { isPhone = false } } } } if (isPhone) { PopupUtils.open(Qt.createComponent("Dialogs/FileSizeWarningDialog.qml").createObject(messages)) } } var recipients = participantIds.length > 0 ? participantIds : multiRecipient.recipients var properties = {} if (composeBar.audioAttached) { properties["x-canonical-tmp-files"] = true } // if sendMessage succeeds it means the message was either sent or // injected into the history service so the user can retry later if (sendMessage(text, recipients, newAttachments, properties)) { composeBar.reset() } if (eventModel.filter == null) { reloadFilters = !reloadFilters } } } KeyboardRectangle { id: keyboard } MessageInfoDialog { id: messageInfoDialog } SwipeItemDemo { id: swipeItemDemo objectName: "swipeItemDemo" property bool parentActive: messages.active parent: QuickUtils.rootItem(this) anchors.fill: parent onStatusChanged: { if (status === Loader.Ready) { Qt.inputMethod.hide() } } } Scrollbar { flickableItem: messageList align: Qt.AlignTrailing } } messaging-app-0.1+16.04.20160323/src/qml/LocalTextAreaStyle.qml0000644000015600001650000000133412674565025024267 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 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 Ubuntu.Components.Themes.Ambiance 1.3 TextAreaStyle { background: null } messaging-app-0.1+16.04.20160323/src/qml/MessagesHeader.qml0000644000015600001650000000536412674565025023445 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 Item { id: header property string title: "" property string subtitle: "" height: units.gu(8) anchors { top: parent.top topMargin: units.gu(1) } Behavior on height { UbuntuNumberAnimation {} } Item { height: Math.min(titleText.height + subtitleText.height + subtitleText.anchors.topMargin, header.height) width: header.width anchors { verticalCenter: parent.verticalCenter left: parent.left leftMargin: units.gu(1) } Label { id: titleText width: Math.min(implicitWidth, parent.width) anchors { top: parent.top left: parent.left } verticalAlignment: Text.AlignVCenter font.pixelSize: FontUtils.sizeToPixels("large") elide: Text.ElideRight text: title } Label { id: subtitleText width: Math.min(implicitWidth, parent.width) height: header.subtitle.length > 0 ? implicitHeight : 0 anchors { left: parent.left top: titleText.bottom topMargin: units.gu(0.2) } verticalAlignment: Text.AlignVCenter fontSize: "small" elide: Text.ElideRight text: subtitle Connections { target: header onSubtitleChanged: { subtitleText.opacity = 0; subtitleTextTimer.start(); } } Timer { id: subtitleTextTimer interval: UbuntuAnimation.FastDuration onTriggered: { subtitleText.text = header.subtitle; subtitleText.opacity = 1; } } Behavior on opacity { NumberAnimation { duration: UbuntuAnimation.FastDuration } } } } } messaging-app-0.1+16.04.20160323/src/qml/MMSMessageBubble.qml0000644000015600001650000000250712674565025023636 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 MessageBubble { id: bubble messageTimeStamp: messageData.timestamp messageStatus: messageData.textMessageStatus messageIncoming: incoming accountName: accountLabel showDeliveryStatus: true states: [ State { when: messageIncoming name: "incoming" AnchorChanges { target: bubble anchors.left: parent.left } }, State { when: !messageIncoming name: "outgoing" AnchorChanges { target: bubble anchors.right: parent.right } } ] } messaging-app-0.1+16.04.20160323/src/qml/assets/0000755000015600001650000000000012674565500021342 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/src/qml/assets/red_bubble@27_1.png0000644000015600001650000001537312674565025024641 0ustar pbuserpbgroup00000000000000PNG  IHDREbsRGBIDATx}g]n};1%S:kGfb [ Y(8F!q&"1 l,"ckJ ӎmz>t][Ozz~'YRJ9^;Rkig`?>5Sɮ{T˾>/ym޶qȱζ^ d  @` mZ}]\6EkO[[TR[[RZ;2$*  @8u[fFoks_}w.fQom4s;ܢZ|1X9 @v 7U~/ޏ 䌷og?&4=^ @4vGș@ځ~x8Yy?lO~ſN;1:sx# @`kO$x{e6f @#Ўxnԏްy/|IZI_8CX1 pnٯ8؅<)x̝@҅> @)<^߻'v d.| @:~+W~zE8R!@$0t~vct= @`u|"cj~б5;8vC1Cu/ߞy~|pСA @Eø/jï̺ @&#\֘?C𘌳Q  @9c\(n Cha̎6S @' ]})l;Y @& ܱc6q6$ @$RzI 0 _vԭۘ @e\Z( @n~e2 @;tkRM<"@&'foխ1 .P}`xa  @|ivG @pvvpi<$@3mW﫷 @"~4*]J @c_OV@ղ@xe  @tuʰ3d61w: +LLL2Ƴ[߿2U 60H-0dv? vPj+OLZ`.k<1im @vQ}0Q; ChWI?>]a˘86.0-jM_kJxtݙ @(q"xl|=doN!  @l'x]"xh;w_pOP<~g9<'mD  @+*=eƏ.KT:ۛ6,| @E 訮z>3'x /L_Sk2yL@rj>1<9o]oov#@,JtGʨ?}dW7e3.|c @isԗ۲}ymx̿y2M?= Of^=)pJx{7tB uu׮O=>~lQjwkׇz:laˍޱM:t;m_Æ7l3ɲ\%X_U7zǏg ۮo˪6kw߮K.{xL]_h/ſ-O6_uC12|l9rp\K9woy/-煝񘴰  @[tYm|1#W-eC#8^ @H7Z/[+/D.:1{S})O%ʌ%YxӮq]Z]0fo,Uk~D8G//Ui~2_lcߜ{ۯ 37n x,}nt٪kۼ'.c?f9J{5iq^2qz @28ڛr|~m_9?Lm4o?޷uҸEYpD_`#ˮvܮaln!F՗_+t,18'"@e p]GjWo؋ӎO=灋,R}R,+}~-5+|v[6Hy|W^@e}.@qצghہ{5~kw?1:+}\c֏+\ko~M7[?܎Ij;c_h<4Y<|֓+\`im㺥ZնKxkrDz8ub㬖%.,pө}߿؅ BƓ}_?Mnq!'֌"@ PwZ;˸v;fzѫTwۆV*΢?獋<M p zOo>2|v6gYgJ?fцG},  ꎷ^v;vٯW/q%sFpY϶=w?9crF&@e&Pwo+O=sE/bED,IENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/stock_document.svg0000644000015600001650000001503112674565025025106 0ustar pbuserpbgroup00000000000000 image/svg+xml messaging-app-0.1+16.04.20160323/src/qml/assets/face-smile-big-symbolic-2.svg0000644000015600001650000002006712674565025026614 0ustar pbuserpbgroup00000000000000 image/svg+xml messaging-app-0.1+16.04.20160323/src/qml/assets/send.svg0000644000015600001650000001031612674565025023017 0ustar pbuserpbgroup00000000000000 image/svg+xml messaging-app-0.1+16.04.20160323/src/qml/assets/burn-after-read.svg0000644000015600001650000001674112674565025025054 0ustar pbuserpbgroup00000000000000 image/svg+xml messaging-app-0.1+16.04.20160323/src/qml/assets/blue_bubble@27.png0000644000015600001650000001474512674565025024600 0ustar pbuserpbgroup00000000000000PNG  IHDREbsRGBIDATx{\]sڻk'wD4kZ'"R %D*yT%ďTH VPR*$@H"ZhHţRPF"$UvhڎMÙqv묝gtfg߽Is_9ʭe4vE KZ:&"=~N9/+ 撚)ץNA@[ْZ9VJena[97hmvhVR[ۤf_}S/ch< @ae(x'\mP~\ȜGcwNKwք44ITF)< @Mm}݃qⶔҥ+}C>2U~Rl3Sϥi @E$0= js]2gߺHNg vxzs @ QR3/m^u?UCB>%@f 0H}?7:uGɯ{Ex@=#6~O,ܽԉM@z4۹qտO~Ʈo!tLW8+ٯbqF8qIyM@):>5SZډH޿cSyM8e#-PS#́  + @i.5Sc&L/z[ҹ[{^})l> @@XuQZrٳ[VoԹv @`^+{۳zzY @@wZljcW @. 2䜗uifK(%/kxS$^ @]nbWK͚8!P7ܔT @.P`K @. {< @(iOå}1C3 @2J* @}/9ƣ @! bvH+B}@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+D4)炁 u9TR @T@>ÈG @5x"x{'X !K)vDPAGPXl<0ZvF<ݒ֣>8E[5 p!'}m+;WJ?qG]ˣ& rScЪCNw/Uv @@@=ef5ߞ3 @roȯ'3 @o/Y?5ߛ<}ީә&@F/1ԩyKhOA 4q*  @3 ԛy஗lӝpvxzپ= @@=Sz';yɉڻ]n4ùi>>T[W8$LS`F߯9S?l36Goo_̃Xl5ExcέR+X __Ț4  jWzœ@`3ĎW8591[ ?7tEe}*yM+jkj5^0QeuTy ֱzM{OSmji&= pQԪAZ}mъTh8#yNsnTz2ʞ-4iPcgY}-x:wo @@_ ×kպ{OdexsF Kd z{3\ۋn @^t;(^޳BGB{;Bಭne~/95xuo=r1bWN8xs:~+uy_w1VGvo}-jY?U @@ cFu{^fT9k@~ 3[_ 0nY'6l}|s<A_8.s\xZe28[i~rIzp b<=M_7 xb h.zd]StK߅(GN .Yn_ECfj9  @;,yNޝkR Џ޴dX W-я7/V/;5Gwoپ3q @@>U=/u ;7j勞G_V#p}wZ/?P'HP=6~w/_u&pC`~` eΏ 64ٹH\LGa붍}pպ|ǂ9}UkW)]#xO =~|sXo,/E 4C'zs ?wkM#vm?_srJn+_Y0hA]+Ksؽi.mFmGS\]j\-t417'S @@ݺ7@=cez`Y" 槲 ]򺯏j:$R={sJ؁^ln}wP组OfrkYy8[?%]?ҥ.,9s@2 m9:zˏwk)*O4+6|[5eG֓\}z߫]U:ݛGrMQ<\ @-yp8\޷~Oi~ȟ>sM~\{o8nܭLI L]鞺 KN9V7 ~[/N<Λ  @>U=cϥZȺm%’O^|=wO@螭9 @@ Se˯ݝrh pȃޘb.΢qCVCIENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/media_bubble@27.sci0000644000015600001650000000013612674565025024707 0ustar pbuserpbgroup00000000000000border.left:135 border.top: 27 border.bottom: 48 border.right: 135 source: media_bubble@27.pngmessaging-app-0.1+16.04.20160323/src/qml/assets/transfer-unsupported01.svg0000644000015600001650000001435012674565025026443 0ustar pbuserpbgroup00000000000000 image/svg+xml messaging-app-0.1+16.04.20160323/src/qml/assets/green_bubble@27.sci0000644000015600001650000000013712674565025024731 0ustar pbuserpbgroup00000000000000border.left:135 border.top: 27 border.bottom: 48 border.right: 135 source: green_bubble@27.png messaging-app-0.1+16.04.20160323/src/qml/assets/input-keyboard-symbolic.svg0000644000015600001650000002573512674565025026655 0ustar pbuserpbgroup00000000000000 image/svg+xml messaging-app-0.1+16.04.20160323/src/qml/assets/grey_bubble@27.sci0000644000015600001650000000013512674565025024575 0ustar pbuserpbgroup00000000000000border.left:135 border.top: 27 border.bottom: 48 border.right: 135 source: grey_bubble@27.pngmessaging-app-0.1+16.04.20160323/src/qml/assets/white_bubble@27.sci0000644000015600001650000000013712674565025024751 0ustar pbuserpbgroup00000000000000border.left:143 border.top: 27 border.bottom: 48 border.right: 135 source: white_bubble@27.png messaging-app-0.1+16.04.20160323/src/qml/assets/white_bubble@27.png0000644000015600001650000001765012674565025024767 0ustar pbuserpbgroup00000000000000PNG  IHDRJR4V6sRGBbIDATxy\gy3ul$^؁81V K[UM$`GB[D-K*ѢJTUlRU*C6℔x_;oBlǹw>d933ϵ4;O=3cb^844t~ݞV5+Vb>#Mx}( 1~ފDA ~S'}(Z|0:|_<x|xY˞\|x4;u0:6x\Ǽ5 @R ~ox\xoM9{4ٳСC+]+)SZSNmr6mZ3<`v{>~~7"L8|N!t( @XhQs3qޏ,xz<# @U/\ジ${??<'O狗^zs:z @q a.?OH$G2Λ7G @k3gNc~!YqeEHυ9N 0VnR;#uG-v,Isp0 @`{nL#Ɯ qk=b"@U #YW_Pdl7M [Nq5:#vtL @~ tEqUX 2} @8묳r~kJ Zx2kʔ)=@1mڴh{ @c '?/'K.d_r$WL+W\ WƮւ %K4q+g @ JPwHQ#ߔ#|53fh.f޼yy  @::tl߾=%vѓ?X|7ro;.;p8Ϝ9Ypa3fҤID @&zꩧFF'S6߾馛z1G:^ vۇtsY>is9ٳg7g}vgDRDNO yߕvc͆ 9h~3qc j~{޵keBv ފtiӦ58<"x$sT"7bP畼ʿ'x"/@3<}ٵ*2 3~|,꿏= +c/{<,g/>l<+sQ% 0j )#xGEhooɧr8Ҽ: @ dH82'. zk/ŋy駟!oqK7gyύ7)|rt< @ ⼏G^.V/~Gk{J|k~wZy8{"toѹLv ɓ] p"נ}뭷obo~[qϗq{ ?a;m{9+y_8ō>f(o8w嗷7>s5=Pn!r{V6O @ }0q?Qdٳg7oy[q%yMkc˗/~n'Oъ{^<~.qm+k2>*>hw+yfΜ}@yvF\z7G8<<^xqkѢE}%G}ᇛ<NL_pz׻6hG* x4뮻./_P4FmrX8֮]l߾kb8cuY_&G>wrUymvܹǽ[6?яOWq7ј- p1y՝{y"Ѧm۶us)z}6>ϱd>g9 1@2V;3W=k֬梋.j͛7%y{C+9E?废[t鎑7* @)& x?X8+ͱ.vMؼyd=q?lٲRI^$@<%9>w}~ñ7""o_=to.HNucIql]oruf @@_*կR*IENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/blue_bubble@27_1.png0000644000015600001650000001474512674565025025020 0ustar pbuserpbgroup00000000000000PNG  IHDREbsRGBIDATx{\]sڻk'wD4kZ'"R %D*yT%ďTH VPR*$@H"ZhHţRPF"$UvhڎMÙqv묝gtfg߽Is_9ʭe4vE KZ:&"=~N9/+ 撚)ץNA@[ْZ9VJena[97hmvhVR[ۤf_}S/ch< @ae(x'\mP~\ȜGcwNKwք44ITF)< @Mm}݃qⶔҥ+}C>2U~Rl3Sϥi @E$0= js]2gߺHNg vxzs @ QR3/m^u?UCB>%@f 0H}?7:uGɯ{Ex@=#6~O,ܽԉM@z4۹qտO~Ʈo!tLW8+ٯbqF8qIyM@):>5SZډH޿cSyM8e#-PS#́  + @i.5Sc&L/z[ҹ[{^})l> @@XuQZrٳ[VoԹv @`^+{۳zzY @@wZljcW @. 2䜗uifK(%/kxS$^ @]nbWK͚8!P7ܔT @.P`K @. {< @(iOå}1C3 @2J* @}/9ƣ @! bvH+B}@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+Dz<¨"@=@ a  @ @0j @C @aGB @ @0#Z! @@ @@F x @ L@V< & xQ+D4)炁 u9TR @T@>ÈG @5x"x{'X !K)vDPAGPXl<0ZvF<ݒ֣>8E[5 p!'}m+;WJ?qG]ˣ& rScЪCNw/Uv @@@=ef5ߞ3 @roȯ'3 @o/Y?5ߛ<}ީә&@F/1ԩyKhOA 4q*  @3 ԛy஗lӝpvxzپ= @@=Sz';yɉڻ]n4ùi>>T[W8$LS`F߯9S?l36Goo_̃Xl5ExcέR+X __Ț4  jWzœ@`3ĎW8591[ ?7tEe}*yM+jkj5^0QeuTy ֱzM{OSmji&= pQԪAZ}mъTh8#yNsnTz2ʞ-4iPcgY}-x:wo @@_ ×kպ{OdexsF Kd z{3\ۋn @^t;(^޳BGB{;Bಭne~/95xuo=r1bWN8xs:~+uy_w1VGvo}-jY?U @@ cFu{^fT9k@~ 3[_ 0nY'6l}|s<A_8.s\xZe28[i~rIzp b<=M_7 xb h.zd]StK߅(GN .Yn_ECfj9  @;,yNޝkR Џ޴dX W-я7/V/;5Gwoپ3q @@>U=/u ;7j勞G_V#p}wZ/?P'HP=6~w/_u&pC`~` eΏ 64ٹH\LGa붍}pպ|ǂ9}UkW)]#xO =~|sXo,/E 4C'zs ?wkM#vm?_srJn+_Y0hA]+Ksؽi.mFmGS\]j\-t417'S @@ݺ7@=cez`Y" 槲 ]򺯏j:$R={sJ؁^ln}wP组OfrkYy8[?%]?ҥ.,9s@2 m9:zˏwk)*O4+6|[5eG֓\}z߫]U:ݛGrMQ<\ @-yp8\޷~Oi~ȟ>sM~\{o8nܭLI L]鞺 KN9V7 ~[/N<Λ  @>U=cϥZȺm%’O^|=wO@螭9 @@ Se˯ݝrh pȃޘb.΢qCVCIENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/single_tick.svg0000644000015600001650000000242012674565025024356 0ustar pbuserpbgroup00000000000000 path4041-9 Created with Sketch. messaging-app-0.1+16.04.20160323/src/qml/assets/messaging-app-screenshot.png0000644000015600001650000075014512674565025026774 0ustar pbuserpbgroup00000000000000PNG  IHDR7gAMA a cHRMz&u0`:pQ<bKGDtIME!«IDATx}wUSunwOf2 0CqI$+a1b"0ꪫiE i ~sҐ`bOT})S|ӟ~g^jcǎ1bDVwo_wXr+ސ j Zܼ;vig~>bĈGqĿۿmjoO}S<5^khSZrw JEÛo?I&=<իJSSwe}70/iѣ7h)S7녲:::W70 Wblvfz|^Ə#Fl7t'=nܸzeJi=7h#U57}'>|+Uڭ^/^'1bرc^^™3goz|__o2|}^{˗/ナ 555M0aڴi_>zҥ/>S5v7M}kY:u 'V[ >1wͻo64rȥKBԩSMz{w>c5k֔)S.\?K/moo#8b:uŋޟg6l&l[6^/Zx'{#"t… ur?`hSy5i9v /Mj&62ѯEnv_sg}{]wݵp3f|x{K_Қ5k^/s^reoRJ;7~ʪU_jiie]:,sY>v}8V^}W\|wygХ&O|1Ǽmo;S;/K'j-rv<~Sjnn>묳?/YdOo|c裏7=>ep^f̘q95>|xk_/}K--- ,XzY7|[zw7c1c̟?Ŋfz[O~N /# ]%$"Zm׿ƭ?wu׮c袋~ӟm*5bV='>aܬX2FҎ7<߹}U닸Uy睿ﴶ~_ -[R~nGwM2~ hTX9{{O?#șg.|c;w MMM>n=zɒ%>~35kw}h(p?6>wT&N׾eT>Ϟvi ,5< n_W-Z@U;|;\r.ٝ'[⊯~>,M赯}_vs圛G׿o~?MozS֔ԩS{gJ _ɓ'lhB6kK}sUO,5yu]OxNW[G^̘13LKK>\tiRCggٳ??>C>򑏼>ߡGDUn1c|_vm2^9Z6mڴC9I3uI'}6O|r?w`~.;/<.:蠃^ijjc=oM6Ϗ7ng}饗 .} &y#FsYfy议9:'XxּsE[[[[[ҥK??{ 7G'N|Ǻ {Ǘ{ɒ%,=s΂ /?;c+,YrYg=3nf9竮3̨Qg?e͛zꎎ+V|#GYGG]ĉ>z!9z{s 'ۿ矿38cwnv`Zǟ??Oo=o'N/K_{ޯ~?}7xʔ)|PXLiN?kGmJ]>˺_ܪ.|sK8n}D5볦LַG袋_677Ϝ9韎8 =>\0nܸ/K眹O̘1?M6لNV=zl{43n?hD\gsʋ~v7~---7eL<3|׻u7y/.?_55Fl;::׿^---;ov7=zw^kVUI˄%7lmY`}I9䐧~kj455͘1cv{/׿u;E]t7nf|Caj53{~YSSS0WggܹsMVf77kꫯ>0rg͛7jԨ>zhSyuxănZw꧿z.^S_O>;_566ͷ#>_---3g?~7޸|yƍw_ַ./Jg}/˶n/R~G?o{nrA}k_{>짟~ZU qÇO>WD7M;::n>哟 '0?2eYgu'tMg}ҋ[[[cRp2e'?ɋ.hԨQ?_ `̘1{/[1cn\3hI?7Tzܔwaĉ{X'xQ'{ok_^&"vʕ+ou~駟^ׯꪁ_ƠT+ [[[͛/|aԨQd4O?.{'~h/Cʫn>vw9_uпs:v>fv[>g[lN;~Xb477 )#H,[` ?-bڴiMMM/ m{{W_|׾6yvG9yN;/W[x~}SEdo39r̙V^Oj^^'uEUvt„ {L:=y{w'tӸ8∜w1yv;zW#.\x\wu}De=Oviwg]/47noWwv„ LΞ=_,Tmo{Yokkj+C5Wwn۲f.|p]7o ixm~S6>iq-} ̃*9sT\ѣGÆuUy l<͞=O~'KW^e_}k#FX^2|-bذaޟk*\վryۿ.Swo|1 رcY|=ܳx#Gn馼ym欍K 6bĈ#uUpCYWM֬չ""cǎm`ѢEW_}~lٲglB~}n|'>[nl͆ vw{ӟ{5\>Gy-oy_+L)455}H)}߭~Zv/}+|{o|-]TUǎq|(RyU,gioէwi2ifv3v6XmnWӧ";n3hiiԧ>7jƍ=z4Qn馳:47U}Hvc6T}ĉGqD`Ǝ;lذ{cu]jYf|;YU׹;;w;p嗟r)7_Wmя~|vUtMM6}]w﨣KFb ޻;;x{[ַN4+_ 1lkkS 6ؠT^KyMOfіI7=eF,]w~7vO\Q{{;\zgnÇov~nXjճ>&+V+M;\MMMo[nhѢzXM>s:lqsL=}{ܶwSO=uѢEW^yKA:7F?/u]Trʏ|#f?O9_~wЇ>|gń5k򖷐Wz .YT(rW?gu~:h7?쳫eL'CkhSyUuiDmyputt</>/BX;+bvZb]wU(Zm˵^Rv̜9#>WGGu]wu5rѢE_^;W^xWnx) ߈[^_l:իWϞ={ƍw} sw};rǢ؟MV?ߧy 7og}lkkzŭ?~cUkYU5kֈ`=TGK/g?|d;k~MU nf|ߑGyI'=e5yw%\r]w/]^ϪDi%K|g̘#ycR%/ck̘1Gq13H|{1MMMg>sGo_Go[DN7*d~?^j^ܥ-y4@Ϲ3w-CWUUuժUu|y.\s_\~ '0i$Uk,5^{L}qOn943//OT*ԿW Z^Xu'w'?O}ykĈGuԹ瞫{|/D{uvvvm~>>q[p7 /m„ 'p[l1+bdb5k[lł |3Νhصr\Æ i&LgW^}S%~ox>Oq/SJgqo[n&l#k<^gs̙oy[Ν;a6lȑ"pxG{) 6V37K;G_Ls_z)|_=,ZǡE??яN:餎;o[lg?m3Ϭp5[oM)z꩗_~9yes=7pO?MNgʕ[ /矿kzz馛pguV^?43bĈRʕ+ 9m*56~ۖ#aITlcZ[W/\r w 9ow~JˌM7o};|2re˸{կ6RՑ#GnUDd͚5x3〖իW3OwZz|뮮PI>9Ϟ=[;o_>w}[llӠjJsggs=w)vbf?`}\dw4+V/Ya\u:::N?38]]]\s9Ӄs>SN;z;G?k啞k̘1Vutt,\ũ` ;K}9)n}_]h}ws7~cg}K/mmT2\^{=W]uՋF!\oը7={{k/7o_J;ӡ׿~w7n mV jsszeh~WPuh#Ç?{췿U˸vSN}L@M0ou& O,U0anl2hh 5ZȪܹs/~ӟvmv^ɦ{,3[`UZC]CzEggM<_OI)>9wwY5ZVcTZCkh 5ZCkh 5ZCkh 5ZCkh 5z5. A1?7Zb/ڡ'eh=ꦑY C?*kϲ_e…K*jn5~oPy q3 : *'G!PGvē\gd1Jա5M 1 ]cZ!0s\]%yΒ]TpdwD jxOjnPUw 7H $  u;qA*ՐUO@vQjC # *Q<{;ǣ psXv_DPUٲ yr11Ϣ\L*@Wi,.lPPqrxvs Qop3$$9\49a5SW')w`Yh;&P@ͳ(xX&pO'u˒D0V xa01$I=;j gG!𤢀 jQePU 0'QS)]< 3f"*On&*5Aa& LD p KX2u MD T +R`*5Ò $$P&ˋ,R< `n&<9L4A pS@Ijj0EWdGR3wpA8wID  7$y=pwufHan L=$H6Qusq pϦx /"K\1$\r<&qst'-S>Rpw.mKfSu8AfP tXn0@@2% !η4$`TԜ_@ME]DfwFIvr3M쐚9L$PP.xv&с!ݢ.Q0UX Hk!pˋ\`8t,|.*z6U=bpu8Z+ qDwn3Ws?:9Q Q@P !netn*s5 cRsQI JCS`V71XxXgXg\R[gUoj.b*١p΄m&1B("JʄUD1p3nʯ "[,q.&bP)c6uK^{q=#qc%n&B`4"wG'̒Gt F DR:GsSOfzA;ID,,d&&I\X]2*+RCBRF\2QZ oոI "& WWpqs (Dj@FHNfW 8bL| CA+8$Q.F($IqdJq]R9 LT xrZ"Qvs`1$f]T xJұW)iACR%di!D4, *..0R'a> p*BDő-n)Ԡ^ q4`=U+QMp[rE${2=bnp(KQ0I*<(*)B88IL4] )1^TLFQ7UIQ~pziܝO`S:w3 ׯ0DBS1WaF.t)B\`JLӨ×,^\2A pQaD8#ƔRvxh6$ @8l2?& ʙd@J+1<'{$~UP4Hz t bdH2q4q5]<尯AD0xB`gjЀe<D]pCE70 @.e@.1NgAJ CZ.ʯ}ZE)e"x zR <(e KMt)t*R'Z.% }zYzva0̤-U.U&0-IeXQ,$ h3 0OU!Er f0hv̅LyP{i|;IeS&^^FVńZ̋+")zq4HAvKEd&)L,Y6.XPuנ d(I1Ip\T+ъd%zC*{T- G0eUJW2 p2o1=1V%LU ""Zf'ΛJpdYTe,I -[ GZ'=:,B T},UNj OQg♱*D#@iגY GL@Qգr%u8'7 /%"RSKq~R xަKqT`Ikn<).=Qmn\KIA#-^_\ ι>OE9Jl[rG1kI#"F걝 +n&bgDa .5g%J:PJBV,"wH}-kP~IZV썬|u8)O,3i))Fn- F K"] pFU \½o6>kp张<; I$-33K@ܑѾŔ)9ascFE [tOF"O!W 7nqW ^@TY#{rUyx#W `{Kh=d T=JD&jq& !n.)\eAɉ(pB%<*G+Wpe ۥŇk@&: !`9@e$ k*aD%.ݙUEK6щ')mk&k$Ʉ4B, ]ٜHTv[8"WaMcEi%IPL"t+\ DN T,rJ0;ΤjaҬD:|}I3m!T$(: GjJLЕG@A z }Jk1phRL2 \gQ3]j!(g;TAEV f ٴFG x< D&pqOJq)$H"*\!$`fQqnt%'J$Q-QRj*/‡|. ݋WAe6J@)P@Ԡ$@UEJnp,L TX,S)̽\ hy:ˆ#k TEٮ1QW:q+GL5GwTCxSfq"SQ0p5:0е'մoSZ¸ .(6Qح<q\\:6 pzN 8`:-=,'RާӅ Z.,kY8 xe}K bǺaL ޥ:].=-\!*f <Ɠ 43 &;H7s]$I[$0 wz-EؾȰ7tSQ)=0L8]:yC J q=4R8nD2gC>n͗1EDH׸Zd.RWDz;\AxH`Gdxp!G35?uTzxoKA:EIrLtޢ,ZPÞ\Ճ R-+lQqۢ8_Ap- 0Rȁ0^z 8 %d8<[?I*uåc .nv9xwՃ.P*e.RG-KVuA)ݢ&,G&990 ^;{sLVQ T?yq2Om&fp17MpK$i'`O+O0%jpWu#"Ldj B;N$fD6DRHdkw+ @ ,%*2 L i<*QQ ~bpvppTɔ3\" WK;EKVrfWi@4Uk0GT(/{ ky@n@=,L p ƒuX8D\a hᵠZppYpi<\nO]mxb8[ VB.8px8`Kp.ԍ-iv:n~|ۇዖ,|l"z^!0*T g\I)G"'.)(SMzP@Čg 43&@47KN4ڈdr4y2rFb!mHÂV#"qMQe;,o p#: g4ej&فZq2"9;؎r:̨E㭈 Y}u/ToR /FœH0c' @^hlbEE(w  HjΗg=DWN+W+~ uM$խO'1;T<ހGb KG'EKd`@/#`5by8!߬FX :,}* 2(dSl5u\<V/tq1\JJIDV\ Wj)!%ӥt'k"ťxla}zla! F(Gۈ[ᅀ op)ˣ^¥NswT.E ыN|up:}m>܋W(ωJ{"W/j;S"/"0O!9 5T5NX(E LGY%p;A3OUoqHVɌ24 >"Mh0@KG _"l0=pԀM!U{N\M ,p5; 8I0WxE3tJ]Y'HK$zt:< 49 ^.n.݀+׾xW&RRp&VBASR\8P-\Fp@T--W@R:ae7 G-rC2P/mh kKۺWp+ Gp*56<1^\5Z8 Yh eIxVýpYo./) ^w# ndW}p/cfDf 8bvD_PZ p˪s\ap2AhZހãunRH6Yڀ`SNlno wxz:MeἘdVR$ ,.p\T&Y\ Ŕ,\(TC|.p4p)_K)}*4*l.%ePR,o ʥk>-|-i|P>|eɢEQHo4Ea_Ŭ39@v'e,Dn^p * R{X{BU+dH"GLe p:穈 p>WjStѶM И`Q5 HK%AFĦhdsJJ{$RqGܨWVQ:@y<x?f`Q#&͑ ƹjvJI0!A<2ή$nR)c#4#ZWDs2rļlXhA'^j)Žs1~j.h8y6mhn)gqTc+wǣn͑Y(R5 +v=j0? '08^b"9 a\xb"] KE^)}anI1(]M)1(4]-5t)` W8"5c#QD 93xyw#kJPf 5K|MbqlaO %aͨ$p![qB).,s׿r>p C XxjajQrKh*Gk>R`ĝ +w(%0!„*4|:5 H7Ga(eXb̲}^e[nH,@1\GR0<< jQ _g&JUxn=H 8PTƣ */݀GPS#bUWUP-8p?He R^Yx9s"w' 1(yk5TK)4n]h.Ż-ײpTcm3=]T. R,. $uTkx < 4s!,v[w[xq)RYy @>åo >-bFmjRL(vE·3n`CxVz2ϞL.&1ҳH)豥F> 9i 3K0qHrD!`h[#%lp b˜^h/ "=-|m{Zڠ::G?K7إȺ-ѥ@zZx#Fm@їKp,p5dHPRuDʕť j@pnuY[Ny\VY% -`UAH)_*y1LK…yU83qђ{ƣ6]7:Etwr QBa0ɝc.*DdpNՅO u~$rq*ē+oj#L+s.HpA]( vs+i{\c 'TB%hm 'xWDμsQWps$ pD6 8`R5e-D7pv IR8"m-aпR g W)n^P0bPB #h. -XѓGi ъK2/!˕$D G@VM:R@ XIK1ۇK{pۇû}5poeW>\EX6#du85"Gpd QiFtK@DK7P4* P47#4%T4f8YTU*v2]I0yvTר~$5sR۬%Eo̤* 'p *$'Ǖ@Q7' )֔(JEp0\.}@ w. K#݀݀K p=-jĈZ6 8KBT7Kp 8 p,\zY7Z8l1o ~7Xp.t"}XaO pv"Z[KtU%=, 8tRb\J_..ۆpI-݀;P}χO G>\hB6{Hb$ T2d&KdAQ q\SƨEċsCK!@8b,Ȯ L:5ZI 8Ϡy01<1J-RXxaJ cDrRƏ\'!j=,Ud!Cj<4x90.J]Q3r۵R\$8G-eG!xNnu-Mdip:_Yxe=a{Xu[pTk_`x nuenp%u}.Eiڏ;`-RlPt *]2knv|Be*@1=4H\225ISAmoi41`L et'Yj*ݩ< İ?J3/iACgIΙRƜ4ԔRiˉYjΩfslZՃRpCF.*&.1-.wx)h.55znȺpȻWFܓM2V3p,ʭ<*6 2\%E"YJJ)Vy qD,Wqϔ`#<iNwq!y{ 1eTWV?ģfÁFqRI0)z <Մ)GL¥L7jCrH".h)jT)ҴT![e aB7#k<%p \YDY!3did3p':G]5#Ԕn1.<) l)2gXy+Jp7&z.>R RkCg,d$ԝe7 Jr:SXR$G@E+0Ljt`L<#ݨIB*2;(T$W#e#fpb,gU-e=CbQvnܔ0EE9:S^j5}bHըg. $p-S K/fȆT{)68[1gH<*I) 6 8(͑-G툀+y%gvJU`WqQDHpx߀V$pXp.EK_ QDJPͲ˥ćlGrU\W.+n Opm Jf$Tm_^F.}RÇSS [=rMRSxWsD[`,  uӔ8];:=(,ѰzTš@ i)q&TДG, %*;ͩ1U^BH&s'Wͳhj5DA >aP45Ѱ+΅!DW֢ } 9H^j1,b'Qn⚄sd3d9++\PC-< HѰpT&g+YS(D& "pUD kEg$MM'IJJ!ĸfȮs`7 ex`.Z#b -Ip>H.N%xQ8em#FDAEHs!Zu%Q*Luq2m2Z"/Lkp79̶RQUM-UjPlv1!hFnB hs_(]t}#`ƢF<%'aQ=pQ\j5-JE}VI8D@wL ҥTmc|6] 'ҥ&N6>H-+cS2#\Х$AB\1ȰSCAyf%p|,YB$ȕH%%k,щ@|xGU}$QixD|X]cm#I$LlxR5ހ#3pjb԰"f d@]s=PN \a? !5iNp&Ϙx&TT(;CxIύ1H3 7[87VRK |Ka&P *k_hNl`ԖAzfu&;h"/47r4 4D]E9Լ^Kp%$Vgx^/mF#1!į &~aeiZPKP:.2>ZLS(BT$Nv)qNtXE[v Yܢb(w-E)Tn .Q|WKֲY)L8OyLj⋪ D`-Y#pt+$@J5ɁP1XM*n9Ҏ \ iJ9ߑ+/v]4=̝!UTL"he(>r$!ft]y]Z"Aym4aOģoOE09O@f p2RQHpFef10u U,%H✵ $~))8 "o)L08,1UweHB}ӥ0 : 1)cnu^ᐪ< !ǟ%1*${={3gagH:)UV!k$׻rv K{hKd^`g pwQxp#ƈ꘤a^R05,$/ܢ0 'ATb|>`MfRNH7͹8@uxbp׵)%tsFG4)#\~!|u,Z>EK2p~)=)5VNU"!b&i%<ܕVw}&b#RGl)+&e}bԘ=IAŌEOTH‘E:uDתX5W<+UlUV9j[n9cĉD.O=.xժUӧO{޽l?}ٳ͛׸7n3f{i};y'F}?5Kŋ:?[Jݸ(y ^)2- Ķ(X"xǿoj 1$u]݄٪(-;/gmf\$SB",1zQ'haZ5%)N]p5gcuIk*\Cs^"' nq̭ڀ34-3Y>i݀]p_WHԔ>@VHBQ"~JQ1 hUIxfT T|.3?%?f]=,<8,k6cA.rnyp1 p6G>Ucm ьC \i .x6f pW2(;bJx|v)}x g6n@sgǭv 3Iw}WSm` 'o,ײ\ B _ן'zOVkkҥKjk5jʕ|}J7{kx %ρ}xG?& X<4M-Qn#PAJ(5|dd;EDBh2eEޕW^CaI<:8'C"![a4-}pn'䑰Yz( ()hahRr'=nw!Kxܤ(ge9T+mi)=;H3rQ@ky*E 4)u" PA5;j`mK̉=G>J*L˞-EmOZM$[<5dZ&+bȳ 㵪UI prc=$G6H"%!O[}ƍwFćZb\s͢E.;n}M A/ gݳ:/|=Ԅa-ALGsa$`|q_8B)HWWWc9fIR>a@^z9=$Z1)R|xMbX!Ic\%M!լJrPdm=zժUf_SO"='(4cK.W7z}zkݭʣ$5g=5I2<溆*8yHHL3Iio`HJnV#/NE*Ec5֒չDpUAMٽNބ$ZP zB\S*CRRVh2[,"&M9TOy#TD x9QFDAW7)R(G5$@M4wQg% \S'3bdvIAtΘ[ĎP)23~\4i ) jj8'ʙ"NA'&h03h JG9'iX8=f+i$^r@ s G(UYp$S_kV8 EQ|16"JDkcxgZJ6E3q.pͷpu1lcHsZ7oc+-B?>k,.E %A < [# ,TQ.f5p"p"B/WȬ}f}O>$1 6`Yvq 'l'_`u-g-5k>h.RjB${pىo(7sS#Q)"Y܍2%7  2ch [j5#GNxgyڐb $Ջ?|SJ/U-A Q](" v`2wLmTPOHeg1:;;}S7vW>Ë.0qxJ]?C=tꆓ7:u…+VHH<}^ѧwMk9"/l͎<3fLO\㈊vŕWZ~Tرc8{<3!ኮzͯ/۪deE}M69̳S~ݟyj>E!8bĈw ǟ tLF,떛okxų{jiӦ^{'w>ɆBrWkk0cc;nM7vuWJ7Y}nՄ 7Ϙ1r썀KI]_-(YSفdN^maR3wʹ~O"'+U_fdXVCB dg$brr4dQSD2_زQ5%sV1K'MDThZ gzt1T}z5328X6ڀl*N&TOY=  f5f %QdRbnLt*j\%b&4y!4nm…z6%Z"8F *zξoŋo=٢1k HHIGⱹFn:AhY>6" {Lb{7V[yM ]R>_zw}Z/~NN'0e%#XLJײFUOfv+5W jE>"@UE{k7ͻN9&%/Ê+Z[[wyg>|^:KN..88n 6lk֬Ytի|oz?I(95뮻@JiM64iuvv>mmm]]VukSO5jԴiFUZj޼yV9rdЦD$%S&577ȑ#G=f˖5k֬Z[n|[jdÓ W-]qɏ~cӞZZZZ[[kZGGG{{իs]]]?{]POUf\x#|oޱx񢎎:yI*fL2pK.3knnxOfk֬7e˖vttl]Y_.&(#=Bu=)dc N)^lΏ>bP `CdXs!L携BSrsxjHEe@b`'cV'Dҿx`4T(,FRZK$Wj6[֢\pRRY1Śi-qy|Q6th(ISd/j?HxSwIWEN=] HpUjhsh;sP & E$oC9yԢDL\ 8?o|ke;ZwZv),RS < .Up!駟{ UOVc0,HY7G}lٲeu\CɆNpʆɅIχUAwɝ8,&%:K&0j *VGNƲ&kh0n܄`{omnr[o޳f%9:;:MjEA}'Q6l7MN!j9?߿zvƌ'MdG9ħ={ 7s=9#FPGe˗sMMⰺ$nO'{%;C=K +ږ֒:G& o̜҆g>w5ku]6lM!VҶ6;㑯?b 7ԓ<̷Mo9c8z_em9&NSWGȜsΗ]~m4v#?vwAo9R 󶶥] dEiL^ћP 68ra2if- èeڡET,tv=һMU,;k|p©;oBԐ8J{VgB PQ͋M8K^ ݮx𔨫 yT&MivzFjf WqǽuR f.Q|¹tȰPp!nV[XNϜ~BWъ\%rNAvF\q9$8=R.2g[z3H) h9٩F X({ .GcHe!j( lqό( )^f: Լwq%rpzέL v3+8UbM܍ӥoFD"R/dd Źy`cP'rN:ƺfh $f*@1fn'pJ]¥xNJw-e< -|#G.;9;CW<O0sR FhPL/@`5X =3M1G"5:7Je5bΰa$ך`/_-ܕk:;nfBJDEk @^'5eg$oL[O;xN{<ȣO?;DTEϟ`M6=r3_:Gp&._՚ٮ:De\)LgK2l =GOlȑ-^(Ƴ$CDS 8b*!*z!pl@(D}P7[/Dc .<4;o=#p v ڠc>Vsϗ1QhY&z-B>JRV>`-Y-8X5eT5:0\(\T2'qʊէvI#ZTťȍ 6:F9#PW:4`ʿTuIBPZ,Is P&)P}*^F AH FwVp2z.IY[vJ(0Ϻ[﵌u؜)H:읦f͂.EQ# h6:#n#N'NڕCա{IV#G3g?8e'*P0z(Yr%c&R# 8DktàK u K.z5fv|YAᢅ \~wn1sS l7$c7h5O*j?~=XS:"sWn1GE \tT= p4[8lYdfd 9F "ABg,s7 NO xe_p x Kk$8&GjժB^ p ~nKO<*Ԩwtt4껼SO:9T,\ '޿SxR$E/\D,jp9 ;n}ŵZ퐃D>8--́fgxr<#G9|d{ߒIQFhkks#8N7o.k(277`GqO7oV3+x B콈ThX#w;an5s+IG#S*+'rXr3Sq`s"ZZ-a #^O~5쁬 .H&9yg9>V$Ol"Ud^)+pCe D^l$/C38Cbi PjSIF$"a(D$q=c~^!a%cy Y9t+>]خWJ p wS8̌sRغm$" ¥gF|U\Dg➂=LnbIDAT?ƎmmmK)&XDD"hk[ `رѰy(x)@ 'TXꌐԱyKsƧ%} QQ })4aÇQ//>NUx%2V+P|J>[4ecTGn$5>X_, ,&eт1 .Mn}Z#nر"0KBܧ6|ZbKU(C9z#U՚OM*hnnv3ӚȘֱ|׻~Y榛oOw瞇zѣIobǞ{^wb͚5]v-rI!JuC;⮻_xa˻@ӺAѣ T˰f3w_b/~tڦBB"rcx 6+gy{-%'M9[ƲaJ4%Z}bⰩlwOGGǵ^{w=kA?rH=T%or(EL9NM5?jL(e V26B9~̴8ץzVxʍF#f1 XC )0-C!Xp76~k )SUH0=˺u"TB?*.VM1I o -BtZ sO1pAi7p- t)nRZA}ta$ҙE\Qp0T97EWF.%(t 7;w.ϭ͞}ɚRtÇýӇZQ>b><Ѥi jg/IEKB<ȈUv !D!“)D[P jN 'B;xoC="weDcUJ^5jhin(Xr,_@XfzHAEUfO}nol8]v (@&=CmxVOlROwU~ #Yc. >QD`""^n#gCm93$fY *;uv.Pg$-^lDN"nwcnᮻ;w/ڍ6:唓oADKϜ?Gs5=]]]s_ӧscoZT<.@DTu[ϾӦmTknZrEKt]ǵaZ}͓;Vkנj̥nnzsK3%=]] >E"Pȱ#/u_vuu͙3gΜ9ӦM{{;rp>$1OڀSE$q.Gp.1H*1ٽx"YUC-&hA ht)C0Ed֬# p b4h;+Z|yu\lMo~SwQ-~/u{Y[xB5ZL0*)ļ ·\6&Zr Β R6s&d#3ϬY?o1c><kP44tDѱ3Tןx?E[[[/^dOR2˪kZ09W$fZH ;ppW^z޼yw>1Qxr-gZk[O~zIoyI?R:Sr& l0v6dM45P :v-odE-Fڤ̻d1bիW}!eshPUdXM @C*O{M7/^+~w'He `KGo~˗7n֬}B?LSVOId!3%)G`:)~Vg8;`Òk¦-7%p]w>ȣjN5Vs/.W\GyG gwy^{-"IRjn#ȦԐSdVh;;*'&ldbyUJB x,QT*QQӎozm7tO|m)MB nLZܝv(/^EANJ5$52\4;"lM7x?DdѢE߻BbI5eM7p=tٝG}|ժUgmgnEbv )$ $%L!moC$E{͚5Aژ1cFhdJ*IEPTM,ePky3ٞH5=쳟Y<[4jM$!"06b> #3|d8瑔f\F^Pp* seQu6Zڀ%5fUjbv-<!=@ud1I Ra}N W\8>fd~-~FѧέFИV*E>xB?g@ ݀3H݀I[7-z-Y`/o;̚5V#OpT_'2ތ?bFrn}o…nۇwv^s5juQ)4sÇ8TddL (l7p5Tq[bR9@ @sS3@-0o wΜ9>h$)"SxqMɓWvVky9݁ \9<6MtQGrKs]b)fj>ѮK&;]jjjGeOv@2S$5ɫzpn2rֱx≇U▍B%˖-Ӷd1l Q4yd&״xAMR:C4BRb(xKs?M<̙3 I2hPaX$&\Ik*Zs9h ?*$'&YДܳd]FѐEGI"M5̨KݨHUUl'N6'` %\Hڃ MP\wezT^H< IBE;>Tzq O?U&^?ҎbPI.pΓp `CҨ"&\I4Х(fnm 64y(AaMEgCʙF9vKRjV'_]_wvD~M2:;_^߲x5<Å(V5a2=KW5/O̾cu&@}]wRڙvmo1miILA338Ԍ)b@'4`RH(OI$ u(iE hnivaM4E@=6tsȔ)S6bs>޷CfYpsk]Dwmte{A2`uZ<"%cxPg_XK842U9VuwuUUuo ,̖X&cFCTqjVk &ˆ\ur^su#, WoɓD(}D$B$A2Z+ [js/wWRAZ|6۬GWI:8R(k"xgdhGi7㰁8X59"L=,^d͎8.LD;01Uӳ@-92jԨKZޟFKz]ׁFΙLHqR%D lId%岪ʽzUۮ-ʲZ4zhQEIQ@" AABbr|q/"ߔ/ !^Ď{9{S|OyϹ{oK<&Pz6GbD6pl"QR153."d4  yp1xGy;@A##숖H$fDBص{ .n58LPߚdGڼT|He Z$7 q]/'4Uz 62UaYW 43,{!CcF1Q*\ʘy]wK.y-?gOX[[E/nr7N+=aYS+vjg/T-`.ow+ 9Ͼv=oߜbҺk׮]M{w/s8G7@4Ke.#<(}(u'{(-=EWTeaV!1uSC}袋^׌Z8Wk^oz^₲J zKo}ͭ,1۽7{vxq;RT;ԹڅȒAHネxu]LGёxBS=/ޯڛ_J^r{~w%}_|_ڬL]?nct]fr~B{ _pޗw~G =v؝wym_~˯vOO2~lWԴt[*pXQ}2Fc#zGٳgϷ[wv[_ue$Ĉ2:2b#E83 597˿C؅74D梙MaT7Fš QυZX)JuL01hutS>&ea"6<}o_2+|QRZ01 P¢y0&ک8:t3ɔ nTw8cTib)C _P`E3(K]裏9rwuȑyDW^mm?C??Yz?bd~<_H BH}A!XݒR%O vet4!M^x"HT<;UÖտWlI0{=gU47*g??YsQ]_ c/'vEȾ: xǯW垳M5`4IffVA` s]\|q6g~_Ї>UֳC//?CGOvmw?z>|~xث^&\}s{N<×^gϮL^l9UY~~:t쳛BW_~W~jW7xbhݧ)IBgruBə8xU wB!L')6 9ub8LvyWv,:ˈ|T~VW#@pYRfg,Eбv/kLxZG}b:n/5'WLQӀUoՍy2`04T @bs? \) pLp+D^wf<ܧ9nDтϾ9W^~5W_}5xUp7/?g?Ece/g~G}|~׿֩ʀ͠ˀs}r^{Zu9UX, we};\lzn%lU/|})gi鍇 `*=c>`a(RMAc(7vuaOQC&?$Nj/OPA|w 7 S]C~k׮={޽{>'ON,]{v[6v5<]WYW_v?OFҾ}N4G~?ʿ>pĉooÇSN9oK?7ڛwcǎMն믿/D eDڳMˇnsy^C${Ϝb?)3 hK*aVΗd$ 3F苳6òdޱ M#<׍Or>L^ wk <*I.nMVk]8[C5T<;2L_~e]v7~p:/sW|U`6-7pGbޕ8v3^q}W{o?w}"fOJ3&{gV>Y6hH3!*xBHL\|3W^yE@GW5蚾IT޽{ emy׾|G?S߳g_(г}W'O\[[[Wkn}z 'q=o}cyOLfpK_/Fa5K_xߵffx3uHIM./+9O?͔|o!GD^׾;8uZ}pM¯dyK`r=dH$»9ٖC,3%Ew,H20ų:<%ah[R'41a'IZVLM6ik2Z0Շ:3MkRV(˛X%yL r`*õsyHա%GT>$ӝ)P pǙ\Fu^2_vG^ 8ܧg^)eZhu2. $^ /^&`'m2w+q@B+[H1QsDϴ\Lf;??#@23 ɘ/}Cwx&ȭzegl$^/~+o~lrit9s)Cvqbf 1fVYZ':w++%-ōR"&nm,HFczZӻfdk(L ٝ̈rrr*,R7otw_gTaz6W")fmW.K[b˳*{31AW5JMjNqѣȇ}bo+/Mrz3𡖨ɐsxb9{hcB9pc#X3ƞFY:-`"(8~*(PkPKPVc"V4&sA eRT\;fUra5 8*tlB.3D'lXȆr͹>iQ䌖= w~?D?GppE0wO+ϯ?V"|<ҟFE<$@b:8-4Q744kf{ZHo*\w psU-ogBP 킲ءɦ&o5`Wt_浡F!Dף_8e ŠH*7Ov362\\QRïH wvnv+働k{p p%'yU%*XGT'mU3wx0 CXMih3/"N"Ex>r!Qgy\F)e:OrJ9oH)F:SJarvxn \( $2{l c9fi8jި 57uܼ*C̚bV վ->y|Kf&ϵdR.{{e$uhfSOq豗Շd%-^:c8G(TN WuչՁ:'Ϳf+_YeUT4ںUF_|{ p_^@ZBj.Ңpʁ.ik$QG [fC,]P7>өi0UMmFvME|=n^l&pRnF1Yap-ӔyfjgOR4n/23]h)ۦ2|&I72GrF?&cMQCcY[,Kdf1ك0J)E`帆-y8䔒\eR!8G,Ӥ&鳁01QBrr-+ȮGb^H&,"\wp$c'9pmg5E\UjRLEq x 1]!ӒjprD8$""CL0^Q4p΢Xew%`lE$jH:ZEI 3"Sj>5*%v{OTOJ%eAY Ol) _tK.ҽ{EDG$)nDm2&]HAJ(+L;;=#$bdr-<%Ѧ['IΈp/ *2YbۼBvʴbGb^7Ӡ$# (czHJ5D-]֟sbT^[fM$[@S mEO3d, CRhTO*#22}b/8PC1]@"M$jȶz9g;yG!Q)'FKYgG[ԴVf9Γ.+\Cyb!U8NQ8xtUn%P6Fr]hmbWGk=<16-e؈ ъI ,Iw31Ipcm?`KJ\ x3kϾU)1PD x-L`{ΜhnՅrq}ƯY@ b@ y@El,!=hù"{H|EzBM*XwE(ɖfS,V\Iqϟyn'>ywu?>U7] 83\9CT U-Wg45E\ٸbppCrˇ  p& pOETEx pZi&G7t9½eFoGwŁ^pg+5{L:||umOM>Ɣ8P[Rŭ"uܐR& #<2z&)P;-[ExL)u V}?-}L{g>@k,CÃӑ0q$Y`++힪?5 ||OZ;~ı>zD<& &bv"AdsaO!f5lĀ ?D*jx^Y#=2kޜj*68R\w]]o#b?*]BrSi캆t Zc^Բ:hج0Ϫq 11X3UB ۞0>ixj slPFc~nFo]sb]CJ.Zswi)lII[?Fdʟ֦-rRvDʼ84mڷkXYO!ϦP& p,jk-?EbMWz=t4DzU&JJ/6M$J侗/ }aBTo[$4gɄ2)=9ۘtcE!U T7gP&ӧ|SvJǹJv)g̈le!a M&*\qL# B @d',ʣFtg %®b9RI3L,ӧzedbp@6di$6Ob^:nI2Iјs=} ȈC3 ~ -NjN FWG2STӰK pгC9p+`9T_< mi{Tƙ764Il@/q[|#\V.e%=3 3a]o~Ƚ;,0k͆}Ä$}N\X2),MJ&"좘-TƯSŸ H5pY&iF+@ Čc>1s0;-O0 $$r6LT^hA^ٺDVd6^3}'Lj']NtJbG af TB-k&=DuVwr;)X'^,`u"!$f }/vp7@qT~9{d8DNk[à.?OXluLVG>M4 &O/Ƒ0=#JmLSvS܌dCɥK[KJ'4XA%h>>n]#v[t7tlM"?m;6>+cRFQ]P7^'hg@mX:YM;FT/&fK.)e;A-FHX\ƅ  ׎EyT1h(r@FC<7Zlv᠚ڰGKB""ҴA{K52H涀%Pv4ˁa3[BJh|s+pn@,/6m_pyo[i" i^^V[,] 8 sۧL8EvZ\[DxYJp&RoL)e&h$P>24h@ɉ[\|Z8U.ȲZ\gr֌P4L]m51XCQHJnFpdWI d jY+揤 LoTV-rDf*d>O QN7{|rTN\~y)iK#e\:Pȥ4=UCbf^@WB3R/8LKI`;ґXbilr}:*5RޣJ!p mTK }myT D#AKJQFR*.iyw)!?1Q=PqtXKdF*P k8M%_P:;1zr~gWU27-?*&#wž"kф>S/`,^hOqyEN2VŰu `a:E8U&+P lZ|9 Vg=< oS>Mh r$nW*!,MW~O 󟈩N1|ƓШU\G :ЧayUm,J\hE(=̣l8V)IleY[.3k=`r: 8 pԨ P0ёx=0۾T6paK; OpYrttPHC]mE )&UČI?QBKi#UmGz1~ pkyϟ<`Pz"R 's+pRrsrJc)ƒKklR0_DSJ):R'4wñ)s8}^yLKmB%QjJZ\56rTA`%Sw Bgj2M,`q1WFE ށ`b'©-Uʊ’@K-}sܫu@ILkOQ0hߨ}0S-˯0BCnM1F&[6,J::0,?LDc*OƭHfv BWA15Wk [.\Nèm`s+;^w EZD4[tXBM @Lj,ݓ &T nhPid1󧉬. .H(OvHuX.;B .-LRA{t[mI:V3|'<]T@Is`lcڄ:l3ֆU%ԀGU*x1MH47ڜx+Z xMC8/.{;\x,/G>* 8 Դ. +Bzwˀ[WP|)5G6\[>mG siK 9K[[D8 EW[cp^ pznR,ǑRkEk)sx\ p pi9±y"+b(`g`⦀7RGSyrb4ESMmG9UgQgi VB'5u@ EXU5"lMKȌnsG`~tD9"<zA9o^ &! 5ʈi;C'̳RCQXN)O-3G;=HEVs\T:NGIͰ/GQt,2 lumk]/64>64 Dv3ĴzZա-o<gvSmplW'v9±!s}nZNev\U0PwJhGIIJ\ǞRP=L)(jR 9Lm#Yc;=h9.KnՐbUyNG%ArI>g֛*|+F2`*+YƬR&(ksg K5$IlEwMQQTƴ.oII=GUjy-WCUܚ"a& b9[](Jj Yc߄ipX'^bDovOPLAssw0*}d,`\Dw3 x4SѐqMRf1)kAz7^:.bN)YY+4SJlXp`-rDSz~ DFESsUkO{gM$\'(*uL0=I2ZMcaG PKvI2lfԃ%e,]Ol$`vD%T_ȌEA#pۭٿˀi%R;N)@=RL gs'v34*R#G -5!N)4nkЪz._-9¢ZsUצ9n 9m6<X8',J[>6.$#_XDn<\޹H) V<,%1?=&?plgXG6"!jMS5wQY3J(_\X3آw0{Pa"ڟI XL&e$C./ip„Hfbp4Փ 8j 6e~/e "O/ |{2gءg2&"Q # bb'vOqǐp05{`Ȝo_]e˿5@y5޿ΟÇ}20/%y~Vk$VZ]kusq.VOik4}?[\vN^{?D'?]^xb鉸_'#VVG;^#|՟?qou^Ծ~<]zN'g}=V9濞_ޯz*kuյךW|%z*o=sz<ןZ]kusv5c^W_z{Owo___K?{*:z۟=<|W=z2k|쁭^Ծ|lvV=յVZ]zkͫvt%z*;OtOes'멐<#=ϯ'{^Dl[~٘{_>W\x$׳x='o|/̍?r-8v ټ3^>id'}< %:n^dD D&@ DAEJTz@(|"@ؤs$ $E$d/ EB9?%91#a )HB *`7e',gKf{#I ^.B pvjg8Hܶ'Pu6i Y&l"|g<,%ʝ>:;SF"Wl #||;R>wRDE 5><1O^1AӒZR*@WG D*,A2Xy@E@bHLQ @4E!!J"T )P_6 (3f8kRB$RRFH ߤ |&Ai^<B>>!fG!iϗ8[ 8CH E^!d* 'R8 p" 8Ol8*!eҀ;* pJp펆aMg&zB< iRBC:5(L\`^U 1+&T˶7o4V2<`߯ڀF\I% x *hJ$PƬ#{n2ә032JLyG-! 7xe:;8804N0'8IzÕ>"SJQD/DNgVS $IJZ p tJ#8rOEL 3> mr8tEk9 ))Z@R\dwU&%@M> z :C጑HPIf*sQ e@ddH~:j&GMLDA )oĨ}A]I(|DJt@s %ILmdLA.QUti!*7'n p%Z<8y1%pXf66Z1)6;#*%9 c= N\ p&;-·#d$ਸpn8s|:eEw 89g.E8ǺߘRxXlR0E8"K)eD*mXDxXdp p -W_R*¥4ox,%IhC;&p@青~d@n G%&,O;&j-"&ZC8gH$ɐ@1XgMWP JPJ!W"A*R93:$P{/%evpy)|̞pzx;"3c*Z  VV"| ݧx\>%btG-f`A D.KB2x P(ScMFB1(Ƣ :`ӊCM@ P*H\3pOj4 /-]sj$P4@6"љ l 8ecKaI.g(9[<<<p,%<+?cp,G:kuVs<\gxpupWJ&q-"[ӹbS"|9gp,`LLe(B!н-B7Q$*5::u:"ShGng?}t˝k%Н}z&"D|RA'X 9T: Kd=aY |f`FPH!" ْ:BBDP7n asS 9U:k'^KQ3d h n80\nG%;lx4m 8pZQ p)92H! p$pb Y` 0Ά<\wE*#1Ex4NB4'bCPZ M#܀W<ѵp txfGpk1Ss[n18"gp` 1D| 6)#|p-*Q)pJlᣟo{ ZD8RUJQg*R;r_̴J $(zWd|\ *WUҺF' G3C`A?1UV]AD]ˀ2a? Vʘ>V[L%;PlY 23z3~tA$gxwܮ"p~Ek# yOݯLeQfՙj0Ng, Lc͈H$5K&$iUUf.R =ٚ9~{!vpp}Vd\͠)δ΁okLbd*那b `z 1Ƞ:i*<ff7ܡNU[N)f86_< (pRRcm\U;+{N$nIͶ+u3: [F+;pl4LO1bx|ր*pwwP3E6?֔bYG88Ɣ"ҍ3F'rWv)PF{5}{܇d(Du ,x&$d1i.f d֒!t]=ԂBBH5FF5Y qv%1HsIA-B=ze:riw(s"Er3C0A DLiC.gN ='ll1"k]&P+q)nK*QiJ$~*TF30SMZ,+I9|&-ॠF ݮi`1UH(O & 5XK[aI 0(-H)D&IP60Q 7G:KP7"R=aU&cFJ& v X]Mj"VzAHDw#ҫOaÍ A'vN 0Ff%@08T.:V6TY 5km $8SA`?WLgIXRkD_ -)sËIW!/¹zt.L!SLSw +Z8 0l%/5B'W#ur—ZB^HB(l1DF%D\z*S%\ ^| 4/!: rUc-i~ jhb |s҉<…j  8\O.lj<pBs7 8Gw!S'lt-% kR Jmp[)£(-'kJ"|8jn`MOፋ<9fΥo RRR;` p`oH)"v"\8ǖc<X i;dpM;Zps#W6\p1^!;2"pý<{pFm'šB&B_B.'y_;vɵSyO"TDq xT1qV'>1_?hLW3C"gET#ʃ"-΄h؜t7 $$BPAu@- {* vE=4#D&f1Ek.]%aIΊ&dD v 5V69V_{^L>v4/UY{FN&f̀ϦgrD덎0>ul*٣,z6r] vH5*ɧf!ֽ̜RpG$:drRaSpRrS3G! xj<Tja9 Wʔ`x/666J4p fpJ!iݿ4fM;1p]R6J̀˧A[=Zp,r83uS*9uNY^\@[Mķ(mQ?sߵ{K/TU[敲AgԚDzo uͻ`rpr -~07x~GDh 4 Z$Oaʇ8>7qxt]*M3f(҅ӉWlfd:1\8AigEzLg 8R$΂[ڠ{O}z/ج\8 QǚFV1YWe' 4y6-7>a+ABash6qQrŪ562p՛@o3z)go?OnWz+#H{^|%@xp>ʰTRvPܽ{\'TƬ@'zI._#&F"ɰJ,&1S0a5Q2V.Ljds9O(I7!s2F$$V G|չzJ+Zj/ljDD5 n]PT8/" &`XJ$Rd: /UJ8aTZť%An-hv*G+&K XnH)>Ly Hkb,I2RmdtfVdUdz4HFvp|Pr,{9D9 ՁpLMb 2* vmM'[+GH^wBKENd5~3 =9R>:,z]E}Xed?Ն2MCK..dk_v!!<9ije dF9H8q9e4+{ f`*X\ϼf E@l(;[1Wb7utPoT#ԔΒ=#DQM$r+4Ƕ{j:asTޫJV03+٥-z-vd: 4!~t4w3矮yMOPgYDud!p--hIp$eU+aݼB uo 3aIfxBQ2sj`\!a஽yɞl ˛.r!T`tXHX!Tj[IYK{2-aJ Ѩ{KJ 1a$ҀW݉jo6qBG"$k P`8St`hh` SsIN`/ ͋k 1FA@NuBC$WЫ ȴo.͎)끄GqNs"͚n2˜)e>47!aqfF)6dX $5kcK*{?qABG?OS9pK_z5o)&a׏|Nmٴ|+$shܳ sתZ颋+*pV%2P* RΩNM̀=؜.hHye`l9Ӵ܅m43P4j5f(`^z>l&4%>-s#pQWujsK"JbQqP^֌x$Y+Vgǖ54R\*I#j1r-JEM썠KB}Quh>( &@6p^Q0CRJ߫~`TTaB*U\1|U4^Ah>A Y;kC3鏵13|UwLd/eVWDj,(@*.Rȇkq׮]zֳwi8xW_5ϯz3}|o='.?o}W!|%7d[r]K?O2Œ NŚVnsh4jZj ~'[PuIS24: p)QiZ9,(Fޗ2EhYfS1!whL~~L<9 p7xswi\ExLe\>P 3#rѸS.D(!ّګf]f5Tْ_׿7f3w}/0#ٟ/T4//y4T=̑p? ʛny\PB%×?p 'f>f;D$E[:yz)Ps&+0d*L*#bg+XB=$̏EՎE$T7l=~A?q W1"vڡXaӌN"٥ѳ]QA*3K 05J{U<+3]Ft4Q?$ B4\4*h'QZ=/jh6ZL):8\pDrBفd7dDSF 6(ma Q. nCjlt [HtS݀ȹzy}t"GSJۜEvh3,*%'nQRҥ9Ol h5Dzq ֌=}ֵRpB3 ( EKLl] ߉KN)@bƺ5-rx\ JMt,Ɍ$X_Pa!z,j#2["W}T`14{vGm ky|wf3/ϸ?|_R1y{~]Zt׽8]l{Ϯoo뮻I>yݿ?@'㣧JU[$ɬ>Y" Fzك!WasG"Wmгp8f~xҴ;p'mI:^\2csDձ 3bZ%(-R$p'V0m1ea* ( VlGo-9ip- n5E8;TΪ"h8'ݣp.#[`ΪRRo\\pN{.mfZeM$ plpl,ɶpżk r`tKr p gn sKӀՌ[Drc&eHK9\gs8MiM\ ""g"CA3Vlhj 5Py*J/~/o  |#?oq `&{#`9_rS',n}C5&v7t :QT1&>+u QVpH#;@r;i!Z7Th$0})hVrT`6¶`BIЀS6?ܺnՉ һMl֋OeڀƼ !(-KZ DݺKw݋q3X@2'd3&򋶳ɧ Ί,:x Y._h!u+ 0HUL XsǞ8"5 H GGGN/*N>pN ޾YI 6 K1o(͒}ra6в}n`3>3p' Oܓ{ xGN)`p7 xN)0&rҐ,0ֽQibؕ5@hú.(MAZp)ë{nJ-|lc#قjRʳN)nJ:0|n姟 qNs8rx[N)ÝR,gVtO fc45DS)|^T)a4?H%B_|ߗB <#/4t5<"ZT>w$/|鱡W;vC:uI>Y9W9hJ1[p%+Wj N+~ѤݳS"Nٵ )!Z L6{tv)MPL߫W)g4ռ8,Yл5f֩vskz<O! |Xw.lۣH2,c=86nN^4qRNO&!]p&{Dl#hb2 ߘR\k%N9+kÄhIr ppeЪ52]w"^T(X&tڞݻ1P[wvjPȮ[{6TwT$Pvޒ__xG]tѱG?Ͼ~یg^{=.K/t=J-C%1C~A0D*R)?@]2iƿ n** Yṁsu%HmАv)I}_zYY˹_bբh̎J(~ PVQ>FSKtyAuΥնvh|03/ '쭞t 1TaT9gD{rj\/M,Zz!-%5 Qf&=fyw8!t31pUzqE=sF*=ʮZMc.@u {eYIeD,ꡟs3QW)nl{S8&k0 랓1V\M; Y=50,*$--Xn;G/h-!ȬlWN!Utv1'.jaFJ]6-;Ak1P/sna&1NهuJ&(T$JntVuքTyF$ us 4jLfi9;fwРQ^0LLDvܐ|(u+/p/~5&by .82w.?֮k'i;+~~9y]r׼E/j!;~>IDATo[n TcfҮI,¬]TmF*l_#d0e.NÀ#gd'UTGLbABj6; E]Z%k)LJ9 c b>/Q/n&r*Q FV(l2\f  )G|MBqNP#QmD[qA\A'>摆@#9Wc3~`>+5Q%џ"|JK\>«9hH)PV2^XF"C/(R3s$άT5=zdmm%74 r7>Vq6"ӌVَmH[$lY5'#}Юѕy<<~Ԁ3[$ x }vR@ z>K¨kH"3)=p og&} lYZ7RƪlR@U+CU:Jve݅Q_WaZ a` 8%6Rꮻ4tMLa/KOA FNs i`[A!{jÛZr2vlBz}Aq|hB-H1OU|3SfP`9j|6s9h`H H[:G+epĎ2Φw2U_ae!рآapJw;ah€=8zɌL )<ъ6F+(; N)l06;sgC(_ÝRp[f.'FZ@x0}]W1a%&BU;J/cB&v޽k.5 [[T}//>Ͻowڛܫ)Y*5*+.g?{b\;q"33Xݻ_o?GW_sCnCi$ Uh6R$qS`iRyY{d(x%J8 p:]j8OFLjYYt!eM{"-[iA- &r:po/p&|]ǦWu1)ZQpצ7m\TeGsFyVwzOp-M)'"\<6p.G#PA-jHyTє x2_XRu)3RAe_%!  -e^ǣguv =K_?mK.赯};rwu×~g=k?p-d_ɵK~k^s#nG{h #x%d93xʢqċ(96u4pՆӓf.CG'm/TmoVݽQ GmMJ5P)+ܥQ/d;J{fdři253rQnxL%B"(;%Zfy*ˆVӣDåłRfxptڪsm(iT@nWT֑ 8v׌R07 .3G Q(7$Sb11%zsZu/sw\ǒ][ RY{1ROLwM \aMve!Q[ET>g~d(b@#$gYKv@ډYHcZ0zOO]@(7Sl*ڱ8ˢ#͚ |2ʪYnJ}F%2‡e<+kwtF]iF.tN :}U X^+W=lbzo<"CA02/UB]Qsr(ڰ TcW9Bùٮ]`e+HE1瀄F(3#XŋfU ١ۿ|g _.ID˞ $VYPYGm^Uc*`e`"OH iѰp; nR 6 O+nW҃8~$5h(X˭2pw'3_<8pl tc@,['p5&o87pg-.uV ['"ih!"|#.WQ4&يwB75DQ~_jYZx^gNɥmEpnjP}87^ LhAf)?u޽{|`l׮>]Uޮ1E,}Pucpꑨ1EB>Ϋ|oP)=dalwln?f̙55T*gMZ^ݷP˓5rP׳YE Buv֔R9#U)j&Brl0 I7&o{hxz^Ű빉aLlh0W4vjޔ^OR^]ADyWnvgK֔k-N WCJUHR-85XBKC$5nHi#F|=a2a/%KO@)~BXͽQ7 #4!T.tN9_iiJ bLwXL^;pw.5DO71&xf5ktAmUD }55̀k(kQ5vM܀où!cCǙs(g3Wn1a;Ujk#Zv$C^]Vy"~L[=LN&SLƎÀ5΢ʑpdtp8 zsǗ1K%ٳkw~w8v>g!f(W+e?RMUN&鵬 jaD'R ONB81J޿_QTj-Ց3(pt- 2^x }/#;Pm0FJ*j.z4ZAJDv-K,wYY1 `/3BX`^ wуʿ Kx@e-^W>AWm$Ez֩a6sذhzTla^i?rDv/5,C`^RW;8eB|VV.Vc2V.=P/EBi*tg}w{p9r}k@:9dIk+JQeEzu-}+M4Ű=u#11#в>fM` @pjU=B䦱Xi--4T}V88e2ocC镧Kc[\jOTCSɯ}G,i +]-5l'"+0T#׼ںTMY@e3Ԙ25D͖ =]5k @sj%P*["f ^Esf! =_wḌ1;"9\f c&^3CSրe>ċg|l9W13Exc~6<7tOkZ<t=٩B;\rfpxDx@Yn:薀{,>2ApECD|6vxdxj6BtIMs8fMGNv4hDk  ʞBiTdͽ@Iz ~hLfJJ` ^3 ȌjJZ(*?SzT^a}{JH84mmA 7֠2U5*˸"]Rϩ/d' ;\s7D1tB lZC[%ЉNo10PTgf_9En@V!5n6#.v!fsNf}l3jWQ]V#]Qpep1M2mXe2x' MԠ0,\ >ESȞ܊ *rrhH ͮhDvvR jN)gUۧSN)wJ 4:)E^ceR?'(0j(1 S1Er86p شNmññsxA4VSiq레Ly.} Lڥ^ =+`f.0 +vjJ4&u*轊R,{8b[S| /ZwćbF@UeCcߊ.BwIZd/ /f|0ϖX\1, (<Cim_Z~<F,Cld1;ppִwo7G.kU]ɜ p d-"\; pְx€Wubp-ˮyD87蹈p/̈F,&2r'"vg%-г<ѻSMh1-ZX(5g#fQϺI 5^V¬e1=+dJ I;g>mU]D$uV3LRlp0UhaF\1ҀM G F-#o7D {f$;OAń H6ei(!GݜaA뾲W*۳+u*spns<Fb!"܀*Pmhe16h-=)Fh֋F0sg|;wLׯ¦~=Dv&%/Y,,dQDtl'%T,>vd ZP=i;CfVV DJI;ŻƶfwNwz˿cl t aٌrQq `UGߧqH% Ef[Yiš@`檳%gFikgejUV<#P޼GvI(Gz>0q)la .Ջ"U!'GPC(q-F]qjUjaEjTˬB-=.`:fwndZX95͐bI.sH 1눌Y@.;-@F-5b,C{{j9l`i QTוW>c.y&*3C]*G)y}UfHs @AGNdٷ_:k5Bh-M9 ʎí:*cڽ=Ukq:M腪:jc/9R-؋okWs / 3, 1i4,0hi~, &E&HF%=iۓ8P]Y3 Y1QGZ0"3ˎU3 8*zMUw0+9DMֻYYvUK`V0T 5|ڭ?hfT(MIpP~d&u"*z݌+)@WQsNF=n%ba Oee.j&d fHT*DYzp ?#p9`Lav4xzH@02;KF0kWPnFfS!̧q>{ZPN׆|Pi 1͌g{ZQ:#g[f|_*F@m(K?=Qk((Fj֨g/ %3GYN:/,L&qη.C G l| "1D.yo[yZFDϋ=|-ޯau e+0^rh>uQVZ]ku+7VZ]kZ,*95 V~uLEeQ\[ݯW1ݯz*kuյٵꩬյV:gת_ݯWUOeu_ݯWVZ]]Z]kusvz*~u?g_z\Jpm9WSSփ'N?~ԩS'N8y|>?{9kN?$m;>0wڵ{ns޽{ݷo߮]ZkכյVZ];fG%ѣ޻p6޽{^x^x:t^VZ]iy-N*9?kkkG{9rĉ{ٳ]vEDO`֚t.yl8ӢQKӧ5N<{+K/˼=9WS̻K_҃>^o>נbZ9需5S1 Kgupkkk>W .k+ZkO(>~u5sT?OOO,]>\?1% x?y>a|>ѣG?~e/ܷoZ]ku}m\O裏qGuСC{ٻw&sU7Y]-ƦXG}z衇u׭-kuu ԩ;v;8uԕW^g<.K.C߿{ul6fiYW [w9nz74ٳo߾_~^z\ݻwO-~#G9rk꫟귶VZ]T־կ^|_|\p(8%;`e IO:u=\~vz*յVz\OHOȑ#.:<ϓ] ;pC.̼{-V~utxG}~_=|}}; < O=y fgG;z?Cϸwpƿ;ۻ7[ݯWWf8q /ܽ{Tu>9f>,] nMߝxm|]^q_W?Mo{7wbX/z/z_Ix'7_oǮ-4O矽]oyrd^ݯ.'O/[رc~Ǐ߿e/{^?׮]/x ۾ .g~җtwwhP~uKzGMo? /|siԧ>3?3ǎ{K^r 7;o^~[__^v-\qGwسgu-oy>|ثC=|?|uMDžwݷv3.lӟO}W~W8po"[[oۦ#<׽GG?~>M7t^ȹSL2\O~'O<[|lA-r~/}6=?۵s_sG3ן{l$cϲ_ݟЇz衿W2[r5G~4ĵ_יW-77}mZκ}G}xկ~߾zWLobu̜ϟ8'1;N>9Pz߿=={Hʵ~G|/pƟm}zOخWoo/uN5G/3J}_N#bIԧnF7C=lYW+7nڿ\\:WbQ9'<)nuH|}{G>x`y$_җo Rg?{GuΝU+66 l:B'$K'佗_ !Ƀ@BDŽbq 7\p/e[z_m{hZ+ieg?_=sΝ՜9sѕyt۾<5?.;蜟^s|[SkTW<{5s&>*no1vS{ݺ_мR'edddee>7x̙3&Lh%K?~'j7(ʒ%K֮]kn>h3ۺ>uew}7oDz!Cɓ'z!DTUKyb-y*V_cǎ}' ׬Y}o1//ƀ<֕bFRClٯ?>^9QY+y`ٕS"q\blzq=5[.#Fxr;QfhQFuiQػŶ\tT6ٳ?}͘1&m=1`}= q޽;w W^yӟ_~G?Qa999sEDEQn덪UWWy^SOl6*5T EEE~i<@JeRRR̼DTKg)P7 ~cnM~ywdu֠l8~}TB`2xQ+<4n[鬬l灰tRQۭ[Ӈ:6nz^oCv;!dرDd _Ϭ˗aÆDJu Ec*rͲu]Ph…HF.^3]C ˠ::?̔@mh-鞽Q7)x{}|>EBT)R$Ț#{?dH푖߀_4[v]׳:6??ݺu>Qdjjj233el5%%R^o>C1kf ͛/|Д1jꉲmAccmxD켋1_E5hr}sL)L ԞS`KMm}-6ԋwOII^~'N=zaXS)/^r=zTUUntYD1e ԣGUUF w[hޝ{ ۡ 8Y頋8ӝD"1e`qO"ݏf}9wJvJcU@?ZOr~5>|x˖-q̙~{2֭o~k.._]]]VV6z芊2}W| ~Ja{Yde]ƫ@un>첶G?z'$I WK?%>8sL 3gz1:@TW5R#vpئBIJ)=T"IJ 0F:#%?~yf0`ukm*V6○ hؐaonŘ1cn˗'`ƈ#^ ~?/a,/XZodYAfee=I^:u_&%%aM:hm`-P'OtΩSz;ǭѵn:8W bh0l` O#!LQrB Jdi()$3yjwvY ešUJ'?6mɓʂ`fffjjuW_r%*0y?L]dϼ_ٓmoPJef̘1}e8~f>:brLОXah 1[ (rk4 [L)"xҫ*AٞSsߙ6),uzoZqDeFA{.#5?333Lv@.pX.J HTN@@@ \1{Æ n/ZR=z2eʔ)SN:u)Sp1hѢ(1M֯_[oYw.V9uey}$/R?ԩSI2/)fM~ȑE亮/\0??cŅq5`qɗ_~qeee֭z::`P(w~9Tp'- È:6/XСCgc|x䳳.]ZYYվ|*y6 CӴ޻sD4-y#7DY*31?~<ûbtW^^.]jO>]\\|5teUU`h({  e6v":6=;|͓'OylМzG=uO6v2W޲e UUU[n]ruJKKaDܳgڵk7o\QQmgi9P(}UVmݺ5Z\wKLb; +..~ ϟ_QQ'w.3--mԩ-:ta\& >qmm}~n߾Á@ѣ=ڵk%I裏˲/zW_}2[~=74O8k֬|w~ޡc͛wС[N8qɒ%7tylݺoͷ={,\pƌ|v8[FMٳޛ4iR;qY{o>`޽>|x„ \&??С@)}뭷f͚5sL՞={y睟'a'NkLK1-D:CW\9r[o .xTO[(;:$I7tի/_;tP~|>_AA7,2/~}pwJTNZl=UIS{;Q#j5A3lذSNYS"R3;~TU ɼ;֒h|~YYYMMMnnylzz/˵k׾kn[oKoOpO]Jsdfffgg[Qi} #z3N\TۅuDZ9Ro|CeW,?52vŧ VoR8/ma̘1[l:t-[f͚j^^ޗ_~yܹ{biiiQު^&4If͚5tg}8p)t:ڹsnذ7zˏ^p>$I 1?;Ȳ>;16v.C(+gϞa=z_9B~]ʴ$I&XTfSUøˏ;VRR]rUW8pɓ64 F}13ÇǍg~SnW_}̙3S#(gϖ$)Τ" l6љ=꓄p`mWUuԩޙ3gxaf,?J$v "y̙{?06uyVw?G5Csq)iV$>}ɓ'~Gydʕ'O$K5kV~ѣG . .}O)=uTZZZFFndWWWӧ=0t]o:㺪Aumۭ,744 TU՜R]b_M̧/s75MӸ:}>{_o4tp>khhnSPJkkk^okϤ]X!In7 `L*[͔GZG:fctB!nDm{r B|x($~zJ⫉hSEi㗖$K\dݲ$I#bv]WWp8n5g4ڪ# `Z*yx8zp8s5FhS i8fֺnm۹|^Kf].WJJJuuu7͛熇'w`;pKB獳'?666Be/8J;l6rpE-W1śNg!wN~.;xvL%ɲ̓Q/(zEQRLvpN%R^`A;+ߒP}Imɪ@m@jg+gZZoo{^?m.wЗP2Jr#:̼uc sLqKPy] !ze@Zg,1t7}`m@uNK@]`G;:ghnͻ?qߛ9<d'ۋdL$ .tt@oK X=gy*Iοw%t?Ji(x!gkog g'AID$yI7/+gaCp_i]ߚ#imCw8pƐ?k`7Q$~xK]|DcdEϷ ͥV-z8!d{nաwR{E۞'woٽŵ >6WƄ$ޚ_1BcwV{[9OE4M)I"Ǧ (eY4Ž[ j%OL|RoΑvՕo{sz7sgC-ln[sI<龩{A@xzxS{ zdOGw=惋gszbϵQ<R{v_^k(W O8m淿/gb^/Fq2N.xMU1$,^[}^S#PZO5<1f1_{O{{m*]|p޾~+wdO>l8t{'>iW5Ϩk.-//cQ"I~cGT $J^y!@) aOcx(jnOh/JY%걛<6GRN|eŮHDBCk`Xp I!HbԴSJD$YxZjn;ѫksٳ. 4ՒISy\ LYvx{ѥߚ2`3GWs5/3J$a# 6Tԫu3>pU_}.gmu_ls0$#jt-:حwwȞֱmze}JV\e.$8n(^MCV1ص4d1/ o}c^@E!.Ww3ή'cGxK$N0*sNt`KoGduMqnhFT3A #)ZxjO1cm,8>"bJvJj}-5E[Zsp~F+s˜&D0``I}2Fd䤺3ݩ=SSSzyۥt?a=ɻ|H1%U1e(cH0Po9züєڒ5Cg@Wjejk8Ss/ È7穮E14 1%`3! ORzQ(&J0}gY XhG# &u OG͖$yIOT$Y0}p届ʣm( % V_R%/QZ ?(vem<}//Fn/@hcA9O̓Js;Qx{}Y)? f\oU#ҜS9(; ՗ֵO5G'zko-daޞ5(;774_+_RKE@[voLrͯn?RVDuR{ ~y췒 D@D˫;A #\ KL#\4s3`-tM7۽}yd0#ro_N zjw13ehFcMcJÖ {yݘS{O6V}_xZ;dPFiCG6dv'"bMZ}}3xC‘[sd?4dVJav_xϮ_\f?iN3ff;qgt x7dOde*ߋ;$hS#Xߒz X?g2p㫣x3O-zHo-XCsUm< r;>Q))Cwv ܳ+š2F)CǁEdEbLЃڎwM=vgX^\_^P)$À1V_^+<=R'TBQVSڔr_3_,ޞ7yOZ[~zիW%wL6 BH|K.O$hWkWHY*W~&HITkY[$SpLTzq =@BSiH'#"'x Ц9ީon:oL8u3E T)B \$EuϮzM}́YT 5# yø!KÇi=F5ﲁ6}G;n۰+GjEۏy{eioNڻoIUQEe=7aCRtF`Үzjr\!}du17d':-ܡξ[̾Ż./(U6?@7w{ߣn;q XM/d~CR%˰] ٬m0`աIF^W]}{ś^Z_~t7'93\55_ZWqla+*ɉdO%^GMi[?ca D\ml'~*f }F.0ʂ`MeCNI8u)ҜXU\YUTYw6PݶLOZϴY1G3ҁAN 붼Ŗ׾@B1"I8=Z&5Y˛^X>e٠$I@0s@7/dS5+~2@P$o9?ZEM;-m&qv4pg^ڰu}ҳI'Yٳ祿ט54羷ZԲv?y\=8IVS\" e6ؾ#=!f>׿\mǻ_" c,o?*#/ڿo8?y;Q`rpnym-ɗ/q[> 393~p%HWs "q(Hvヷ2v %L_ 7$y艓c'$ J+B QHx w}8S`R\cK^Yu]ٙ.K%;hSNSk:?5 [cwz*=r{?zK%EvzC7J\>}әxca466VUU >3`Pp6PU汧RD"vTgƚF&=!b%Qf mҧ4Wۙ괧8je ͨ;Ul ]I Ponԃ)؈DЎD)3XcuAi>tgd-eHP i_J$bW xMCE otG/6e膤HQ} ֕ړՍՍ,wZO/OII S%h5Ǝ]@Cc0/~h DV[ 2J]=CS>E@`ߝGo|;aGd_yȌ:IAoyWCZ \q|LJ_^ g;{`<ٞQ TLMz A.{rSSr<ͽ׈*{ZV$uz]4gT1/7sb^#")),w{zn bS[t16ǃwvJ; Ay.Y[ؒDY  oaU{cD{%4C`i53fȱILW RJ[OySy{y_:Si~4 bަ%hxz%6V' pVShGȈ( 776[#CWxGkO%kybLЪS<*$VHƸ&i@#-_`$Y/Cdina(Ʋ[*-^͘Je1J!{t)ԥͻciWVXLE: J`UcOLoQpS#9o/t,O!( 1eZ +hp[1~,"0Y݀f+J犇s]mO"׉[]qՖTė-!/ W( @>W7gȆD1{3 .1`td5%f\((@[7h\':LƱzS:0kmZxYJ1ÛIz{Mo=ZYAis%''e Gd[==8H[Hc9ASDSSIMj䩨m+w3ghx>3Fe<-Ysѯ>xᶿ|;]t t1s VH#ҔoSa x*.-Σ{b*WA9H-D CҜFdD;o|/޹WdUIQ.yd <K5-(TJLKy6Ys-m0x]K4G6g$(=|s1DJpO,O^K%Ң$85yo<sWޜh~FY*Ma|hюu1eIT-R%D@-un<֖A#<x穰!7ua1+XjAQр M⋲Taco>2tu zs? Xy*pbqFY};=S\$nX-HjMyYͧ?ZdCT߄_t1eͦ8dUBD|*fc%O/KzNS" 9$~*M c*|m122O%*ҔQX2\WlT2]/dr6w-~|۱IwL0y'7UzɽzXncõN@Hq٘n*+(u:{AO+aQJ;§"sc|d3\.ְj+V78vtz)1e SlJ*yX?GͿ+y~gWD*E6^#zЈ:m>_V\$K=Mc#%s*F<~ӧM~ĉSNM:| 8>l۶- M>܏_px4TϽ`7z.n>0Dh .D&9wLCeCew9zxUxA?Y C35I!"\[C iY0cCZu֝G޻woٕ~JJJJKKR<xм-7Ų5Ds]!h/꺽bnlDEȣ"ʪ,co!4.'39*`cѺU G^xM-S,wPARNW&Jаiu팱¢"5rȔ^XXtдiӠIA*++z9R_<Gd^#G.Rnoy<H$~*/@wr6둥?xcd m*8f r; f:yTR(s#sh Sq?ϣ~EuR*Iҥ^op۷y睌ŋO6RZ\\|׶岳;NhڑQQ c`$e ==ݺ+Կ_[1omyrD JQ4_][`Sz4 X8*]$uwSc*$uJ%!tioe~1:  N>]__i˕\$Y 0B\oZ3gNFFuU{<---y1s1Ts= .|,u] ,n;>/ \.sy1B!0x1R''j[Id+7Saiw'Qu_u]u]UU&\[D?v;naRWzU nIG׊#&;NYu]7`I p8,I/%%R !qJ1 # v-SD\p[(xXBGh]iuю?|;6G縮P(,7It4Α(yޥ&Ov\`1[P%{M0 Mw:W:o .xœQa#X;u5Ft.$C))@@uQ4MK. WR +p(!".A݈YAMxpDEt7)v!ITmE=QrEb-,:NB " irtX;oy)uEQc\B!#M*NL4S&_x)x:C&ۂ .xT]57W|sk\ Y?ѴWxdX\ub3M1W$XpoJR ă(jXhz 1xthbYL-b?W~\! y\<ʅS9{UN̠=;Zj]^e.bk X\1!9c*pG:~ ϓ/,w@yc#9J$<."81J<=.4EOB睿D" ~^xrT@$hT\p=1@8g&]$DwsnNmKĎō8d%QyТ=9 .]OF}2Kg?\pS:BT.$꯮N1$1lsI.# c $P\p9r1+qL<z2lƀCE)65+O .xW8VUU@"pT;,y*\p喌 . ~rSHDLE@@@@ a1\pELEp\"" 0@ b* . .gLZ*P]WjƆ&XOujhH$#fTgna` c QہDIBYF$(D J3ŖU{Z=-ˑ(."c#qw~d5>q!P]jDJAF@` ` c@a"0@BRX!Cfcb:ʐF@y2=Go;m0-J)izv׃e6|@m]F0$@eȘ$H1n00 2ƿ#p5K 20i !)<9c猞3zdwu._dR>_յ]k}6Cb)&MBB@"(# "A $r$OE8 4jI9&EcpCc\9Q``LgH(”tU[?>afߑ;vںu~\p/1@UɡE/~4UP%%dD$>&]BY)xj]Q-2` 344ii̯(SnvΌ:KW 7zLU1FldeBs$b (M[i\4I0O(#P @2 2XPg>ՇK>mOz 97K@@@ }y*_y?7fIKtJ^jRTR!M!"(!HA$WvAD+@`(E`ȝf C 1nce?A ( l:TЭTڥ,'vI9N)X{W鶹\pHxwTtM+_YⵓeT% {GGC,psbF e\t#QPԗ2Z~cUǀLB`2E"TJT6Ĩ(\J>W . .ש-K_YRl)*!iz|wLglw>o]2x2J]FnV(=~ƪێ33ԝ\pOOWr|ݟEkr\ĭD)8U?'ߍ㱗+xN ֨ ^?~= !mdt+n#7 G+\TUvdɐo}h(={VD)xw0z0`+>3~xgQ;;N}UrIDATc Aމ $D&-bm0]o`>9 qD$$wKoWdv vtNDӧO^L%ofdd=:--xٲe{ "b]]]]]X "jvԩ9sT*֭;z!CRRR èݽ{E&O|-9cǎ92x~~ի/҉'&1+ϰ@-_C,R)Sfc _7 " \)ߚclOߟOu->2oɰ'#oJdm)t:Lb{5j$I'OC߾g$͞=wz<,[ 9cƌ-[̛7]q˗/߷o߄ 9p5jTQQQ[OTU2 (Sa z;m=0m`}deezf5Pևھ`qzbWZ$BBҥ,T[ޡa!D# cLD&5vP]ʣ;l??)e:f(31VqT3-cD7sg{GN^yX>bOu4`׍LPx?Fh(F|:" 4<]LUk{]o8p`>B1n/yhv#"1c6oRSS  qgM0!7N2f9r;*сz̫Fxojq=Tca?*f5Ŭ@):RГE2aF?Tj$:DjA{?^ 1E$Y[̂ c 0=o:C?k3u{vnܭ,բmsL7p'*Fy1d#!Y=ـ w^Ҽ~tۛ[f`96I:։D"|3ReQ֭~$y(.x9|cǎu8uڻwS MOEEaCm+۷FD^!La>pM6m۶͌ÇO>}};v, Jޘ $BlG`@mW@ Mt2+hezPlPN>#9#Xc ޾Hk$wzC2n1~@d4 \1m&rCżmD5G.5 iԟGCv7}ø-|ARaN[HBZ;D@5k֔eggO8On9r1cb[x󯣢Ï>[ wk׮ , vF_xا~:zhxt]7J<ad7XƤ@:2?Uaa?P(Ƹk2Qs(XGM$}FMzQ2^PK_V1dN2"01e035t,oʻ2\}'/9|F" 2(esJAjvf0_I$YW(EH<[fB$I%zyO.Yr 8uL6ao?5cٰaCZZڀOVVRMIuu… >o vzZjlkD[ 1etӇ>^O۟ =z@D;يš^jQ "6 Xue4j0lCF%}9m23XCyw:@D%WT6lg6Z^xcy]\՘ghl1/*$Iz'RSS#{޼y~eƌ-aQ|G۷oGdkݻ̙:^+++KKK`1~wذa\mddd1bժUC e˖92%%뺮'|T%D1 1sIq75u/hk?57 XY~'m`=u4E;I>D4jcȸFCCd9@jCFEPlr8ג;gEHiQR$Xs{d* 2ݲlcƁd ;" SbP%Iz̙z}͘1#fc ,طo#<X: Ə;gB(nnpmm?zf?~'? UU)^w'8 [T ePw 1F_gO*n׽lF'0VN aWPP:]1X{[@B,%(0DJ;UI j˶ؗ4ź=KJTOFD쑁I!0L֟84v 2f0kŠamF-#bhbW!* pa %%R:v\ty~#W_u$vǍ"+& ?>S5t\ӧOb+ѵ _)wI8ŌP FE% z03i7IC.>R=z?x_bԈ Oo1ȋ>aR5([EU12e[m)vƃkOH6ɞYM35tʫH"T[nAfqɪ*k)BKZ:mI\Dqju]Fi#G92D"gCkMTU.};wnQQQaaW^iʫ +yc*Ky(ɢWL/Fa,0Fw|b6)s(UrQ`T%X@ xڶSx///;mGT*444X0x\UUc󼙆[7bz%B .< VmsWȂgEf(nUdM$($N*?hyZ%zȝy9Jug~^1$g;=e#bea8F8-}:RR3-cSe~py{[WLۑ2Bb $U{"ئ#jmĶ\s͡Cl٢iagΜye֯_f׮]\t̘1eee槹FXRRQ1y8|G?zǹ"1%Ijll Ȧ #a`)CgW< BKZx cS "؇$ãzLʛ笲Cf#RR᳴>@"5O~ޚt!;\C߳p'_`ͨ@_WP]N>u?5 : ޸9([)@Z#l!K*"aP#C  PrG\=`?p8S]Uŕk?63f?1o/ۯL#z$sTTT8N,90RRRڏa|;GĴ@ j1!_ϵ3Vd&?2j9y TM?=kV*aZ:07ʓ-7rŃ}?0N_cs,&4)/]%eJK ϽAY 4!D(2}WӛэYY_ZeTasG^L M4_Hc[O}vsm7o~ #1ˇ_=gs/>Q|<{uO]0mT3 !O%Y{@}r2櫥Uq,fZ*֪`Ibr .'OR!DT33jkp͇YY!0ƀ[bWyb-Č~Ɇ.{aF2E()=QR(b F$7Rp<xSc9O-^_.$F`ߩX-E=Yi }bKȤhJCx A4# 1|9_yΰk.j$x1Z=2=Lw c_0> "(M[ zID'UU sK̘J\p?iY(ńG<UWE8@$U$2).ɋp}b$19\p'z?lNf fZl!t+bS!䇚\*kw }$- !<Ƴpa` bӦ_yy . 5 5oOx_ F>^L7V38Ө>@#T{Xe A|Fj+y_enшN@@@CSAM>",*MD51+ï}E4S4*VU]HV[*` $}Q WƚT=y\p(x_]1xUFo-( IF/LD9l$}ut,w·Ei.WN~ªK1Rxh$5!\pOxS!F(RyX3@@зLiY@mAT#w ;9jF*+ǒF .'O|/=EkK'駟q&K̙3uuu^{-W=Q'tٞŌѓˡe}eHeu~\./~ 0LСC}'Ox<7eQJ^}BȁcJ& .'CbHN/chTCߠe`NIs Uђ|F>|{'Ӈyco~K&Fgdz8Ag/ ;alr+@)G-**:zǏ;6a]r 0`Ν#G\zIb .[yc*ˣ3^˄Dp]eʷ[|dY@ 7Xc-!D8R^4kq0o|]t]߾8[ 2` 2fsz,Y4qTZBe Pn 49s>ٳgSJ{$? \p+OpLEv{ 䨘 PYi4;Zy% 6SUP# 67efqe}HđM[;6( B56eLgv5W,1yk 6e駧Iuu5 åV+b֭ X"I֧ .'eKlWPt@4N }F*+ۿ\6-2AüHb^^  {z1f]Llu ǽ޻x0 $K.L)SXpݛN)ꫯ<ϼy{\p;DZ !OC 8a|Hg]-8V j> Ѽ(tB;8犅Y[}i :  ķ0qI>[sX}}=nEQf?ȑ#g͚eY2`S8dAiSi/~gݔ˿l}kPVD UfQV=^/9f)FFDbhmk?~+jÑ<H2F-?zJ@"+nG]@ՎDjQk+c, eڵkO>PQQ#dY. nNsHͣSehZ*k_d~H4PV@jsh-{us t [ϰfѣ322RSS{ml* n =OG֦.[HQ;Bz M`:ВCIOgq0e4X]'NАc,JH6$<{Ua շ>S4G^S& ;cGҢ\76Qg`,d{sPZ $-yʰ;̠ *WobUX]8+Ms"eLc=G 1L .\Cr{Ptj4mrӭp5szƙ T-R قmW60( ̯{˛\pxc*`QWT%+ y oICl1FBQ 2S QmYw*N@[.B1*kdCa^92y/Apx᳤Ie$%=Q|FvjzxmUV9oTe~zMwrf_Łfb]_u$j\[> AlJA)H$̓rapLFw.:,P|糒BZ](Ce[xl 4 ArG}QںvzΧkΓd_(<&ca8_ߪ U$BƮVc%GWA (3(Pʐ̠C&QV-Ɨ >'Ǖ܁vX@:9O?_(_YY8]" DD7cHbxFAN5&TaM{ ,˲,u{W{eO(50 À!"a@;#u8?G11 3 ⠽F*cq-f麮(b*VBLCSgŻXY!4Tpƒ.MGcsh1z]".wlMK#3)LuAJf {   y"rywyBSWtu2U 8NN+3iMQW|,undT@``Cpۅ[!ΐ!JPH@QHH CStz%o-'di @ jC.{S99Oߴ__$aSwˍ0` 03 `u` an 21$ %(""AY$#ꋧfRʸۜ98p.,(nMӸg ~%P"0&!4 M-6}lvn0 ƀ2rMK6)amtJG1mJ{ֹcELDLEp#;*]@[Vι.Q81e\hV*VхȭKcDyE!x,dg$nHԜ'oZp/DSH.KE@@@@CT.1|ݸ.M]XcccCCCMMM]]]0ZQeBKĵ ,sUfUr(gUUNgjjIKKs\\hT(EPn( ![ 9$IZK 'vI8LGe4MP(UU:7# ~fK|mZxTU6Mn|0F.e0 Cu]5M4-hV[[[VVv~Xs% ~AnrrNVUUUUK8GF1(QZkKL{R?M &^4x|>_ccc 2dnY8нJ766x^ 2 h EDC1Gez1n`0PWWW__r xHvtcB=zpnl6nDy81kYoaP`vr^7###''G999+\wWL0Ǐᬬ p8l6+f#*`WX5 _J reeeaa#/ .w̙3Ǐ⦉rTHo&g* 0S9UЍS_3ʀ}'o,;NNoz&[1vjgq֐l[ڕN6)Y)Oš*eJy^i1%5C}Rr<g|NZR-'G>?\H6m)h8bo告@} 57uCLIvxێ3`=F>o)I)=pzPcu\Y8H|#G b=Ҹr10 #֖ ~NWnd!AJ!(3mm7~_2&+ 1(Mk\>ܱD"lڿю;u_d JúZWq}Ȭw%~W|k{# 5 N}` 5?a+Í |n\quxkozꛭez/Ճ3ͩ8Ն=e ̺onU~ LdJw }>#l붿ݣmQm(R=,**[keLՕk׌ߏ_<Ji8x<|U&lNsl*flqzXq+H%tJ znȪNG75}3jOCH_UjkA9=Fw7gABc'*?~5,gHn|z!9sqmJ'h+s>3G<cW\o?^جɞ5Ѝ,/WL7ޝ \*;WNm"Q$D-m~wEOXw 6RZwvO~g#^1|W[eIz=e!x< >o޼5k ~7nW\N@ ??N81̉'N8q`0p8dYٳرcyauS~۶mgΜ馛 =|駙&MJH?i0IIIIIIlV$?Ns^*? 566 ~컗Rl.T]oj޶ M蟥lC9m6]q9Uy^WUQ;.mUQv`?t]}r-32sXJGR$""g+{Hξ%GX*IkL w21H #/kAfU*TjA{,/xeHZ*}?hGU;x氨q2\yuXۉDz[n:US>gH{9ߤcwr=Ir}>>s_; ё5vԗ r9K6n~y{.ɼlwq\2|˗c 4(|AAs=F5bJڵk'MA_WWpE=z1޻wo'|c=cfk֬|Æ 3׮]e˖}fff짠w:#GlGt'8kyy3ydG0C<(qm haLsY,Ѐ++"mu ޳2oٮF|%{O 1tO~&"v`Lkt@8D$isJH0kpNԱ*<MW[ro/-st#8YCrgؾ'w72\vV:]WRe6hlS~e; G4Xma{~jL6h+֗{z$s=6*9sN:c^z!Cϟ#FX% ^uc(~ȡiZJJ}g74 cÆ K.u8\s z-:thp8***ڹN#y*`Zx8:u~"8ǰ- sq a}`^q{[yl8Ô̔3:uz]y0*glg={կ~5dpkGppB)QFɲ| sW'hll|7G_kS>xx)Jf͚:u͛ #{nll1cFCCÞ={Zo>?z/)4/ⓞ &YB+Iw2>!7vU4՝5'6sտuaSMU"wTϔ"DԂTlJ׸0|ȳ_' 3Hg>Qv+n:Ŧޓ 2PBӍϽ8si}ۗot7gZxNsI^Pr gCY}8e ȊzDĜ=QB w]__w?طoBk *kچak֬$nlx\.Ws?injxc8v\SLYre͛LK w'XPJ]RΟY\e "TjNV+v}6ˉ;UK66TC*+~l̡'dQF5#J'W<2-]`gjm_3Ig oK4o~yê?,:gĻ&W[R3Vog^5hpɱnHq5N=>Cern:KAZOu8A͉jO_yPگ:TFY*o0~˗/3fLJJJ[2v***k_cTUU!C횦mݺ+>RU]m]i9MӧO^UUsNȑ#ŗ_~yFFF0 ,b555UUU`PUՌ;6mo=`uzRSjZw#*@vĘ:GB!n6$!=1 _ʹsZ!++k5gPqG;vl[|ǃ Ϝ9 {gqޫW)SdggI[5y꫌ , 꺞>bĈudK,=zJMMu0v2:fGnH:u}{nɕ1f̘'vӺ,/C΃uvLfzXmr9O44jW_smᆂ;_Ϻ1vO㫨f4V7U|`-|Qݯ~洛}jo{W< MGIirvY#R< e_3N__7D~*m:uNmK6cW~wiΛr;`=_&yPu?|Wp?:m1e$<+jOל}`Bfyy3P]uڈLnPJD "rΓW[{&2!2lig^7;ۢmFkhA Hr{/2}';?ctO_g_WdΰCrp;>;|LH%re|@ k`oo>wwI~#t;] z({pdbWccflM:FeQQUgp%?|'iiiyXbҥcƌȀVck?}ю;z衬,k{uu~f͗w}>|Ȼ())~asi#FZ+˗9k-O(WHp#"vߺ={,[:w߽L;4c0J3Ky),\X8q֎y,Oט{>3?Gqm TX_ZME`}`=ïl:F3a&11 l7nH`-ԝ֖3{OSDtF}玊H;w~;f9vSl*>d^W}=FޥJ|;uowg cp0t _k)xV[ٳgg1cF;.X`޽?p^^X~v9svyɁ\y啈JOOULZM>暧zf>䓑7U5 'vlCBKP\\|4a,[tb}Cf d9R8?)>Lw`^_YFy (9px'7~qDݿlA!P2ah3ؿy$dՃS簫F~9s񶢞{GDOˬa~my ߂xuwڷQv=V&p翾;g}r8ӜYC, HS~֓&%gbH}AƘR ETUu:tҽ{>苉Q +IRUU[5иqV͠}vvv-[vIuu{"1h CF5 O~a3EciB<>GͿD|ܪ.lW1 Xϱo=1ʜ]wd]76157-fCC3 pC* w%HpTt~۝n'b5##nhz[>[R_r ߺ3]aShKs|J)$JI yZi\`D!i]]]ehڣpG ܶiL[BVA* =2T>"2#5>_{nč sZsqo<~{>||K?[zf%ww=1z?qNjZl/|G/{w.w5ys9)rmZ!nƽ63f,iwϝ;wu-_~g~ѣ?#?=Jٳ׼!ujD>Nz}9:!H\Ol;֯¿&OHz moy}>|7ox|ΟzGn8բ.a9>v\ĉ=#wϾ۞wWؽ =m|/O?em)>{=> ̯y}ԉGv~o>e/~guW,3⟼mot__o$_{Nv?ûN?/zыg>{֡Nc \-֮K?~~kWPr*W:n8W]Ԕl?tϧ'sm7\k| u$A CZDαȅtzl2ﳯ;׏pEyc'}g~ճ;Go8\vz侇_,&?o|?~=?}[Οk{?WKw}nw}w}mW{ッNkw{{{y^vo糳g̟y;/|-oy}|8uшWkj͢Cdu9 iRR{{qPT?Pֽ:oz~o_y3wxG>+|[{?+n9s#st?w7~I`pB콯> ~/xuG_{GG_̅~/U_vc}|rS̲փ{G/;B;*"^o>3ڦ\}O{MvvG e'_GϾo ̋s7=u{{𾏽n{mwW,_oo~;ozw|7?[}ۖy3Ww8zяr׿on.^'_zw\P໿3Moz; /ߛnY [n8s*X,r^g>_g?Y/*{?Æ=7{&#\!;Wwe7/ G???YVWog\jvvv!#7?5";_!;Ӟ}/Xco}#! 돽{|ןXr8X>}/lz闿Ͼx/g?;mks#}h-{wh!麛̿g<}w*@h雾|{Y._߾Sw>}拟'1O/"[?}[zƟ8~6r}M{ӟļ뻾g?Ϡ!_Ww|?wq f+_oo=oo|0u(qOoᆝCyͷ?\:3O:uĉ*=v}/>=۞c7yb\U?N>:s[ox 8z1.[ٳ.wά܅l繳/~}Ǟvg|7yyz3{u7ڗtӳnZ+},JZGpo{?K?);K{N~OǑۼ C{r>[4%y/|GW7=)K{k>asQ9C3?7x^m]˿}e~mXV^T/|W!r} ӾG^YڶOtw{kA@Ԓ!UQae;v {?~|c2輶W6}]+.}j w-^ zz _EPgFҭ.馛8~ WC|ocoW뤂=;˾뮻.{w]w-a-TЫw]#)y.绮Xr"z;\뮻nCsmSO*Xd +ƥ_/˯DUϩlדzT<9y _xI쮻-w=ls*Owo,=9 S^yի^"CtphFs{9oO+ʮa~x+^Wxa}ͩlSt5r*[E/zEוEΦnfc4o{m:ʼ+\O|"{{3?3=*{'?/| gXV??O}I}/˗ߛӧOַ1.o~?^f~S? , Ԁ{poz衣Gk|Dl\t/zOzWջ|p~ꃗ]uԩ<ޟ={3ooW=l s*k29.zI?oΝ{ӛs(e3gsc=w 繈hV]}__yvNfmo ٳgϞJOO| _%F<)kvܹ'T4pl?o c7|?<Х2sڹ\'.pE:I'%1IjΞ=ױRc_kgg߯Bfw^K:ː\O>7??pGyo|?SY 6]n/w7җ^ٳv}c'nᆯ꯾[}p컵6ȑ#'>d<9?>/x 8q N:~p /~ovvvz衏}cFq]wE}ٗ}Ӟ-rm횳}رӧO#o{ĉ??pwy睓#O=_vԧ>я~4"gE/jϝ;;++z󚙩RW6O*qgW!K'?G?׾{、T66~]3t7o;wٳ^}_\~__x.=<''?Ϝ8q ox?g̯׿~^ٳg}ɓ'__}衇dʯʧ??S?׾visp _Wr]aNeg?s ɓ'7]jaWBoo\JzveWr}¯گ oQt|>?s?g?>ϟg%/{뽷I#?#__Wٳ_mw2r)Ϙ3gnv/|;ַ/[tw|2w̙њ*믿o/=J'3go|8w~uz>X7ᦛno,W|'N'|گZK9mlOCl :_뒮+e_{/"y}z_텇}۷YPO}뮻ԩS~K_>O#~s]zK^#G\wu]]wu??/yu~W~_t>'y]Ku]1uR/˟KZk{oG֖iGzIpԩ=rT"iO{wҗ8įy(<ʃ"_Jr*q/Ax??:5>oGg>s7;4C?-[8s|rҝeK_f_ {77tӹsxoݩr#?4_gY5_s2ɛoynS{{g<3pb.3Eer9ȿwIm7_̝bYxM7P|x`Wg{;vC=Z;~8GfC;wλ3gΜ:uj>}z8|}0>c-_Z(6~r*F1cZk_P{%;w̙3O@ѣ7pÙ3g6.;;;S>ȑ#N_loJQk?xo3PkQq@|w>}lkWc뮻N>y뮋}{wwwocǎ?~x3yM7x裏.+(ws,?]s]]v|ٻH=ze}sIٳgNrKD,#G˿3scS} U\|y+?vӸ صy<,#᳼ϗo_7=3ٳ{/f}n8y7t^׿_w}i{o{2RIwUzG{ __^-e_eo~Ϟ='d~y{G8%/>wj_|ts?}{{}WG+__ Krȟرc/~nj=#N,Ύ1?񍜷/C;v,DžC*FL ~ַ'Zk__W#G^O_[w~w?^ַO$s=iOkɿr>Yzk^ [ur-K]wݙ3g?׼/~׼5ox7x쳞y8[>w$ۿ~G~w|wwOO;~٧=i |=/x?رcgϞ++~ݿw>$}7}w~w_~k_~3/$_AD|w|77stZ;W}W=ϿvArȭ33-r_wuO ӧO?_Z\L-so}@[5%F=_ V~{?q¾wرc;;;:{u׹akf~ h(j{o2W++"\ywiG\IZ]k/ juY"wL^k{m]T qkcJƥZN~5>u^T"튲^yF{ǏuWyvkr%eiS晇r2稓nT泽oOSYϘ2:ǵo|^{%˟̗ Zks <߼F~{-_ދc8,$\ 9c~׹<Uǧťa{mK~XΝd/?P3,6\kcG^35CaOW^Oȩ>k$.oO{뉊]k5o'S^k{mT}^k{]zQv8^26mO'ʏ=e"L\_ &_'LQA\༶NqGpGp8?%Y#L'p?)8 N`~XRkx`Grr2p2p(_&2[6'&pԴpNiZ8i$2N GhZ8H?[[89-ԴX[8iጘN-\Դ*9-<-9bZ8i0-дpIAN\ӥ.e@LR07QOKLJѥ8K'8k-Tp@HIl)"D B!zvH 00O.$D͇`BQ>#e ʄ"BD}%ȮFJ3S̈鯑{k;QnζLqUi(ˑHPLR )av{'--K-_#>|ކ B*@0jM(3K!d ND<#QNn!!.gelةHj8c(EI.Ze R'ˁC8u(@t[LeǖR@ eJL<Js N@hjC})n/ps`#^+> \ @?x8]x@Y8e: Ewb(p8-s:!]ƒ~K7kK,|/q> XxnK>"K&_H5 'zJ>NJ&.[;o ~ R:<¤ꬬ`JBg?H[TE2 Q 2HR K)$ 5zى2](HFD|J 1. !!mG$>C&-xp ()*Q߇ )JLԂj꿝! P _W dd!T0MIN8AIn¡aT UWPR1bR HPr82p7ΐ3 Q!]=I1pdO8&5(\G "S}QPXO`2>FTR$! 8C(vtڦ,kM%>-.j \kS}8=1BP@06Q # @TP\`?'j6f uCO?ݢbAR"e~J*t1(@Br@TeU3k'^0Ser> t s/\o\OAIK0$lE$+֪GV>'t`tu B8"Hh|!Ȕ YIeH@lUx}ޠ9 EQJei#9rTc^u" >RZ1NgE/( Αd㡄]V:$^ٝ/oldjkeH8) =C (PpFQosOxX+ Cs^F+, KdBߦ*%h*\n|24sIp0 >\ |_˥=ۥ83o2̡]-j$JrTpR,2];u!9.1 |mh"^\J.Շ].ׇ[=֜Ller%D"ƏH=4B YZXAh] / "9 9]Hɠ,l#s!fGtcTr-,<$9r9yCX5p.c#`EUKxU"&8CL{dCQ%Eήz x@B#,X#Jb}#/j>¹ƒ.x ~'plP-wnT.,±Pn:9"ތ oQp7׌TYE,s |zrRK$c/pK,.+!{GJ} e] sR |!r A|[ uǾ>Ȭ3tZcǩdoU84Ӥ))K6gCse8 CЪ 8b,HPQ]Q-ue(&!6) 8qgL%p8K]J5@tH!]JcKafK !ATnHvM Xʥ-brJmW*r)rD]ۥwd|>-\"pA cc8Y>-|KAa xI r{tU zG.%1Հ8vR;µۥ\^ 8.\,+6,[oX‡k>pi:L' )W&)fꑍ18I.MD 6IDX-,Thnw ~0k<NUsTNTTs z 9dâ F# 4qe.Zdhx[iTB` ML2hG)>Zm0|gs7EaUt)V!W \ <{(pN!] x59~M«p,\`qp [r#?;}:TV;FwY~.e |}2;qQR˳p0\ ]0G5plX\ JpLJmư<:΀hbR~G uDZȨ>vV"2 9oGe 8˜u-nT6sTVɤ*oTӴ^lk۫(2z4o!,#K$E6⠱;DCvE҂P-wTDEi ; D6٪Ǒ׏ *ϢJ.c:XQ>&# k/C(͉[MaJ/'1ѣ/P@:!YH/uRz&<ݱRD>,Dkd}F!4s ݉W3o[8G_l/Kҭ6 wj8JN8'w,x0\XSMs# lmW\#FoSQ#KRr'4Ԯ&KDwRi~9\RjA֠.RD^ ܱDHH"d6^בd1kxu?+u.ʼn0Y4p,}|>\p}>Ε~"Krj' )nS0`#ᴞIVNrӚꌓpR(4"ѢŅUV^#G^|QʱYBќ2*C眎bRtﺭb5p GG UȮ3'5Xr \x,C18έp+ 89D^vWkmsOUkfZru<(QT•-"#kK }p,-\ F8[ Ckw::e \^§K1.eO-ڥ`RraQ |KiR.̧Kkg˥$yxhKѴp+Zp>^ )qɓ'jc ԏ[Jzagw̠X]Vbt VuCɮы:NY] B]IDAT\YYFf4YTG"d:WVj cAMg@dnMѫ]H E>Xjgz5^ PSU*~8,V/Hj@njaK &2e F ]cԶ Bd%;^Z0p BxǥŀsD R68vK^a},\ \ 8sRtQ#XC_R4:tUF ׁ,|K‡8cĆX]Uhj.@,>ZWO1pY@A6"nKT abr,sL>pf$PJMn56U#AvEr1MUgjN}p<Ī_,?+[G X-4&bt.UO%Sօ^+,()h=U]!9PrSuD ͤͣږ< 1T',-'(./CyEcN ;UgDCuRذA=+2g %\7Nd&'2:Q8d+ۇ]+biÍ Vzi|-944zUb J'{H^:kFf,)V Umr@͏6#q "Ba$˥S *4{U}ʥTkiZe* k c 2fn>9Fו ?6cp]wZpćp z.!0`WT+*DW*FpdM=+/{ցb~,i =V9[bY悦ZTYQxȐ2G:\u TꮍWpM} ] .!'p9c#p;,~s,= x{{5pL 8`.%6wϰȒ: S4c -)BLx@LO o5 JS}Z8pJ\e\ZxuƏs8p)*&,ilӥ>\ ڥ`‡kӇ<Oc 1Px%50ϖ->vUcgZ&D*[#գ4KlFSPT2= 5_YM5˽*16NB=ӣ>=9 s͂b7+/Zk8ЁӇ/M><…#zs߸? -<>DNy/TuF l^rEL438zzon]q[pOih#JZqh;LCAo䑡D5wkh` OC|P ܧxHՙn7w<xx49}kxpORj}_)cm3pxn}됀k\{,|\{<R<:;څ,\׾~>}XpwHͮD$;BĨ<; #5duK@NIRt\#)\š2r[1JکFJp4*ct'18'V]ҧ?1.iwǐgf8D֐v郺טwCQ2Hj9fe8#kDaUd;N?Ru97+'(׎ݵYGf>U>cb B0NT:5ģs`1) xV<hNM1ZgKwj}yn:@/ 9[Ǡ ¼ykD+O_řU ]c4n<.u}uy*x6K4p2vr)­6rș ᒂr),ښIZڥO2+I(Yѳr)S")Wr!iTd$.UY0z#lḰ}8 =>Kإai'C>O>y81ZP,F]Tpa%F9əE*}BL]꽔LfɊ+-3#Ei$benY/"Vn5*|k>V wi^z]0Z,X`k*\;bRU[iz Mc.r wgY# RF'3,xE*Z%KZYv7 8>}>d\Wyo+jM-Ed]m|…Jl%A=a0۸8 7>+nP\ L}W*0@bJ-fU.#Df$ hIi>;վPQ(˞I@Iljê9{p2ݙg7pTi?5qny)[.xF<Y5 ܟ;vyQ+. 8! JQx;q[xy\,|_ G,APbDg fPUW1zKrNaYy\pJ]N7EOގT;2b3*C9b.T3R)8 T3p'? <ܩeN]9fǒ%`j:mLE9$ybޕUaJN߳ ' @zp?JH"T_kVfzxf|1:t'Gh c~\$QYq߼ڲ{  ӥJJ3tN҅ΕI2p^l˥`=x¥iq:ޑ36*8*4ǘCfWFRTGŐlt1ùهsõXpG(v'@ jTN•&#ƈZcrW>ZqHlT {賨w sFJm鵤U3K*߫Dnߪ 5.|x9G6{H5mtWn]6uta Onx 8aFXD%`_c |7i*d[ GKc#p`},9 5x/>ΚqlX[8ٰc{&}oᠢYZNlpvjPwinVNQVkݫbz \KxUOZ(8>rV!,,ZPS.ӥ^إa9w$>{D+.úʥ}8>Xp-|v[8{DE# ˟,pC"O"h VUbH te } %XQ*i8!42pvZA0E8.GSU a~K ɮ6ln#W*h̕rSc7 O0SivĪViUQk Gq*US;e>|iu3po ;x@x,zu9}ͻaBQ j֊.GvҾ1V.w:c2TK dp%\ã -l{Q{o5 >ORrKثtsU>$#OJ>tڸV,MH@hu ;]H-v-)Q"ՔD|峊^/JDUx*qmNc v/]WOs=<pA #nE}^ k॓ɵU4SQ]SQQ'p/~3LtS#SU1$fnu,R(͵Cт›u՞pck\ ܪ wN21;lT.eQLYʥ 8KbT:ihPeqz/RJrRv)R4y5{g[.ꈥp.|6pXL{ >pw 0KsH($$x]ED渵{PT*#"5*IG"kY}n0JVD'c ͑] =ZIDZKHNF@ACulQ+d%EEno_xJ P Dz?ͣkCSQ:IZK,kW P"4] @UC@_h@&"{;Y=9uƢ+&ቅ"ԤRւ ŗDk^Ah%mRX%&vbs <:\GP}+'f &px^xx.~5%xQ$_{ZϷ~>},| ܧc kI5pDp-k8 ޖcOmp kȍkZ` ],{,:2܋p`7p¹LJW}|x;iմChW"Y=DUnG/ejj*FzdH|&즛%M!vE23.Jwlƅᯅ,h` DSN"cgqw}ے4o#r%ݵT)S#<:jjF"eKdUʏ <w P{*QD8K>E*.&pze^'M 1:Gg ͪ)NwGpG8\[w =1͉ h‚]V::&^-DQ[: 8Q"w ΁朦)iVAk1jp$RYL# ('+y*}Kaɺ)٥\ V RRd . w/{e\ .mt2Hctz neRY[rEv)\-=_Kr)+ ^>>Ẹ-ۤkY>NHtLHdL+w7֔UR&;efZM.}\:~\3Gk%FW&yn@STbTh%:R {bMCW.;Xu7;kN\(D6f&lj޼0pV*3k^5p+-8&p,*- \XISDUz:ST2ϑ1IGh(Ԑ'@w8[ +e3-'ZZ'1eeH we5w:D5pp1p88KD;,߱Wӕe>[$'p*<8+=v)- Ox`lʥRDyippiZQڐ.e ۟Me@\JRt)x^u  <=tQ.p7} ڇR}>'N#HF2*؝Isr,QTZ=0x妈u#npN5@:K\RR ܬ|tzWȞY>CO(Ѡj!ؓO@$:O/ƞ.$eYSZTMQ$;ns8޳c | ΄G5vϻ.l.L, 'y}kSB2 2sv;J1 3Œ]bF1))Ț\;g*Ri9X 1r75g؉JPh9 B+bvszBjJ#Wè}] 5a4t[xi vTNYA-Epcw-pP<(pQ;Hqौ&WxAඓ N{Wwꭈ *Q.P .¯pRo$v<3+<[x .;\Lܵ<EZˆ5p'˥bT>O /=՗K, K>KA}8nZQ]>|u˛A]ggcKrTZj1&>vEJZxiMcYi .zZf5- 'KNL,8jK zHLE dE p")+#3tI8#J8ج$!Eu-^GW5Ѹ:"\܂JWt}ePU߁Ent1 J~ |{uU{8S ٥&" |MU"@3WP <&غ-5cVZ+k,HE%&lkduff76ATFOr d+RkC!O,TvNh'T#3 } >,<潀Wn{k|aN5Ph`8$Y]j,PU!CQ.C1SOLplLJ}+ׇCcW%ʯd]@^?Pc9:@e'\("#,Pw="6I>k1bGR:6Hϝ6`PY93(yW1W3o% tX3OWVYdTv0ȉ/R: as G] 8 %OU]օ 5^=Zcwl G&pYzc/wujBmRZX8Xcrj  ^XGpN\>| "*x쳅ZSF[( GHU G R ԺWi(yQTR; ϥx]OOpz.erO bm&] 8m%^Qᩲp)>\JwmK.ñ_X8͇'QID"Xed3x8z)KT;Z(eͨ].lSugT)" bY=3p&UP_Y2%i?Tt`Auq2K@>GTpTԁ)Ef>B- XW B'sF`.X(ydV%rUHVUSCU_=QQZp't%GU+c{WuwvF -pr/4 Pӛ,/-G)hB7!EgZK}\zuo^g , UǗCp==q0./PBeeʓ4EµEԭ[Zt2iݐp(I62563m:A񡪮4 1S*+gcX%*:j$m^"'Ki@U LL[azw$jFHYi$2p>ۥca83HN 7R= /Q֘UQS,R\6\,#lb>\pl#ow>:4c2m<prQH8:DZ x4\\YM8`gwίs(dcyQZ'&pRxoNNVP08Ʈi܁^!oUf3cZx=<Βc_Xx8@%Xat8ALpjX+Sw +;MA|YJ7v>iv8*=Rlmk pbR0GCw7*\[ڥ N{٥h rncKNP |͙nXL]pЇdJ:.Q n/ 9WugϔT.?kW (#1e$W]ꈚ6XedOD]c  WSjRrI>4V[pgn_% )~!#!bDGldhԽ|J·OޯLe8dB7߬*.6w J3:WBíXg׉GPbn.bDX櫋@SC p8bNzYو$@dpȋu֨ 6b]{,L(s%2*wdΙuʞujk 7[ ┃gu$w+RM^I UF,-k KN Gi6[ K1pɰpαe؄t)9c \5jpM6r)n)?E,|p΅Ki Dy^ۋ.?yҞ;(RGuHF3CUݡFKtET(J4<<ݩ[gP)}Hb~a:.D+!)ƹRќ\B'[0ݩ 7kJYTHgF ŌH*Jt3LWmm8]#xL!'>cU Aѽm&qu̒%-61:\\#hQۖʙ刼#b3p-wׄ=5.ᘩwXN'&cX^wI։| |?.E^>pE} \%w ps;?\R Y{-b)k4y֥ۆD}R-N đJWGZp{$4d:b4 =5=QW ۤH#@fX!e0YW!/DDa*#NٳXz׸ P:5Srd|3 ϊ&*I28PUF+V/K+#~D7b =x4f3[ Q٫-9|JK:TMEx0{d_ E*~( ϓr,ՍBpM x8`mC ^:q=!A?l*7hꅃpG wH20pTèӡ%F/ࣛz`h *Bk!v½٥hg)Y ݨdZ^Op)գki1&qfbWg?GǨx*oDRR5Qpj8pBxEkטQPFjsH5$, +A$sOl^;j%'.9{Ўs[d# ?f ipb ?xE yA6]0S(Q>Q.dZwU5҅$2pG-XX] te+ ]jV>fRrV5wkL&pilhR>fT. w2\ 8kQR/\JɊB_XKikq)̽:H7põ\p-}<ɓ'g r](,NY[DP ۂXس[w~S3bOOPCEfoE`HUA=0Ȩm[\H W׵@m #\4z5gcLs,Z8 ?;zl x1 EMmԤQ :1. GpINq |k9 Ocȶb\3;|Z|9g p:«p{!TV` 9[`@k x؏ 8yJWXhR4\p k g'3pǡ.ceW 5i%f9]ձKɵWm.4ʥXqe fp)k q}>|RH,|x}8_n1e4zeuYScIJ:Í(tqED"hs>D36^l`1+o&HTK]rU4++WEoF[jtӫ%O+Ҏ`ˈm|\j&'*&z}|_=㊁Ǔx0~ -[@u2 mcP")VB,OA|Xy3P?S[T1B"7m3n63pDXrGBC Tf;ugΣՋ:R@u?*z"hB'EPHΡTAE; N}[ zTwVF0"ڗ =-@fL>Q݈@b ݟ'yL$D@HD"]Owk b VgF쀚{7m4iK6ۓ*;`4uٓkG"L)E0ۻCttZr,_8 pk*m.D6IC8"=-$r xs[ (Zw+ 8c<fp3+pʧ0 V>/p`[ePU6i%ɔmި>s2pls'y›-{,\􍁣,#[P-\\pJ|8O8YEn]*~^{DcenhcMeBTŹUFe_aYOCXEbMk5|*sb$-`4_9j&[*b}a]1X#p{LF[?[B FtpsM 9= -Z .:0>+@ xͮ%s'Nc$[R ԑj7G$+ky2j F;ҴgU0 O+u GH}r!2v<|ǧؑ͵(Io5Bf4@ÍGܸMҍQQw?Fh-5•]\ܖ>Nk<=2vT_q|U-#MI#рs#8«V^z?ުh QnJWD[:̥P:B[@\U S!FP\##sLR?#mZM1Rh 74Uq%M8_vS)` 82jt[|[]]U}O]M5g 3* \ a~ꪉC?HLlCDςs65C㐱gvGK2 0ju\ðpdw J ( ܍ fpd; U8Xmd8W@p/΃Rz@:Ҫ[40"p8-p7`.Ӎ*9x#ݚʥhbHQI]J9pk,।%%!ϪTKq% ۇR&cU2ZJTSp($xuKd<: ?F%FTeFfpFp$JQ1 "kU\5c&1Gz .tG1hH" jjw 5^c$js%TgB/+q#ʦX1N-5ۻbJpFJ*U ߄LB8xYDSbQQˏn%pLcY`3U b <pjs k:8 xSG*y^T pi@ڗ" 8%[b$p ;#.g^$p-ωnzjp.#V[r/vCµDvq7p\S;}>W:b0Gu (~ P]IcR8Rf 8E .r}~t)8?gG׺{K jQy^6v,.]mɓ v=zDG떦ZcT1FӧZQ냳i_ S%y&q'jy6(=KZ5ӑβƌ.1GgvC-%TRfM r[V96-5p?[Or wRa |RHE$=APGx oe !6-™rhhL"U5{3` 3;F(39m֣K{yX@> Af)Ҧ&BnbsǢwP%XDf7c7=:88(pԏA M/p--\pc%| ǕG@!7 K! pm}-< <i n~\yQgDB=ØN bCs(er<<;y'UhCONZEe%BCQ\GNpf}&_Ll݉5ɓ1rs!$>ڪ;1r^p^E`TGRvkXR[%O xx$J 2p xDd 8!,TcvY[ 8Q'Fؿ: xgкըVNT2bV`)JVWeGwF9nΊ-:lRGA.EG.OR*=PA+7<)Z ,"y%h }l0pFIئK1]Gn{ٴK:kyՠg.~qBZ5+W}^՚ɻ7}/ه/|x%ˇ‡k+W0H߫3PDkԟ#jUUL>t*JE-1獐2\h[%Yif?  M rIt9:e\ TW#p 5ppV3 GҝTE*x13ci#{vxLKX|Ew"Gz1dP\śU/dYQ&P> Gi eu۸C*}jihp]-;K ;hK2ǥ ULץ`_K>US.pl/t \\#vqR4p._9KRf'JJ4=TzIr{_ݕpEz}LES^ E" 1#ЪokNu12BD"ɆSj8kI IѬ=ԕބ3=9I& hB1KLӢC---O=fʸÌw/ܝ#Wjj&2f.JNV?2Go_="6W+!?p]5edP.xl~i~9b绁OQ& 4*p;ޙ8`-|/7=8pHqp 'pJey5 3 i/eK}\ QeGJ z Vg^*0rB:VuZR>En5/ɜ h R`z$` R*J)ED P҅ubmU%dapB7 ;9 @Zow8bwtUL |r:Jg*Qt5pH !BJcPX0pt C 8YGO.0ӲVޫkݔmZCn^F6rhWIDOdUfZ']M3C7bB fK !o,`W #>![ -K]xxPEWdmQE )9sf%g5,zdp;..͡ !):6p:}p)0pY<']JmG#ZU"_<+7鴾K[w%8p(FXKGdHhnpMNR4c |F.#2R\Ui7Ŵp%3^5wp شq>AzfT(Jf\a{ 9G#Dx8:gNGΎ5z:e 'Bl`Q{ ] 9Y]3tT31' M:*Bbg,@VC UPs֢;p,c\1Rw].Q <q43tpJX8A(C;-!k2,\XX8.d\ ^QE '] p(IE ^ӯF K9s|Zs8+a6h@h7LJ |x_zlmԀMK{X˫ĥS\'VfFX""NU50:GB{#j#fLZlg-V83ZzU`B}R"FȾJ8~ZUTC----.V 4j%Gv+QT~fUVEk;R[it;H8`"E+bqf TO1^ClcoJ C6#o S+6Qa X1S"jU9HS ,%;!= \밀g^!vyx^Z{x^"uDpg8pgXAc ׁE-<,8SP=|VEɰ] '$6٤qZٗ!8Ыp!\J*ܛSJd>U!T.lxm%~8 IZ"@R9Ƣӝ%`o28gGtK\"!ϵ ը{,U0VVYPiG )޼pAj4ٿVo -b;Twm{N2s)d"k-!dtwQ ,#8*ǦtGw*ܵWc=tR(J 4 T{^m0-YMLAhQәW$I YZ 9]@S0pv­4a!p&WMF|1bi 8 88#\HqI9F $p(6å8_kQA)V/(]AD*R6-.R7pOip߬n |iIЯqH>܃&.Ý_/@$ԕ5j%#qU;U\Ì+l1S˂TR@fWW&>> ; O(YuQU $=Cl֝Hf6;ߕ- A!BF:;0('1Ro(yHw5<8l%ta({ f,YkIm2'p\9]hyp(n j">â9a-%KYcQ^f|&Wk z%,U^eqɚ76:^lU],}c<}O|62RݽsBca. ȑ7zDb rF[- msXk l:m]mSRm1K(ʚQ`imXX8p y.3_U.^DKѡt):G] 6lKR_][*4ñLJp>Lş6paKM.M771Ic0P+Ь_ Ɂߗ~A1g~uXsOLzohbBpqk2z'3)jG$BSt<,~G9S֙]+!O*Ãb"|kxa} U(l 5穊hkREI䜧gц"L4# #R N%KVҔ֧lC:G hezw0% aفS"ފiXD̆bT"72J%8F|tfuN' xk+ht&zL] X0 x̲_U3Z Q#qrcDԨWNVgcr2NJn U p]fA E^6pWȽsX&Gffy 2py x%%FZξ)ipW5T %\䍺]٥^AsP!zV(ک,8G^}9 F%p anZܾ+깨^4K1J]wĈB8m.eVq;Uxʥ83H#3V5}x^mñ*rf jR5)i8#V]Go˥һ^҇E#\aʞ*sW u>QՈD SucAv٠UR $hJe%g^cuYR<ܡ1cWf!'lJ\aaAdNI>|*w[y6#(ࡊpLर8< ;ڰ) m"3p?Ȯ(o2xW/ޭ*5^xgW|Rr <|K8K.K^ɥdW Q&ڧ4ph,yR›ar)w2pr5--Go>\J>n->{|8A|8O8ytp'{ND56"Ste+-PmLk-669 (r"4{qI)Iv˵ΰz#ETHقBR J/4t;Uޭ UUw8MIKl?U3]x /%ڽRA4HqSP֩J,|>W̗m<%4pk2I=b*Ae#G9 M)bjYUj4'l4X+6<=d6z'SHgrr5qi'p\;}A  \T]WFaN 1XU.. Us+O!]V)]bpf*p91~53FlbY{F')8጑0{ cDY7[)g1%'vZ*BwkcLHݙN۽ oR4pf/;gT8`=R#.nUq9^!VP?eYx4lC-u'/v) ^wYxE}@pJ2Ŀ?̌%L;*XP 5T*p+eV*4F^04YBш 0IpR2!7%V3 88Qmwgd~7kIL@mP[[xbѵq nl6ǹ[_z;xZ| lhDxv-|D+?(8p,I ާuX8 xJ4 .E+1|KT^^.Ž(v)bkj R3HEշ8݇Kgo<χq8S # }v#eyO\h,鶱 ZZWT/Ȯz5DQ.;*Oq}VfDTneiHcTIg =AUЬXtOŎa$ 5US( :\U~O$/Ѯ6pt<w "+yXCB p! [Q~a_~0>y8ÃDGٸ%VI w1Rh{8 ;)Z 1|hJ@.:{X!eGXɰ`'niB8Dz$)x} IWߢ? X "kݧ%3n霖:<  1xBuݒmE <,%ny1p \<nfd|p^xl_5vnekG|c 6[n?s OdD _ׅmmr)kuqk%(%{p/bxS䟣(=IRFP8H#sYR x#*p]7Tպ0;]2BF]9A@f[ܒDp.ÛQirQAQڎ՘ *K#9r5(sCAV-KQwpUvi(fD@iX`FYܺ>:Mv˚jPŏ\z]+K6,ahë+,P_IAua'Fo(PmdkА`N O ܟ u#HkP=V=H_y*9PeFGV)I-G}:rm>Z)) '|1-W=S~XԐOjrNŮ;υêeɽ %_:;û@/c=2EAF$D褚 BSDFjk;8 )s $mF3GC=Wd.k*x78/t, p5Q!Aj!Tj'QC+W(' Xp?{%Yr\sJ'7b_y=FwKU\f$jlD8^nNYt~wVX5y\#]WSmYp^A;s`=]ༀ=YEyK:"<\w/#|nU3#-O C0D883Do~"NO=8n0J[S47ui% J#wm# Rp樂O)EOJA'וRKWD- M)9awѷ9p(W9<)shAfUvg$SU3c|YBp Py$R:iVΑ?p/5%5,O!;<8_'xiEhVqui]֣"'d# /;#QqlBGω4 gx9G ^S;,_.27ٮ('44Tm+z*^"+lmXRmKZTZl97s _׻iA!pt>_p}#'p\;s,taa9/w1Pz@o|+$[Bw-px?2 x[ܿ ]3S%fJ]{JR /#[b B_)iW9)R>R_LJ-!cp|p7{Z,b>@4(-,*8>>ZŧNd$U"0X\O *9ʏ2KpQs4rERYv`BrbYB9z}=. bmd9͖\8bjYU;(p͈/࿀WhufdUSAO-Xz5mboCe1lNdx[;34⼲"Ak)F=`-42Rٴz@ηPdAyBj6pG UeEy\x߁Eq>pۀ5p|+p \7`zGk6ྑ]Gr{EnGxz p_ùa DD{9Gj1ܡQfeKqS! uowqOpݴ0w&Ip7:є6IJmTr]BGuy:Ǭ wt@ضoP-].萴uc7'$iud nǾZ>xy/ zj`^{F2Cf 'P" )hU3W%Sʻ|r$H<0^KYi#lWw6znM5 x[c$2qjUvU_\2pJIOD6xh6[B6ry NJ1p?jp"vw?+N5R#xƀ_% pJ *-tJ 2A`P㔂ifBB0\VОn?<wGI)wrxw׏*`j@^2Ro/;!b8Z % ݜ~/@k{er7`s$@Bwmk-<vcZ=X<ᆫoX E^ ؞ljmI~!'xƛ Ww˪|?>9 ;>p~p"^/cl<" p @{bu/ `JE2G= duWt5[~\nx4A<":O#x ]etm#648RYmEItKz~> KwP}-[NnD86pYڊs{8ӯ"UWUs'•]8[&E"Rtq^p/>Z/l Fimms.˿,F)':}Ǹ7mfx/j-m4R7 nK,jWJ&;TJMbNEﷀGJ) p <[D*}-JJab++8; ~XCc/[PxA."_fO3ۋ|OoJe\x|h6iv<~*>dH\XNxzXLm{a9\)S7n ߘm9r>ņWQboKMW&K`qهetqTΏ k.*> c"Ô H Z^XH?O!wZj;xd/;=U|Xnnr2+kPבO /)m^^gVoqwNϏL@(=p t x}?5p8|eG8 ClAo?. 9%xY[ܳ/p|)wp;d]vN\yn_ƻY~pu^%l p^[6pwQWrRJ\PxlӤ7tO)w#zRt/>3])$Ơ)>*I)ܺrx9榏rxa(rO(:M(&={AX^i9DPTyN>WG"G>R鲖mQ`*n4\ҰYr%XMrs|pqȁq*6v]*Un>)lCZNx0aIJ]_>ZwYxa pA '%k5'laҒ -Q<Kd,1ZYry7݈(mm1Qi\mOЫGل[9|C p|Ƃ+@2{L5ZLbN>Sifh£{] vß+) !VsGi$Ρxr3) pu/ 7X55C@I) p, 8ߋ8mXd϶'Ԥl$p4)Lgg֢vSe_N)<%,[u7bz7Oҳ(I)j${h.“R(\EIDAT71#i=}Kgr\/g̝k=c$4o!KO` xoA^N'ZD`$jDy}rT 49"9Z"dA*yV{2HpmsRMR+r0p/Ȣho@wYWTBx:uGqmO$?p]ܿEn*TӃ.n6psDb7}ۻ#<p r28Gpqp"Up9^׀?Qϊpb|Ծ?=Gi$pL+&cfZ=/xHJ&csPS#EdHz%֫: V-iyǨ_!˙}Lzٳ~x4g(;\:-w)8۵gBم#+%t?K,lK;R;nZ^ɡz=ߘ +&BW&4jj8r7APc>_m?1WOqY0\ |lT|jc K/(`f$l"~$`>UF>vvI,2٩+WUWs@+]G$Z;4/OJ):"_Qh:EM`f'*ÇKܕ"$$8H`^9<"F%c!OI)ȸH5RpJ zEݓRFLs%Ï;گ<4rJ``y%p|cgrx{dvN%N:օ6k3 ffNJ.8/&~T1hLj ŽbHv&QTO?cXρPVGu!."a@+i]wyuXޖy^+p x1 /kG$V?&2^z Nv#a}8J7u/kx 8\L{ ;^w;2pu{3\+=WgF#T/?s^E884n8}}ܲ*&m`q}^F#y ^މi.s."SV=.'NΗq"<'ZWJ˔2Q}8"() 7DUh+U4uERupY!Wb=UmWs:/uYU{c'R-WܮZ38\mrs%@\͘ :cW_w=Z6EI8ƿ)*/"1pP)2쎤>൪5 crOB_Zڳ.Oq"6<!Jst|ze@r>:;:T'In^ѥV|SAc=pLo(|b3[qkwO^Td&+y)NuJ{tJC'R|VN)D'x&dҙ 2ǴRp4ZIJm9\x~w"'$Y֘^"o;ۖ-[e\K`jh>ܶ8vS~'QԎZnlݶb/aS]ɤPu`Sq`;.gN4x_5jm{Gs=^%X tn=WJgTp]x<7r:)*3t-p_fVyo𦁫rcm4iʝGb }8 ), 87{ 1}<5O{uE8?^dmR}HI)==6vDtO)Rw])'-)'>H)pV\+unwS%.2}́+9r85^Tkتn{zxwG}ʆ]Jnj):Z|1y.XQ|dكk#x_\Du OQG*E!\ H{=<| ]h<0Bl?,K]$-k8`,hY]S.칢%3Q LO&`eB& jm۲U, ! Vz02p' "wד#@sL-\^ j.: vi^QLRd2pI-Bhsr 9lYeL\&ʹFsrIWN5kƑ]YN@<_iqC[[)kE\kctqde(׍惴ÄP>27JignGIvD+Үy콥hۍYl_3tqIjߪe=9 l,q ^!]Y6_SʣpW1`mSʄenOp|=׷(b{s3.F͍fn^4]B^D ! v#Pd79R5:Op3=p,QOAZiqEE˒W SP֪ ֜R 8[n_1WU'lVIY?fS,$/࿀=& Kx|-!+upv  c JMv9hf() _*|"]V17G}Vj`waq.kp!biM,xy#"vWgq֟D\QY=dO?2R;&FxJ3"G&V#{(u,ڬT@+WԮ#fp)Ѱ9K}.J96r:n?ai4[ZCܿ+ }jmv1]ypH5kY^lލEЃ2.>=\iq_ Z\BZ67p8v8(Ts{UgMe!n8]+ gl0pQl`[Ni\9N)8zpg/4)EH]) W>O_@N}Exe)e 0I p7XYnaGi㤔Ax)}SRJͳNe?5^zeimvGcc{73D+E6Be;wItnzf}蒇- /VˎT[AWbv+uW''w٢l _#mP3z.6dwu'FWO ۨ\EjKg?8[;o;#.sW>@Eײ <Axhp :m8/nGgx?/x0VT~87g+ x5=>Nqq`jC>"Ÿ-[Wc8n |8gaXVӏ\򔁿N)87u/SqK)5)e6^.'*\yE$)^];cOJARP.w8z$eXn؎pNrxKR^povϻ`w2u39.D"9bzQΔm]׳:6UyqMkӊ˽G_"zU[”Uqt/g5?7WQھ^Vs0D }')&xI ^M_'P_e#?T7"EZޛwO#;pUָXK OVlT'~(3g Xnpj*lJGerj 3ԅ-Hg-o}3>?2c=v*JX!mqrLGڂwLT}<_[w}䛀gId}iZmpVzkߟkrl{,>aw㻀k^Fx~fѳn Bـ"|ΔKow#ܛ/o-)rw{KZ\󻾫yY_hRR2u7U=cْs߹]({ rWݾxij6235Jn΀RIթG&j7WK7o.8!(3\ȦS!- H=JK\۞8>IFlgy&d=ok?%m5U3A-O(ew> LTYZ?Ef{Om4 G4@ rX 82 aNTL~,ϔDڧv pdH[84Vw<^y<;>^֫tTFu8nx dB_p)wKI)TYMJy@ɦ!pIAe{AkV^&OO1Uf)mIJ]WLJ ܲ__Z9>AYvtbv5fۙ\bml []IJN^<#RN֟J.{biX 5]aomoC|ח;j,]*OQxQt@RWXy/Qb%5g\_"C\Zqz pIU[`5wHw 0Up.इEc pY 0uL9݁#= ;pBx@g[.߀/o^ue /]ހ̝ٞ+}YΕJxpOWF4o@>Jw"R''-J*x_)ŕ.G89"|J{OJ łnW>Nj%/yRVRpO~R|u{;/S9bh39pÁ[׋PߪЛd33Lx[(}Ic#q ;p?.7tM=sp I<;Jiu3kV:ڪu͌a::EP#T=e]!~jdEl_SHS\ luW=ztE!_ aNN13|pa3כoURvPE;o)r-Fd ke`;fi["WL!Rg+j$W3+_t}2?!v=Y&Y0eqHs<YiYKul̘aY5Gb˷+`LuyWxexY}ǃaw]Y+s#ӟ7x\ǫN7 x pY_>^D{n.{"I)z >pV>?Dxp~:dFE21<\(KKGlRQXG#[+.\`3ui9R?Ǫ7-A>g~;K3<BC iWt+Ukf@F#L+4ݭ^Sƍ6pG~ EmEgF`(rDg Ki鿳|-% ]Zpo2pUmyiIi7=D;®zao+Y\#RWXrc(r ^*;sH[3hr-_pR zӬIV]U^yJy=S0ʑt\!c(K\b!'/) x__.| 8>^w}ko(7B(\*zl%[K_L)K2ԢߚR:h99ÔO6v$U3F*ܰZ#LnK2buI[|* 6@m5V~݌t|!O6^B䧷ѹ6BFK9ӸJmrg+佲yOvbY*n83s7]SN:jRm{l;w3>$gCGw ;Rk<ZMٛhvD88ƴ>xf~5+rQn0摛F"Qdy#^D8f$!Tg`GgmP6pp nyNs_"ת'»hnMhGȹw=Nn~3݇#¦j;fz#4=2F5ֱ2#zRt.h֣iF4RRDSΜD=pא`j<)EW(S9,bwv?8]xL+:78"AwЗڕJq4*׏JPlq.f^.Ul1 3 P#)DenE [ )Fh⎘c+>l.0pΈ'!|Zg&jw ,hT7;:f>7b6E&0Ep p/QD}J p._EtpKb8 }X`* nub.v*e- 1w:_ Z3(psfy3%3%}+ugA\L"IV'<W/ z᳒UJ 8FOJJܛY0)Uaϗ^{RUJ){E'r8>z?Eonw:_VoŜ-?Fcbտ>sS T#ν(h+ eE_VB([ n%Ep Ch:#R[\,3 gS=Rol Ds.I'E^Nd=Gx4MkQ?xW]qϋCZ\O5V6m_@(۽4zA}-ŏ晔VN?9~ښ[+ KuY4OjZU=xLZ3Kg˫ #?x݀׏ xxp}\[ড়w[wE8?p+qJ9?1'Gx}6o]΍ m.OenW^n"ZxZĩhB&F!#Hfe9|t% `YoycZՈN!B]G%yؾ#}is;(R w9m>y8"/kG^y' T rYB=/Jy>Cj#Te'T/Ecj+*b{;1Q/ pd:R\Ivs,N pq&t~c9|t$3C Q݁1pNC)ŭ(Z~Owb'|fKg(iU&3yL^UVw=.^=It:*kK*Ћ+L$csJr5?A#7{u;&f5c.c>%Wovo5^j& Ԭeq4`Nܛ\ݽ;p z Ú70Ŏ!k:n{@YjK-WšGl?p =y܉EC7:u —}+Nz_ \y!>7%+>y%⳸+_8&-ExCyw?㹥M]ywަo"|p zKmfp=N{ᕺEO[ +M^t|Rڀm ZxīiR:wjKy<+JGEڐz4 xޜv<,<} Ivၒ_{>ubc ڞ|E6u,KO_KgTx;k!|yR1knZ3eTOI)Lf^+~kf/:ܧSJV"+зL p^?,7eQd{Lջ툒t]3WT7=0z攒ƫ|sJ7f"))%mL'ss W5 ʥYB:W̐twӡpuBۉQp p:DȊ۳pHx8bq%x<hQY-yܰ0*Ng,-/­Ŏ-ݔ ^ 8D."܃p{̥o/ I)B_yExR7uǢJ& I)I)h p}k 8g-RM9\zX0ws&p| 﨧HvqiFB#\~oScZ"~~D#Dl*cj?'m8rnO` |utsѦ>+;|g xWq&FF=OsYo-D9gpVFm"OEŁӀ \Nz`0g/_ [ڮ^#O*A7GxOSOrxMEY;D^p^O]mcq}U|xg?zI.{#2z`#\[{ <Uzp⁻@~DA 5T-H3on+MǼ5iE4_R:` J'/-"ܶHJB׊*lPP,t>)%KxlUE wJ|Gֱblpfx,tR21,;S.p9}mp?<Basj*ɺ3$-.@,nI2t3Vek)-y?cEFibq'v,QgD`R'eΒmK#*BKKQvb VKtS|Ϳ\BtXc4IV:2=/5<"w{% p\g@1Kp`+.=k1̂`̴_bOLVd w.L] ".pH0bZyV+qu-pfz.8jc D! د"<݁OI) pO],{J9W.D9iQLP90`̈wSJ:݌"Ex7Lۢߗn}E89?5y/~$%`^5TE|~xG3Q,ɦDM#U;J'QR8i%`2$otHw?m׌hI5G0U!v1qt|&͒j_ܷOooG{u'#E? <5 #?J~p撘ՐKZ@S0ؾȧ}ifySȺ9r!Rŧe|[Mы )ӾQk4ٵPq BvI +Df}?1Skjp zo[%Q>x,x <#vxv=KϋoHo~xa6~ QH ɻ,.|#_ދpQRa­#>>erxA9nPy~Fu泅jӦ}=Zgzl(W+*u~VZAgS.b#TJٳ6rY&ul>eyl+<5KoKTو vM蒫P&GYsBpmʔL$F^ |S|8g:Prfm1)G8=+lYi/[~=DcjfNKS`FnO3bh[RNrE#x9g%mt.\vY*M,j`v(} p Kyv4kcj&))0p:"0eN;(GEG\gr̹܅CakX0۩V+[_)ŕZ$w6WRJ #; M)Ƙ6ήI)™SSJs*}[rx&99&ڑS~(uʕ3!yJ`Ձ vMvOZ縿C]KS'pLxO+IBNBe*]S3blxN^dnd {&VY;RPܧ=)Y,EMi4 8wgn  3\;p݁W ~.p]mcDp}pYGGx>&u~OmD\q\9\ᵄU8Fx+Oydf,PGم'Qȥ/=ǙfjL9DXDveq[QC9扫,;0Wq}枘 +}OOb+f{h$Oy,v 5v:# Hʙ=]0 L%j S8.迫.+ Jm2CX pƪ" |m[^Om,uy)gו (LG,01ϱ ]aVk:DQlx%HE3CS4Ş85(3E5ɵgi̦AN2F\3BfO`Tt? 4k1A{|{_En̬/㧛VikZ9)eT(/gRzeMD1Kb@Jbq6(uhբi0S5]VܕPHJ ܻy q鯤dd|{@esxg#%ԏrxVD{zkAܵ'(AfmFPՅ:#cio*OlP; zǫe ovx.*>u>Tx?oSG-kmqn vQLGO&m"hzg&+Nvg-I6xe p ?QI \x_qoI5fހTѹ pppʁ%p'TpnӾ"W8y-,-zwp^ n8%S u++/)!pm(ށp ڥ*yRJ)^ ;)oG04˼Qhp]S&]NuJcT2k>DWs|po b)J5B7y&v=N nRwl첗EOmEKbM=<%"*†?)&RM=p}_? xp4׻g{>qp^vyxS;mgo1\p/xt$xE8?Gx^E \0秔{ۿU. ^]X(~=6` & mNVv"3Kn$S{(1F7!$5.Z ŲOHy4$a%{wմH7Y*cˇζփOӼDίGzZt PB7aOTd}:D* U4K}LToW NYjKSrеW2BzcrDUiw,ΰtza*[&,w A+#_/E8Y>3+'`[J) p \8Oo}p~8s4 prƷؿ;>G*U~њC8-:/*JHDPK\ݞ&AR~Eu> ݜÏr^VKS |"zǟkn$rnX0OA;9`̈́xKXc-wٞ;hWw8>Oۿ?#B3&`{C|2wD8}Ss˭DJ\5jp82Q/=g3[FvB+ ]$;.K/]H#}_=xz#!Dguy/4Ogl.@@vv6Ko=Ӓ?-`v۬9SZx e.53 ฀;kͳrC)Gjyo8+'6K!}~ތcYA; hJ_O žHl]}ŕvˍEVAPZ)cOR=6# ,UϓB6>njo&k&jGYrI,$r#xF0}p<\8f"=:-iX< i <?p;EHV]-Ld  UT (GYNE\Eב8rkٳW >$G:F Yn#@B;O`eRm'5/G*bRP# &mi!uDx~~/RӚb+'n9R)R…s[DPYHenEkƵʶsm@h,C#AD C2ewL5.ŦȬAou E <m5Go{R'R]6yMq~I'_\?G~x-/3?:uN+ݻ6QC_mϻcN>-mvMTuqRG5ĶRUUB@gk(o!ZXZ{jYn43.hUt3'Z:=k]LD[_!Qܭlu!YTZ tlT{)5o] %]7phvS{#BZ?vɥi8jU$,^m3Wwy"1z(7إWg ҫg4#08-ҭĮ'0y3.>ͯND8]YR!ySLeHb-rR W3Ikݷ6M=uۂ~R 32Tgg i %`:Y tW*)tt+)}% ޒWѓRҿqJQ>)eYlf{ N)nNJᐁ@u_&_ B5TW{"ן\68Xw!*]u[\)]B6QWWQ"kK£.R]bۼwH Ђ,sMm҈m |JRm[{$E,f5fkz&̫1⶘yό܉l64ķ$z\gݣ]x; KU(5k6Ψd37Z*tϬg'“RpG\rCC-[\AG'p<HJf>_D8rx 'EG&CvcgW";XfǷ8Al57)T1]6g8Ù䆠E+\xjHVNe3RfZuߘ |+=*9[ sZ#yd}L+QTټs>ǝ .E2\/'=@CXSQW"<g<MψEp1sU%bKffEAav DB> ˞Ajyl父灊#1шR cl`U(ҺEM,hXԋ^ %TtUVn 9{> B܇eydME2== 8O W׀( ^DϧZ<])kP;%-~wູ\^JJ V:)gg,ؕ/+D!a]^+4JC E5L aBS{ Ro9 r];]*˛iyd9,bbA6[e=pf`>ZIO0p,ud<\Zes4 T_ mYx 83 m, pXAbvՀ˝VnN-K 3#}klt߁j7x W#@3h!}v+x8A pۙU[֕x `[v7m5* YgxPRa<CpJS džq[!p N#1) wXLbvWH6&AtRt>!c-JA+)%sdݐW]cxDmwUp 7੉BLILqT}ڬ ҞM*~ | a>1Dp݀1FE>ꮳO1 M~ٴ'@9]<b{-y$#w`LsX1(@"7ZAzNv2poD<-c;^s}i݀s(K\v~o /Ǭj%n}9))ڢmSU%d;e̎HL%<1=P.jwm4L9==a=>UܵovXlߋlD_c\BƤ%MlLAOI2#pg:q(cz)EW1_" <vJq-)Z{E 9ɜ(CEzqySJZ+$lGKW0e4-L ]kS )ߞdR!Rkz:dseVkWH(UyҘoE(XQ)5DV˦a{=4sGGTed{:}RXr$TG[lb߭nuƸ#NQs>xCrT7.HA\R|5?8WfWp1>p" ^>p߀QټH)'|7a#blǻG|p݁s=(psr8; gZ ·,hg#qc'&Ʌ%:IvmάMX9[&_sPy!m͆'B`{d5~ Tz7Ve~֏͵OC̷)n:ִ!/O0A}@m /࿀ KSOAD6XK~F+XLz5lMU1Y9+sX"ܒ%FҦ'(;kS uOUsuYx|i#.)jαhϊ~?8cD|roΪp_N);]e8:C; ,?Z+rGl*9QX7>ȥ*WW$)v8t RwGP1Zӂ>+fݏK20p@6SN;^Vf÷5 ~(xe֥VgcI<mpk-5Ne#83;.KX"jv%ʊ1 ) |)oxkdmM(k jW8ʥX/dUx cwGxs`3SY0 i_'hpX0pDO:AuʣJL֚VW_)%?!x\+: @<\!R0vu:rjY:I)>RC,&jC\J*&jOrx}"GrxLlEx[C w"nnhUoB S̽gS]`\!^{Z,/FZBr|nvv;6S{B (Pk)2>f$# jo453ǼTZl'>?onFǦ '__k%pNFy`vv]g+'__>q |/Xm|a`[Wu&|pv*ଧEx9uW]_-v~D{r"|pWm8<| vǫ7p p! y" p'Dxy=Pk'X5J)\=GyxUWJ:)%33Pn/pGrWxy]Lj軸/'v#؏NI?{An+bkr 6*7>]d5;s1vj ,z@+s,z؏;p $?Zg3j0AN ^ Њ? KVb{kqGXTZv01:l@/|n˳o 5Y\.N1ByX\,VvgԤV Ū:>2p7caj+1jٸϕ2TEǣ  I[|R<DgZnNZ[q)2p**HF-82ZkHv?UeKaX,'H0I8{Uj,- $gHo*K.{82_LBr*i2p^KAfEtJqc)UedvZ0p`~\ބ* LaDvek Nab#=ml9`*1rvjٻA;h N,\R"H Z\%!SqSN(UNJ?M zgOZ^R^>;k ^refiPnE2-ıe/ylk7D4O1_,O\8*; Z+yp/%pzHC#V\lx=Z *w en2xe?:'Yοˇޅ?NJ/#En|Dx;8|TxdSKx9pQg2X)pn|-)E56n}"܇WrKrDRaL)k*% jt_;g.5Ž=bzUSI!ouQT |ʂ -m}۫Yn=m U fgf6!`kS~}~$jԩ=WlLVY1"#!' q0pO!ls-I=}@q#`TSBo/k킼wƿ3-u<\/Gm aM ?-{vSC,F޼FZ2pz9^‰p'w]`;C-lK0dUYma35/b~wtz.wz%{݃WNۍ8+1XV}RsW>O"fE#H-":}?4𘗁Yƫ{ n8E ԥҽL ;}]՘˯y l5vJ7#kve+<蔒"g"Ԟ/) n gO|HmipTeҤς9@)1rxE_FRWM:qgD WŧdÔ4wb,PwىULS; 0VkTg85qm$$TU.?=xvjw@[؂m cX=p&qIVGIRMBͱNnm^g,_O{G7຀׹=au29Uk( 27^8[މp_F\sJp:'‹x3ѭ )Ůp pv+)i>OJR"|5)\8j 薗KA{:)z?qE8*[pƴs]򋄵kJfjIV灮=3$p'TgޗM}s!Kz(!驨z <\FW^|zݭ!",N̲kh]n(n-b]~{^t7l\vYvƥVX o^-b|Sj4F5ua{RӟFk,h2p܁3pt.(ׯ8n-[pD8eI7T+p_7gD:=%p|x&1y[W 9 p p~"<5={[ݻ'/y5qt {Jҋ ฀<'}8sXg/o)%m{7#G,J]qEܵʚwyw' pp&OL~OGT̒6\䫬q MqGH Mf|q { \ݬ(ocYbvWq P ::8Bb<}Et)usU4#irĬWO C}4~%/H\r0_b@YvZb{8cW[#l_SKTn?H]EnJLaSj(%'$N b}AiuzBC%pᚠQAʀɬw/K'v9X{Vi* .JEh 5DmxuO ;[l6ZrG pd Y#?>@Eq\V"]3pgco$&˂d*|be%c,&V kgaKjHE$!4+G:8崥w,.֔O |^Z6#|"i^7:Uw=<%}p=gFvLs![1X#`7c7b?ݤHj-2ZW-lxR;#I8uUL%tΦS2ۃitJIv !/)%`۽2y3@ږ Ƣ <lRgٔkwZ4p1)VVTqI)qYd<3r _ѿ_qavDi׸g [q,p+d-j/ގkVV6=#ݚ슕hzQJZIA3Bf njA$(%co"d*)>R2(l5 ւZ9JYMsLvzjg6i' \./x n>QU#DPG$ 6o7{[h] "p~ق idS'4p\ x/.W Osp܀/?LԪtq]hmّ>p px=+/@o]uNU?yEI) b;RΏk8gPhpOwO2[Oầs8׿ĕ+7uҳNɒsn,ގqR4>Rl' c$,'lfuk^7Amk ;HcA[U hv(%l0އ9(ڇEmS {w eMؙijT8,?>OgGGA_g׈<'.֎`;R38z8!/#)Rc3mL wGZQǤj~aߐrx1OoUeLŒwIq4R}^(@ݫV:Cr;{y)GoYSJ$O#Ak+ä\M I]" ƒn-XA Iw:3"n_Gu6}_T7y yi>^V"H{宺. |g#\QϤu'p+TiT#o+z\a^۞R}"8o #=-Ѳǒ.LJɞ͓"wNx/9p|CTYݦg;}!gPn,&짵-)[D4~fOCwIvqg!GIfrUTψ,9㔊NqH᳓;j" E͑q^uDN?#S3xOQmrD- *[q&`GQQ` ~YS?(rƇxs |Dni7HU5`{h~Y]ݷծ҃V稠E/9Q$UKXrDn?Wy 8VVUu}w>&^p|~"5p}8? }\o"?.ؿ5}?NZY;ԥ)[^)z6[g zwTٕ-ľ~4U_>f?;@v!]5 %rBo<,Ӆ"OTElMѝrGy@z1՟)أh#/m/rbm))eP30BJ0bf0Ϙ ɶޫ}2B/~-ϩmGrȺfp?hKa A2YŒJ?ڳJE;`0x~ Np$8g9" g`(-bYA%53Z pE5Qgnkre*dLz6%VIv#Oss'cjyOr$IDAT1Uj,-³UJ=zB(+%@s )Go"|`bح _%?>պ+I)z꥓R?pm̘%`Ĥaf:4bMJqj{m0~;7y$V:m9Mo`ک^-g9 Zcʞ9@Jv;r eE ͟ܘEg$wBQaNׂv5ve}l+:xauYI#M g\3uAx>LHzGx*mW$طgو#P8zg xz b@sJ)\Ch2)E'GR(7dWOJ7RʴRH~r/X;En~YF._]hu-{,ENIdYh͡\ JkΒbx,)TUpSKoMc-^G|Inâq@r .rώwƢlko7$G | OWΕƶR,erm4= )wrQ&h(8Iz'U9.m9k;W1 |Z,?:eG:>(d _ݴ t8›ӈVwo R]` qĮ^ xˋO,+x a[.D&'G80.~njߍp3r rMSq#")S]=[K#AhOpbns Jʧ]̠՘>D^sUHw6񣑰P1'K6F@!\='RwdX&Kp R #t!~\c/l)|"Ȇ&.QR%lw)\;[?gR[ Q  HtC<)D x"`6FݍEw ꯥdR,9(8veSIZgβUNUUջ,FeYSN.Zu0t1'1SQxU.ZI7@x~ Nr!yUӘ+Mz7ӄ)͂`mf=x]9#4O^N0 ZtJ"ߞ=hU{4[~?v[iƻdѪ}iDܻ*R F*H!- #F#"5P3lFC9*9sUv$~sQT,5'Àbd2% q6$, ԍ%ƛ07ޭ&;fqrsb rJllBz٘Vll8ooE|Qؽ} Ozs: %yme$d;9 9H7pdq[w8~$|t P-ᬵpH"bt/acpq:Pv/p܀c&RT܉`IyNB\?p pU\}E8qrc84=xWg[u8y*[n]% ϰI.}GI1M 93$“RthtO)Nu?^rYrp ՂúL<@+9̃?I)8@wsf3Egpr8>WM7:$eW|$h9RUT6FgPU)n9~ ْTP֐W%fX9[rK}dꂲ5ad9SiR@P}>+XڮB*aײ _b^UHs v|GR˧osQaխdw֕7)˺&7l!p^D:jif!"?8u&X# T܀a%m:ۅ%MrxYe#KȵF3s T?/w =?"sgy n3- x]ӁoPE>p} x#\?96m?M"\K9P]Whe8?Oi݋K+v<=ocӇg[l#s/򒀪jÂXd!H/^dU@:Ha߸W<=Qvvqz[)83&[ddT˻MjH #w1U]Ti<^5"%9RNiJT]\]Y2]"`Vڅ98FyA\2~aK %J)D?܋NuEuDyYj]"Pͳ>'|M}p1]7T]5 J[*˦č02E#юp0jfSG\K:6NƃsG*J`m;;U)THQ jrJܝhuvX+oNW^Z'*`OrJOv3`&-p~E=ƭ=Rvɽ~[:$ )e%(;-^ pO$?QV-Hch,M2Np[ٴ(ˡ Or70Lyzʭ ~d;LՒ􀄍 uoaZVo'3au`YX/TwvA $aRj7)]lU-$HZSn7˪V-ؑzf!&pU}>d1[(XKƷЛ8xZwwcคĿSw>0;?RWlş UJ!/r~.yI.)vKťWsP+vnLvT h<1쪕98/M )OUB7(l;߈~D8B朠)6ʯ?gFE38Mhh.i9c #}pfMg}gΥwc~[9x?5HN'pԔ[f|~3nOC'^Ms'8"HؤX-˲Pߜ6$eJdR&cI1p6Ֆ7;宆UJ}R?%¶6 $-xH]Ҵh|w15iI2p;N tld_,/GRRkG+˧+O+pݗ̈,8gi3jU[J~\nV`8Av:<=m;g[*wHlvBs8/ w vr'j pr-(^ g%RԷ\j pһW=)9tw7qj8KD#nN_leežiHJ2=<1g吔qlN<8 M-%{`d\Zڲ;=o+]KJ LSpJEmvI.>9bf䔲yDv|I)㢝D_0CtJtV+;9LjٹMdP)׹\^qT&)Yl"o4G+- D^M93a.w4D’wD0bCC/X(jQ!|@ڀ<+!)C >Q7۝y8kx .8^pnmqt|w5HCt)zWxZ xLg4yiHDp DE*0;3zޚNJrp`-ľoC6NjD8'GxO[=ydҖn9n}۷pq㣔|݆o}IT&UonջpakyKπW9ߥUJyN)vzpਾ?!i>G:QwґYk&|]h@^:zdL"`3ED|%e!z-i\fMіD:9s#VBlx " mT>58&y6=c*G>KhKL+}. KtRh[s 6 .t^\ CZj)WV->Xx / +T*KV#V2pYQ,sVc(S}VWLFeT-4fǠ0Ie]2{:aMum8,=hgMjê@  r6Z2pM XnW'Z߱]љ>giO!(B~_jX@zבv #\N{B传}uQN) R\%- 0*LJa%1|aQmeoY/`}Yucf j1BagyJ"M8׹(V_;;\g@iŮOMR Wo9w,-b ҁ+\ ak j"ostr0ܔ E9AʋO $̤:"W9jS@-]n`Q@u p} .'G_n5-X$mEJnq7PF ;p\qA}8p|;K];p}K;#?R pWQH]+"\?Rc?.))kjj]GC}4msλia[ RT  ]h=D=2BN1ji(ph X{bKELOF!!)vj˚d$ȇ$Qmx-QʑNN'ǣ9)Y* p=VtxN T|h"3[γh@DᷣGF )EuW3S#r32ү {KRRd sXo<83}py ɵ:zߗ%8ZrG,j_*zaҿ?G9?yGr4۾Vk] ~avݽ,-bSl\&gyF/]E C8kYIh/L/,9Tg.!0hsCNY$XR"kMro=(`Z?jIݫz/O.D/ ^>qO!!=E.Wyx?xJ9D8R9p~"" DpE4bnZ8WCp\'5QD,"8ߤ])E7./9 x߀sp܁3ྦྷh4ꔂw 8Dx^5*yA .CJ).0W?*AsxN5;Py&xe6ʺS$ XUհLDovYIs)3^ŲcWj5 PRam#RcAԮ eH^tEV˗ȅ.Ѧ2Y(4IFV%od =kS=2Zio w &XhVҋ zg <e$h5w5nץm5Ii>B zq# 3_v^PQ}z"JXs,Z0p@,8#K!e +"w6X _|1^Mw ;32jZ:cnb *.ӱ2p@-`/[X^Uc$ c =҅ŭbMT/k Pwgorqk8nM{;_ 75R[fבZrfUM֨;VUU'cWxרn\K5g$ul9sⓆP `zAB5i5:U*?N)Z4p|vǫ>Y9rp[H;/]e^QXb8uAɟw&ᑾ񦸢 Ht[կuBJ_"[TUoLa;bۗ ,0.PJZ5e}¶sBv`L x x~\;}m5,K׏zޙM +G0zr^l%E͂p8щpK?3\t);kӆ#m …,8 |pdfRe;#:k`XOfڮZtwwbOp|i͋Z\v|+W&"H.wT.J-\5oM׮^K`{tvn9Y^6̤'H\)Qq {W$}*a% d~%e텚3Oo9/ĜQ˃/ӵݕ=k_@s5bnj$C6}PORBxOoxv51jFD  _\kީ"Izbj>Zoh13s޵\*@rM%ι~NufhS ׶DX7aCh&k-t5ݕ: [ZElSzRpS7rxf=u"Ýma9pٶ]֗&Q1͂BN㤇+WXWnpDjUjfwy} MW\o_edj2!Bښ&,2A{6 4ufl.B 3; 876o)Z>p̱LYĬ}b<<5i0Wf2ю4%)x+%|6 ^4 *[:S_s<>ހ'+,@;7Y3/E{[I,<"j>~ބ*ƹ:fd"1Yyka.e9ҹ[m렲=rsr`'ky^k-=j?9nK +R6)Fxd9Mf XT%b^f}ih6*.hTV[˚s\?ɖEs=0#gnw͛oF`}R6I4ߍUJ s{BD|tK/?x+g x#D^o/6^8 )K쪑"*Щ`ܬX*3:~kz7v%֏(U݅Ⴔ5uW <mWe2;hJ >-(. U\ujm@uU}w]5@y-ƾnZ^2pv|:.>uU^ fdnoi{,܀,{nd *#Eͬ K0 |Jv>ʫ9()bԕ Sߟ vl1Pm_H4=hXÃ-D8d)WK_w̏g 2^T8:` '*3/  R9!(6{;^LP \'I)i۰^Z)>'DNJSJC;~;$3RGm9Z^Z 3T2v;%c`9.*N)I)^XXVKr^X/LKFܠ-ϫw!itu02lZ‰m0~cΤis5Γ\chm]z4֐)zީݻu1 v- oqIѓ7p Iʮ:CG8^lp |KV٤L.pod(.pk2pa QRp7J@?z.7{OY;|mؗo}\NYvyaB}G2upGk%0+³Ko?`14pBQzE8_>BD`=LKpHWJ&RpE8n)%osxRʮI)$wJa_// pNJ 5p݀|Ep|Wו'gBk1aنPZVVRlJXNYQ]Wc4ަݟ,wd7>T:~ifעi;ܿ+ANl}a tڨ܎4zg5Kqd04Z%/>Q&} 8?TF9~~U:Ƀ\(K+[ A%غ5nYY^3їުGچKaT$-@ꚲ @j7i뿬K"Gnv$Lf/ߏ?~ |Aܞwf/"\|K՟BsFY6^uUTΘk{liK[)V=P+)v/T}?-- 1_=vqnЭ >"MZx;-_Gi*-67( VǶ:uQNJ(gH}9^R{:`+I0["Q[5p׻ &,}-msmMVJXsovg.+6~j)XJT~ C^54dŞ-ORjkvy 6_YZ">'SD=骶F@t'|*k˶*>WU/6*Qpd>[ӍP&51[3ݪpOը xp?/E|߀'ώr"453z) . i9x) =r&4 zZ/M98 p:^Epw[EV <p0 yz!ƣz#d$i}Wy_؃/B8LKR [  cOuE8R|mV&RpԤR*=uck.=qT4iR  8V;oNHm;,?Dg__eJ30ڙOS5~q5ˋγ^nOZM"xf_m#P/>1; lgcK\򹙋k-A ;Ė~b1k{ZX.)kЋ/ңR^SZ7S6=? E8\J߭A<9mm73YmK[ 3*6 -CVf><.fSܳ,X7› WQS2S<MVnb#w[u϶SxJKW+K^Pm%;x~􆞳m絁>s t]ʨxƭ@,uxuܠ yr؊4 ൎT黥6Htb}vWjJ/:}_R6tT{ެC`iHT2q.`K5zYSXܫ1.Lq7e>nq' NORf]F+b*+ƶRrS='Yz`L | N)nfkF?UlOV&q{YR_l/?g6w*/ ?L`UPus?Ό.].d2ޟZcbvNG!6/ei-St gUqA{)\r_T&Ojx%t#n_Fe3vPs'gN>@J<4;J \--꥽u:e=O{*pW[8poZ8!eze<M)3&I5ʇpހ%OЋmw5Dd:>+Ƿ^W+8*aSc 8 M]> 8.-=pa<"}JMuJa#WJpb'Gt9OvSjƓR*<>]a=D&p}"A]i/;9^XZ dz~2ٹ\^T,T"HQ9 sY٨mq9_(l2DU|Nh5v>%,.FiyJAI%U?^K[۲,(ѿ@攗g j82D%s61"irO`AZS"ϝ(!iec7 Dvhe|h  m,ImbX2*,_-d@3)ĥK(MeZ>2.Q^ ig7fndqavC./6?= U)6qFL\lM}A{Ѽw%7>m8&e-o1-&+J ZL8eC9pr0:P2*ԂKr'Xy?by<`ܨ^&Seq)pZq@BC`۫5*9i_PH>⇼y`0[p}3??/B&;Y! 8bd |vhjZ6o7Y۲Z{1VN\PllUBΕ.H¥U l'(y/Աʘ[9<2 8eSP))-`y [ɼ N"6_,pz <Q:C(Pi˙(k_ rjE]lex-:355F kI;RkLP :Y}r@*=WD 5t\x Aip*u2Q6Y.nڔGJ~D] sr)!^OC le3E\FstV##՜!W0+Meaw0p' WYPڷhIIKDWK4pc dU)Vu(#M'_ɽf@]SgLܘ w-Od͓et1#%PN)p2lOW;୹p(y>嫛ꕔ#RzndפHm8IӏKMJAn_vMPTJqz#)'D s ROp9vVjV.yf;;DN)ld*/O}z,qt 5;\O͛[b*5 _N1?t h $fhL2?H]/o&WΛɆ-R9m,XwkJx\eLP)a7.Q} (9TGX]Źm4gyn1)@"xNJ ^N5pO!$||+S7uq11,0p[j\ x믁E^V4NtE%pJ xJ!*G]d ng)?$nSJV& x~"! pֻ8?OO_pąՕ8ZI))'^ ;p'hr8^RhT@@I4_,MSbyײKhVhI' Nn.9;a#P8|wh] ]lVn)SPN ۚ MKb=B?] 8ͽ;X_o^A2{Am,k uE)\*FcSU>XtC?196}gBrcfNnY R(w`(XKl)PP nPqcUL`tmYRa6~p݀xx U0<߾ht;p7.# D~*or ~ Dx~ u?N݀3)E?+_/ʀ/Z@Ҫ=<ڒ $ˆkrTKN{ȫsgBU=Եf.1[(dvm(maU}kE/Rk\}m-f)M9F Xb/N@\nu 岖߁{e.n(V%=l@WEa`JTU,˞@]psG/FyʉpŴҹOsmKL2U^~$[Kta&yTZUn6^M- bi#%&k-uJ/& ;:& c>Gҏm ̬~1 } NKTY*JAޡ_oBmEMධyjhAfF52iF$X]ֆ)Uzif󏑭lIj0BE,dcA,(QQͥ&>:kÜuCf̒ 1977݀c{P+="_zxb _5 /6]3KӖmTLߺ>Vifs Iv:_>UY=pU=oϮ +—Gqjտx B pTio{{񷁗< .gG_΄o7WYp5W 8n͖.RJƽ[ 딂: }W)hR!\8Sw9RN =K)\vO3@] 93:$H7rx}>(39wƺ%a>Oqjy\`YyzRo.մcAkDJع kdm>nx;F)=;1}Bqpg$}L߹(WUtOJ_8VU #pUX%I#\iqyي(::X*r*I%_=7g4$jm sh/nüIYK A(aCkn* 9< =p{2B&*Q|K?z|߁cG xB蒿 |?. x$>_Dxp-D? ?ޟO"!'Gx9Al ص% JQ+1#PhթRm' ceT^H` Z(3ᨊM'a#ZqK]Qg)yFr2dEby6V63GcuܥmعV۾8 =k)mlW6K6ΘV70lEZLI ܣQʻ{Ex*T,ɭ8t$S͋ʵ*?7873PT8D6pWc[:R$ {l/ pz%$8"=<1BFvOˎ$eǀ[o]s7eK4p Le6H4 ,{tLOxܪr:ӡ9t"24u/VEYk\ȠI)0($X2xU| (ݏ'Rϴ̌INb  ݂ 4Zwg͑bRJN)HHJѕRMKm9&Yl6[THV<јIN7F#Zvr O^Ğ^u{. pWǴڊ*rYuF\ .;JX Mۂ(m (1_s&c;l(fr t*2 VTlJ0EGaKx~N7p¥{x ;߾*.;p "Q-=ɮU8yp7.x?nw_9> x:px-."9x}iOẀOb{~|O#+?B9pR\v*ΰWC_'av9{ru_Er\b,aW]6kaĚ%W,m?zYgzwGÕBbs6aBzyM(E7棵IEn8ym8-1*lK\%w5w UrV!J3}+_ެKdGoWLk{.*®?ҋ{\Bd .#_K:ЊtTPLjfQ%5HW0]JN,rƾU{ۃcQrq()n}p=ޯ7iO\7= }oỎc3G:3S?\D?Mpx_ ~\7cp}"} oRK)*¥vLmu([YW3s [,:?޷q(!V5"CXӖ-w跆gHcTU)[DZl vWJ&6qyiZ!\Nʼ(R)*aԙ>sX f ܞцT,ݸqձkaUHGm f[Ta6_0pqNJ7Cmb 4 ZNEQ`2 Wj3w+6' geԬKs&Jѻwt)kFe&{Td.uؾ0;6K2u%}kW8 j,D(?;ze##+N?+u 9ܬSnJ##LRԮ%mL!Ӹ\H:vZ6Bcwfm2MP6OfLg4[te7%ʙ?9݊0|ly(isW x78ǿh)ϒ pp=>뫦JGNJy|= W znn~"Y}SVpY5+wp8SIChk%D8 Er:v7.fZ~ڤ+HD\v֏ju"<} z~<[ymz+p=#Jy-Wp3S8؃xiq0d 's>r8ûQ/Ef" _#Ϡ$[RD//[Rmv&y ]buxySw +"6OwJasFmG"RAECW\<(,u؅5'Ŧ (Hy[;w(q ci7 _+].bv2N{E{S[,DUrˈ |Rqb`j uիș>{ݺX賍-B#y4wX׼9Ut5F bvI`~ Ryw7ĪO)dY_]9TO?x!_\R0C?xq x8?7DL'>^-gBnߋL95I@G.ľ/%êّȾI.ئ@XʞؖMbfF${E H:8.;HZK##,V *Zž]m}zTZiJ扛˦EHݲv3v+%lX4'phvn;{i9YE)dE"N;ߑ;J-O.e3>^8n;@׋ĩU1ۭ+0_CdA peݰO͛Rk{"h|d z[|y~̖?>&8c^sB%#n%Oqf2jO:# a^D` 1E"%x "]GyBட[FO[iϴD8SA{gF7hR4:" _ibRMFI٢tY'HJBZ0 rxit^zԐRŃrv˜3 )'ٝ_Uw϶ymZeMlu}ԅN"PgA|,/W؏4VM>Vs*G6Jwxu ?D\Ʉ#bnN Y}8x¤g{pp>xon˜Bjs]K*݀3^>h-]/o||p.;=.H7~Kkm8zM-ༀ{Yg߷GzB >Q =$E$.bN_S꾀w*¤mul|]D8n)ӄߥ]+@[R֢Է" jǻIJn pv09p)ز&RښϹb֔#Ƶ^zk"r̈́#[Έ7.h7~z} xt/{-A8 '>ROExu;{j2og*k>^"<?!tp{SJg&[^`MkK>=:\5,ؖ叚Z㊬*]4KHq:x*wG۲/f6(e>Zm!&/ܐGCAejUXbvY-x(U> c,vhIƃ[%*!3ikdC`ggh,R.8[!kuJut+SwF?^M.k FUZ ӑ}DatY23F.4!p/9nJZ1Q\9Xx\qfFw<pV`~uj2O&:=xTHdy"!ʝD\e] ܧw1iѱvUC:tdLg;R唒ч8#Ś8sygR_KGg%31I)5u &Y:H2T@WOVuT`)E$O_b3&R+g(39C^M^)ٳ\ G{K]'(nY;4fq{xSX$Zl _"A1[E:ۮ}LNzϫF<Xpxu%:h;Aie)yC&w\8aQ}"|ցp?T‘²pc\ͤ"z$$DBAr]/r^;|A/\6M,dZ z)-"k.8W;ߋ b6UcZ2T餁oईe*fp.D(" }'](/h2 #[ 6'& l@R 2p\ԐWj8#Yc7.`Ջ;ꔱCLjNVVJX/mH+\-o dתZHDAej-/g [|1pXhWq4{k6H䬧_-EKb(e+**KZ4: nGiSJeV:S6*GqJ)Y{Tz9gR]T؝_S =K|ws8n's[%He@EIW)mڙe09WerX5֣gmQ$Fz]רn,fvfe7j8,Sz#|YW-<_Y"D?98%5P!+Oޟp,຀7Qp"\?57#>p݀?.Te{=4Hyu) M"-D},fosjS \Ȫ:(]eGQPcª"hpt1JP ^Oa>|UTi]kZJ7H<֞@8VT E$=vKvsV8YR޻OQe b<;ţUeM#FWL]F4(W} E@Hy}?8RPO{3EYcY_~F3B`)=(*4ߥ53Oې |Fmi :sF{T{*$' `T""тJ+W@k.tbhJ׉%we?sUm1Йl~LJ*ޝ-a҃V-].S2+;^B@kj-P;+ⅴu74޽-41Oa!N)UYގ}[o<δ^I`f)5k"WuXx8ɭ+5YSWaWR%6N$OpG5hhe&[hy0@6RwC2+“_k#J2B$Lh\Uwi6!5SJ |nI`q8ʈI)QddKᔒ.jEilitٲ;2p*>5 9p`|&wҽt#R *)W/]n¡{\~i>dc&6k`}s#\>YVzmSYm5B-AO0x K& psu-7C(֋ .K;n\+=U5" w/MؙkFpl;w_#^|[xX.xoX;oI;AOѕWp@xNˌr%W֋G GqC+Ɖp 6@u"|[/G?8WS" ~9'x#rJ)+Z꜁EJ)OY$@^ۇPtMŽZٵ[E`KYBum"<` GʼEm܄ [%j&Kb=Ђ\rvZɽsk,YG^YMe$c`i{#/jq|"ſ粓`8J/_Zw_js\Pmr{R#QUZ}c)@VeY\G^SyWVOITufWkKwr r_+־^Pݥ7/+#U^ĺu7R͘i(t .ҟ|]}Fg#{#\7E_^+=aJߑRRup^8A#6l_J_fV7܉"U1F<0 ڎ¡%'GnZWQMaШ,/ D[ltoKzKFj$j 6T@})݁J4g+w[B.vyHRʂ1?z |aPD2Rx%%g_).tv;\} xb;C Z7pC p"4_2@p2O3[,Dn] y^RK,0pGq"\De!q_.>G)^)tB=E3qK),O&9p'D)lTRI)n*~pR #\sUo&s8^Ge[߀Lަ{FoYFfw@Z~dr\n-dm^@v \){paWtUgORs{@.MbH|/^x_} .Cw8;S8~ FF>""\DnǏF8ǕRJ)zRpXÔc9\lJBa x^ O56V\ͣ {&5=d*XڐC3;Yet@SHPYY#pu_jնr;QGi^ ~Ge RmB6 7\ p;Ţ;W{S?Iԧ2 *wV7pI4~)B;GMJjpʆ|S[NDJ|s6pVF&&Be JVsSyg>xs1i V8Fsj^.ӄj%Y%=,$PVH*6r^2S`k wq :KP% 8m):)E~E:SN?ERZ'LޘjRG6vJ^_nxm]{"πsȳa%2b$cU<}8ӤRtl-$ &šoiJ'R_AdRJ X?I)_1ir>kMx#.Ξmsf]*ym4K{(4i?UCxђ= "xATWQw(Tm!k~3kAS݋\ꢴɒ1>y!+w[1k|̦tf?7CO>=ί?S-K#=plC%#H`Isvm\=-'=bbьnfoEs^wlب)JuH{ S3ꢰ|.z{zY*TkNPo"q][q|VC+Ѯb@#ն̿lv 葧x_!,pO\p}\Srw-p#\w8p=޷: nupc}./BPD'uE>FxpJ)'p)GeRtExHU͔[JRd!p]viAcі.o o] (U](&wgV5)~ =TMrWc*T+kmH/^Cni6pmf&y/|ek͞-U̎ а3B j3DfBZo vɻ˷#,hԗJNl ஷ5^FNɛdڗ~"IHדu OUWx>"$W+d p^ۗJJK>pZz|||MHnՎ2OyRknUL)>8;C'u#)mJ޻>L)8m d_,³8)'KpΏr8>~e$9VaDփU [mtE:tkܾʖGdaQg~=.>>zfjYV6ꉱwҼ{pewF`jV2'GU=ߐ,V(-ywqі;:j[ w7/TUh! 蝲#ə(7x,DI5|rJҊrgh{es/q@',Dz\\ȗ iؠ5@6 qP~QsXiUۭ:Җ@X.zazHC]πGqwF=pӁ{ؖe Z@x no#E<׹wŪdp?yx>pWn.>.;ΣFx[ EmD7׿ط#An;+roFӔ&Ҫ~=)cnWwO6Mw)df#Z:]queʲjV"0bQ7bD)eS%|uE82*15ւg8%8V 4ܞBm3WRJڨ eHep-YkimBfLRRɒx>2pk + <i " pϤ6 SL WJ)9H0𝹨I)0p޼r4豩vv,BD)y8) GD|)ud_!)CcNZiǝs?XzVtoU!ێʀ B;߫zi*OסݯϨHlOm+kn}rV q_xuk7z \8[3JG:.HogBB2wEN^hK@z̔"%s qc+S?"ogp+h2p>|OE{"x_p R*]\G pedky7w8I]3}qEMJI+=Om pxOS -J.䳔BhRJ{cn)e{BlsE8s>WSrE7QXӣ;[eԸ#vأhtD.uF#vJO@-ne{k~>+yHy! F)l?YVQ968+s#Lek:" tKq?n8,^t':}sF8˯) ):U>(t/WY.#sLMsMJBͯ셔[Bԣ=~?XkjxJh0]CY 8N &š˻ѶFr1بS'r>?pMʈZ8[^Z}j : "Aa#WJS68(GbQ# V44@م\!wk=<{JpiQy3@*¸ xZf.@*{57D,O3<_LKŻ\9>Z繊G#+|l53CufW]ƪ eF> 6s yĹؓ7}Ax\잜pӡSJ%523=ӊJJGG+=pJ<)&8(pq۳\42X̵R,U{osgr^*L%0m%`~ra-aSڒg};J+D0h~|jvNgl˭s UJ# mPHZeLS=@N љT9udqIs̙ )jTfU%{yYy4֒|bgZiv\ρC9Lyx=IW7΀ށ=8n#@ p@ηmdǛ-¿ 8X/sV.M0U62v-U:G@7 * \eBf(T^LvTe ۋoF a!pA渞{.>`,Q&D<~`##nX.!UYC*wJΡWFv֡-qh>a.チ4͢s+Kڶ5hqc^ 4# !>ҙjvXc cbvw# n* 7yD n׬MAހbyeJV1в@fZrR)D p3л$G$OIDAT%xJ>z8C]κpR@g`1XIX6pj=eU8+T*+J܌#zt-a5c"Jl0.)Ńg챓4~a4FR0>)5RR| pJ_یU nMJnY**1"GaFĂptW;mFO5I).~S8(SgM~"9ujy2MvNQٌP;NSҜKvu>]|vnK)cf.iXYl^E},rq~V{u,E%?yﮔIh؂ϴҺe{5*;*9j"ԛ+EU j)-%฀c"1P\58\ܓ1)xU7yǪpWx5Sa䮍 8.咽NtiI2|͐4@<Ź#('/z"\^W5p~:{c8=ȪW]w᱊^ fLR~.!32]ExR n)|I)܀[yJDY/wO<p](Gr89\_6mWth5RU5<߻`ۦ'U.BJV2U ĬVKqL²Ay*5a/bLʎGZ-6{ ln`αe(;/_/.G H6AH M-M8*/ABkK@e i\h5MPQMmK7|b^TQ/V[Guc'5O7]yGv,tm<#ac  *ݑZ89|Ӏoο8"Eh!]E~ǪFnK.ZؐBjMkrwC!ȾZNQ‚$wzuv!,vk*ׂZ4;V oCAv練T[^"UUٺESoI;.k]0e]d򀣭,s>N >VyBsئeI\at{͓^WnA .x^qpiTPEvl5^\M4fUa|>T#` [8S K #ɂp8}LIsL4+ u'p<ܖ\NvWV xz_!M70Uw1  ͐Tu3㜣wM]VG!ޥTU4)R^.50ڳtJdJnpJ/h\SJf4(䑔B;JV:_H'I)+'VI)gx)EcR?/?3{W79}c]bUQ{IZv-JdN&WP!$XmhԶg xZ05,`| ngM _줚ƕASa|ÿ}E若oK 8۩'Gzڬp / d>% |y8}ϩjgʛDimqmE鷽\7-S;+ (_6R~i(Bp|RF\n4'/pp{$4 [T |݀3c+uc7xxW'bnnp3`Ocd^Yؘ"RRѫew,wѪdž Vt5e YT–بb"=܌B ,ZWkJNS6\Y T>Sv#BG Gӏoρ{k-p;t7пEx[y-w#]??mp#)E/ߧ݁S' ^[ym!ߡ C[Sr/e{yy($ v@ZI+.ٶ,!#Lt!5۵K]9+u خ2}kW92tBhr>P!˷q Zi YXXbyzƣ+ՕE/^/$rGRߒhxYtlaoIv]{K" xݥy4fYԤ䑸"$ah34Bz,X Ė8^L]DHfJY~Ԇ %[OwK4pŌN&#<9̰w:5V؂Ŧ|*ap>dRl!cRJ)EnTLGSx6RR%jr8?N)TcRS2dl.DX|8NJPFdN8,Ssp}QY>[nU]6tTq+SnoJHw 9 BXEh0ٜlJ&ws 2!4k~ [EV3n]lҭ&EJvѫ9?Q5)Nl>u/qbr9u~UA+v$ANđ;Fdw-Y܁;(d7>/j܀'z 7Wbo pB> p٥g|HD">m'47k߀Cm@ ]wYd#^D]CVr)p|R:H/I)WMJW[JLހY )EJJ 8yJ74-}pX̓R?<_g0Ʀy.7nv%\Dߐe*wŦ7?"фbtSعeNl%tpZ1,ϞPFlRG:0ΗYrя;W9|9k*vԪXSTYeu:?Y/_;_@Ѣ=VEgit#&@"lM>QI#BlktJX׊0_-%" 3jOt%_ZbTm`Aa͹J#Kk>MAB̷ù)H)s d}ң@%SO$[qzv@\YP%mR>iZUGvTYa< ojsrR-Te1רtꝩ[̓w6C:Fgӗ {8XY=,霭# [RN6tPsH4D?\寫RR?R[zd;?Y|4VfZNtY͖>Z*ɼlrx.'os~x8ÝWL:_]D.LŰoa ]VoYJ'd:Q٭8A兮_^ Q2[!fAEyNM]vͷ/nXK(m{)M8*&;-y59Z @! /3_ ?Mѫ={zρ{寁qəc{Qx //x+˒Nool}|Qw ?'Kkzܓ9~:lI; x 3+w܁g=)owuE W#ގ)R# B܀.to\_pJQ'++ixPW*1N)ݺEx_m.L5+=2pRpR Yg;[OJ[bbPo=O)]o#IJQTwrg{R9_pT|ȭIy"؜BCn.iD6nxE57'K6Q/:p'F3gTe4]Kf6-ݨ}zYrPJ4e-^Ζ_Q;!@Ļk%(,хbI6|Y3|  \Z>WS#*+R//jZ߲wvW+76XB [zlD! a s\$>Pc.`E<-:eLX6e;5ig W'NJJU'[eq3k0Bx@E(,IJvP$Ugm(DvsNkUeeUo \O x?>Ȫ x_Ez* MےN:L_7¿fJS)E7F8i>?U6p-O͝iDi۽?Pw˯[[j>xP_=SSwe{# )u 0z~5 (ڍ)wse'slZExw3Hu/ɸHrw~5Z z2nǿ-@_سKrA(w2NL"HJH'}H<;88F1Y!}"3s%G+#*)Y<0# p&$h^7ڟ5ܕH\>ߍ 8 ݀c:$3MG8N!p  Nk#ZM'OSc y30a_8G"vN N/|!w#aw#<#½t)ťG"`- cLԣqp)}p<09]>I)}_pzxYPs[-}(tJrpJ)ד9_ض<%a%T*-W~]hnMւPi9y41 ٶD"q˹J-RD'(%!,ptVķa Ub¦ +ǺF"/?~9>N\( -bo[jZo`5B¡WD&-6~QǛ}l)\͉ÿ6vjYsʸ gS*RyTU8PEB# cd)8Bg kۯʌ>U8nm U mi!wMny‘sa)m&Tks7n  Ůxe\wmbzc78p\C4'h3IU՝ 864𢮭p݀c^< <"|1ڤ헿aDx~pmz0FϏ'VREΈ5 W8s8dp_;hy"ƿg(ɓG'{}yNQt8%azPvDo(BزЕHEqK="jt?¶  -?džvH:J5FQǺN*'Qӎ2AK\Ux:pt݀SUE}F}$n=7x pz⹤ax-\)U{ie$5nhsaFl=^+YtܦJZzY3B܀GK[bŠ t>yd4ۓ&5qP iSiяBJpo % s!*pߧ׷.z2_= w{VwwT}XiHrӫtL}$ّC:xx)B'VR QrJ`B17)W{wg2'S oMrj6Rf>bT,/dgj)5nV1K`{tOZTzKNOwF2V2T ׼ݐfMA2mJUZae 9:h6ֲp𪎔>/̜Ǿ> }ǀgt)eLfǁp^-; me{>_՝ހplm4֩88ExDYOq5J/n:ܚ'DZQO8FEu^n^T#- \3{A?H)~c? )7Rh#nUײg`MJQ=Rrp*"gt|'pc)Ey-c+o)E [p}K9\pP|U,DT !C].\Fr>&3kI־Ղv'Bǧ'mKk|bkB7])JP6ĠWy/[ dwܣoODql~8n|XJypV|M)S+9_;{7#NrLd$^d˯I/8a❤E79w0i$&"7!J)Z@rxҪ#8ukf\}6#x%SKUl7R9lߍГR<Ƙ+,z 4<5)n3TCdQzݰ|oe #IdM!Oech s&t3cJ>2E, $)L]\ӱpX]Mn8 \Mtv楘ׂv˵qRYf6fH +\vU~Dc}ۮ$p2pylnsL} }ֆD՞cݎ=ZJ v]( {UcC8)ifK%OxŏPvhYngRrQSfx]Ӟl;:1)¤RhݪTFt5mto9֑u7{PF| 859]*_u^IWtTg݄KXۂ;,Zh9]pHYugL%.RV@o-ۊ6jiƟu.D "6’\8pnC b,:DUZu7eGB߀UZG>;?h OBbG7-qwsB^/0 8p' <@!*΋B{R5y˜ߋǁkh}pHG{DŽN#p]"pSσ<{R}DN){ "_)產8G J4ArQ᝔7p9\s8[[%jGּvIA:v$cN@Tsy6ץ"/).go\^r#RA+[(}*O\N%.lFdO8%nO ww*=.+crJ̳Z@l+ TU:$-3QBig'}. g ¯%vJub}b7p0#E 1 vg6HSRV[f,=7NHwI0wn;BnQB- v/8 |@)9;E1ć)*,ʱ Cv, cȵfc,wS4+-{Ssxp<'B8ـ6 Z Ck{ɁBնGDSewtiN\=3U.Uw7UXZfÙaIZ@~J.?u_@y93zys#t+Tx7qKHNy.pDKcS`:|EF:#3:C wci;#n2@u.e/[lQ͚NIX؛Ҩac^>l ޤ2խwɍ`Yz ZlGYK9oؠ\RT3_\of.|Wt7W1w,#j褙)H~[90tJϳИ⡤F`haOWBRlIReR[Jqk}UlV9\pz]~1G;3F\IZx60aPETUZD=xOiI;y,3%(ee|@K H!Nce75~$k .PŮpoœ>z\7SUo2:~^p"T!pj{kh \M)u'aLN)uxAJ]SWڴ>b[S+8hzwfe Ǫ񪲮l/@m)|يҶIZ]nssCSݞ2GҪH)u^E, =eYlZfFVjV/ #kkTUT|_~s-cZBnnl`* |2pI(6pK ۵.N2-DĜpфОatVWQҿ!wc_ ]_`yk-(tm !pm\\zNfe=p{xdbǙ <- e?1ػ,oU*w ;2R22q`tT}mɓRb R6pOpJj[0^U-8(uJ)9wSnOJixhER7'gkN98K_r)%x_VSpR qx9\[)-;99\;9K-g fMw> -zۙ@ hZV:j>,5U]v*kn "3aR`_҅mG៵v0X- ]}xԬîVhڊ&Us+5$Qhŀ҅XwmR G#;)N)ENm^V#)EE:FrDE8Nq+^>#-qp")E}p݀z*syO9\'H }UU^FE 5w 9B8vWMp[] +pF|JlH;~mnrJ VY 3٢)G3Fߝe\̰BUYo?ס>1FCC# 28G-m~Sb TMrZ` V"*'!Kts0էL3b--Z˿"+ ̕%N}Ɋ\J$Zukuzt)oY7HWƫ=vszp=E7ȑ1pKSn 9|~//v{ jWU]Yn{'~|}@ד"{|ˏ>G/'"%=O<|x*:G8p#_S =pO)"R_iǃ.R lRRmY8p~&LդJM 3k3G9=wSG!J*/xYY8Ĭ*$$,/ KE8%nOPL^t-An.b0sji!،,]vwB*I췟?62U~G߿ykZv$r[漅O *e·5 펀b&g&إ˛ȕcAyط->:Q}k~l&\֧׿կI/_|ZZڵ+rp/BO_,Vϒ=9#rydaW&r'aN]Fwgm/BZljtENqDc wXػK9mDS6EsD = =b s;)3EK.cOWoo?ŋ˥Zӯ5rGM_~|嗟}w?xYt5JLj9hfmT6a}7hںљxIqSG:@Hvld".(DRD"ᙘߌ sI59 ڹGx_m4$-m l]SF]D5le/CaG2J}ݏ_ȤA$.tyiDnI2|$e9w#p=mo'`+i̯*N "*&5˞s~bY[Xʌ[ZdZVZW)%Zv;+ ELeCJ6IgntR˿hP27 'WY$M!RşAr`O?կ~c #2R7"Kϓ})ϦZv"MXˇsWj׈z$vɰ弶`[] Yx5IlWDYx~~v.t`m'S :B#k'ߥ|];^¶p\urgUrr} +7_'?K^G_-~U?Ǫsg~sOY8Q(~C3N)э3^<\Gxvp AH)#W~V{CJ,|QpPD,w#1OfpG{?/]I)~wao n=ឭ{$Siݙ]}Vo붇]]\eA(F6}Ke]Vcq;L4ď>k7 .wgj*5KOջT+~#dO-vL -[[?? <3N mGS^uQ{qhݶ\.5gg?_~q2Xjt( ܜ < u˿o~=;}3nkvn=*#w1U}$·)p'[ҷD#qpމp=# %+'l%¾RNu/`R n9r?#㏖TӝXHD:Pm9˛vqXŅ u.,P*`r7rͰV bkЅX~'-mMWfz=-Ǔ"V]Is(r<:%(lpK*TG%]*`Όo>wqSX \\ /7#'ۧ)QkCZh )O/4,='K-/`E\U + { X2pd]%_Vg?ݝ˗/?2p2*z!ȑ;H6,Xe,d9/m]zvgΣBۈS uXH,Cnb7SN) UN) B RĶ|p/k$Ua2k*^˺J W[N)9SJ> R0XD*.f9ëe-DU3Fi{hʶ>SV.߾hZ ֺ=0H\͵녋WE@MOx8@Ca!ZVfH "X ȝ"* G;VjukH`j^~i\g=}3p= wzw/) p×/?˗/?)~p9\z7pR ZOWm ӫ}ȦKE{͸ ݕN;SXV#[ Di]rz#]ѮRW*x/Ō[).s*@k?y>=e㣏>zşH5_{~iug8./ĶlUipZmQZ.⸶B[*Gl/ʔ'5zP9xaSN N)RY\FWOuo/ &P5{BuYX-[VAQ N){v;5MOEdB3)EuK)N.a'7=JcLk ђ[#`99\ފ?GsDף9\Û?ҎTJn:n$ ޸3zY8|q!ɲ"Meؖ^Q+26gWz(3"f]?U1#y>6q{1;J 4< H*B ~9`u{Hv)3D71p=n\p=W1{bV7F.܍tG^;64|r ׾9۞"\* wTԒ.HfO&zGSQr&»FS8GxRW\J0fRFS&p&UpOnwJ-78>sRtN)GzF*;9\6lDX(6YS$Xc.DeuˊKWHQ!kǹўe{8hC=хBEYuٍ#r'(f{|Jr% wj\ro$ Z}" ^YHoB2. '7*sl6`"ʆn>e^hx5. y5G: ޺妨mQ2Inu7 @`_#"݇TS͛7x,O,XD ٠ @SO If:t3>;O?_lWn}|p3g V&g>M49 pi {vzۑ#GfO;bs}sM6m{Iu]gҥHhN^zi֭[{?>#c:b7ΦqBGxS:xk֬M̿8 P;e˖1 ry޸qcx- WW\s5{V^ @۷o_@ Z'_ZRs:zHQOex#kv_Lx52Eg5tVl{^.p#@G+8S7ҕ#eW5x5oIOe]t}z54zc @-P)sTb9,>= PB 2ƙѾY-KkԓhR1o,xK @*P<~>Q7 ЍiF4@Ƽ4tfp G @R'M.JT*å6/ м2Gѝ(gk7 @bꥣͻH-jL4@x2FWQ=bģi= @@-c̑F<:HэkN4@]H#ݧm.ʹZꊵ'-  @ nlZ = @U-cC-x @`G Ŷ1 @`T F>~6 @@x'@~.PX5 @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@! @@. x&* @@!JKKH @R樌 U @ DIZ# mF[ @i11F>(-P7џjxԎ޸ @@s 2FPO>\ >- 0ux:r0mt``m"6n @@s 2ơE#%@"P7qp,xDF&d'lhq(M.jioS @)9j`\;ms"w¶ @ё>iSF4T.cL>}g^Wl4#@[:#;+zX9?f6OO4D̙37n|-ՒnO$ӖC%@_3RƈNUGx<:t'- @lQԨeڈG5xD*ՈAHlլQ ]]]EHO  4c#cT*zVǺuEn+w׈A4={/ӶFK,jI2ڵmiF/XՌz7B^>z; y/ /Ç,a4Ƃǻ(~&=ʡt @M ġ[7EndXH8om'OpEE @ x';vlFd+W} 8x"gYRb @ l۶T0^믿tz8eӦMEPŋYfg7Z'@RfH#cZ>q$囵k˳d 3cƌUV=\{% @ ݻwNĉ*b6l3x?ߎUٳ/[ :::R͍h>tOӅq$S6^ou]OK#)F=Zb}qE8Xϛ7Ă N "Iƍ\)ȟّ sE#O_dϜO G͏>hg__Csx$`ww@Q;>gR0=1#iG{cZZKK @A:UDӀBZe3*i+'SZ#`z[~gg}G!dV Nxܹ]&ɴϓm_5x≫^}Iln HP{zz[vQlټy#+!s˩kxMWwĽ5^[iأ2ްc_vBƊV.H & u*[ߚ5k~r)^p,.֙Z9rȬk ʸ @"YXz衛toS+c`xʕ{VZY^:%K;vX#b^G[<%?&@)% x#LŽ1cƌGq-PL ]Q{WqQ;M' x,kmmmg=1 6޵k׼gyfY~wrQ;Dqt͏=ҍn̗qI?"Zk?ksjX @ o+^q<~ E^7e^,~kei[=1X^gL- @ߘoSLRzh̙3O%w ܍nرc1ʱ".}>;01GwqG_p$@E܏ߌxb^l٫qqGԆZm۶(F:^ؿOﬤߥq#@o1?q=/DDC/WXq`m/{&vK " G4D  @~Hs?nI̙sn5_aGbܴ7l؍L&Ah|X~1 #\yw쉑mfM:[sqX%]/q})4bsʣ۷o3c;w]_z @< ~˗#zDwwwX9i֭[{c^3BqxzF&Q/|b3Ӧi%K^G{><+'ƮU7 E}: 0cқޖ~{?WLC*W۷z}ef̹>:\cGg˸;_fa"΀9J{nI9/uΒL5-ǜwǦ?# .Y0_yyG9['byO_Y @)+ xGydz\~c1g@J<>#t-  @T<&_p˖-wNs@>mvr] @ ,n IENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/double_tick.svg0000644000015600001650000000305112674565025024350 0ustar pbuserpbgroup00000000000000 path4041-9 copy + path4041-9 copy 2 Created with Sketch. messaging-app-0.1+16.04.20160323/src/qml/assets/messaging-app.png0000644000015600001650000002143412674565025024611 0ustar pbuserpbgroup00000000000000PNG  IHDR?1sBITO pHYsbb8ztEXtSoftwarewww.inkscape.org<"IDATxi-YUkW9wz^4CCG$F# h0!|2QMLq $_ F4["h4Bߣ|߻U{]9uΩ۷X[kiEPxg9EZy|/\xgাy/ Ƴ/-@F?j/!B' / ~_,B@  ~Dbq0Kj,~.,R?&C{DM3xҐ~PjWA.ҟK oUYga7g(j~Bojzz7NZS8bMܙ"N~x)}5vE [s+^\u\ F>>DZu0 \G^&K+/S<:lF1;i)XlIK=@_n<]7Kj~135 kjLZ@_f9mQuYdّ9VN{sLI"A<"h01f%@gyO_|h?<Ive7O'7Q wgڦ?#ݦyo^f3kA@:ߞ+ȀRD-oF6ǜY'w`f;~;443ZZ'COY' m5Gobv0^zMѡ 0ȷO?jH`?j%?۟;|z~+PgÀ)g2ڠ[ k~fbP7̌'m~Й^JG$C]V~_o &Ea/=ѐg`ӿŰ3/=^On8z*(?$O`G|s'08G(}(9$3{s@W^>T+šŚk>z[=%J sOƗ9;^XL.^|2RD`mw8~X3saإ)F'REuxAk8{ʡg^@gZ1% Q4&usDQݤ?@Af1sB&ɢpGX-}d?MQRvggc;=^R\My/HM:$ V3SLrhtlw~9wT3~5b`'G?)]HYI?ֵFl[ /H+w#G _ #G?)rc4(Nu~Y#Y>)wQQprTf~w[?$cP Yw+3$S4,7 VWy#=$s_$`hDX!$Dr+DXOƵ1xGyn+/G'yaBޚ@aSՍE[c߽=hpF6RmraKF[iw~rNZ/'9Cʓ5FP^GFGam_/}\=ũA nS܎0rT@|0!cÊc/#UEZQ+,6K?/G }MI~ԓ6CY  )_ n~Ԑ۞tHh}@xXvKD_=3R4:.;fak?(rcY%v?JPwcP: ~?91ʏ~T%e`(N)zIy-ѿ2N,GWwF :=VAlQC8= #ܴ+T1-VĊR_BĠv9jV~Q1ٝbΉJ#J AmNRUM_^ۥ_ށ<Ŭ:ϰ#,>@S=O ϴqf/ n~FW!'{K=zI^)PA`AX$SBO}^H@;D95ow'f]=q/B N3g"Du?:E+/g;t2_!y?j!:yyγ;N9c> 1]|V7/z2<';Dl'n8IV~xLK\iD8oln)X$V#.OnBC)a~$ 'y (Vuޔ6"/J]czd"L 7fφՋTjYh~kO _9zza13)GbQcuHp]\yOANП#]e#X=\Oop%ۉ3='9;s.~Uz0z~@Dʬ ۈ͞\qٳ?_w~DL% {BU|H1|׋8x@͗ oE f^_R;03 -$o1F̘ y N>!& ?oRu6k|GF_CEzWfOR?\V`͍5ӟ3)ӛl<9ro7VԱ 8s[2fO13)B"^fhiպ?薾\3MpLUwzv:Nh䰱1R-0Ħ-fHֈrmӘ"FÝk7ڬnrfOW}3g]z91hv׶ul\`rA)= by9c$2̞3W|\ygs|c>w.y:0|v 4 C<,Tao~#i4/1~l=ފiwF%rF?vUC3"і%%$%)ڡ Mf8xz[X7)voq]Fx|"Jo~l;$OC PD89S4GIM ;&k76{b/4T\_UbVVCjz>Ƚd8>%?.;g5CS=nl+̡EdsN{Om9*7m mʲ1ӰY .ίer.Y`vSHI\f%c<{hVyoR?Wc!yu%^bZk_;|7le9GR1  3^/쉣=CO [Gw n?JY (h~l~6m|wS 'W!r!_W> On;1Jy;k Uu: ӏ;* {P#]]ӆ3`y[;@xr'7@_eܘ:m $2uf~=G7,qM޿V6{@)ms}:nm#?fx4s!RH[[¹-q$tuSToɷٲXeWfvO5 &_#6,X ?6`$p{`6u &yqoأx >⠌ٵXT%"8!ѥr_sxy_7"B(|BY[D#~czy~mNnx?wgwp}h/V<"hP)6{x LS6|FNTdJ'uD)' c=?7) &80B)""R@p~;sq}`H܍^ٓx?=ǝ [A}hJnuzߛ^вD ("=s?F'Uib]h !/ݘN^5^eg<^?J*!!DS/AL8ɱ 0Ϯ=~{ǎTwңZ[0IL̞ӅƥO~ /|6T?aOA"kC=fQj6[QXm=WϮ=>c[96#%#@C~ F,Zռ奆ugx|ѥpz9J/:E_R_{ 9"f2bEF _B^s8o.]u<ϯ,8(-R*}cI @#/CXΊ,Z=s͚i֑ƷdYtfȏ=_'{"z WFdٍ4̟3JJDJM&mǷYe-Vf)RRd)Zdٖ1 *"@!ωa03twǬu\sebS*1upi4tw~l}ο:T~4 Q h)8#x9:oj7è& 13g)R%jJ)0baB52mo:@,] řvыq`bg4ϖޅW㡟xWCӛO>1RdYQ K ǎ2 ƈG|36zbivV?d~ԌAOꯦ p $O:9tMр籫yj>~ ~Ƀ 8oc) <" %^2RziqQCfrv3aLˑbCn @7 zy]@Ǵ' BD)p%O3}ϕWC7?!;cH)R6LN2PnȜq&ss"[؈\6QSgKzEC ݯs_4̀O6{ZcyR_y/?w:,8<;)RGHXT:Xp)U.;zu׺-0^1"1D.]h=_2.葷}:,ݞW;-2~Һy%_xK?ϴU6eߦC7mҿYـ)% =AxaSy%_}铟Ξ>)[EfOBGa2 TC旝w5ozA\ϼ@EW4{.ykߢJR{5rUK#G8\gA?f&P_s #Jg+c=:zϽ9/K\Qoc>僱$(_Tѿ_^7xW8lXDQP.Xzxz/~W,Χ? ja 6wOe>~s{Orl@φzfK_ߖ~lq G}5+R࠳,M431I1k&R,.~!Q͌o"(;"A^@HCmHӛЛz!D?[KF`)Ph_;Gl&Te7mum߲ g{Nb)0;pnYH('yF@O@[?*qs^ 'Xtl':П,[O{C M&;i1%%!i^u~jяf ~ķjt,ł-QK팰!w9b 2Ǭ-Jl~kՌʎM)?>nӏ}[%†NsDQy.qsí*~l4JT~hx&M5 ODp'E#X +Q:6\-c ;^ЏrsX, %a_Y4lGhOǺD@4:Ml Mя!үatVGq"l9'PJ h~$†G?at O-ӏDW]9oi|RQqكa4LvOƫaoJWG?9$GkWp`(+U=rAM%{ ,-~Tq]GR_ͮ~߭âxYJY7>Ũ5bG/oM + яZ#6N Bcֈ Op9- #6Vw~gQa".S/WG?JBJG%3j? B'+=Bǎ U~Z}K"zCr@f։'E<W%*rh|BmcDX#~4Cߵ,_o~l~#(B|"2. Bd"2AtBЏol~#+y6V f=/w~NUCmw~KcE"SB1 Sׅ~{ gꙅ~Ȗitgҟ5l׾gӟ-8S+ }?Nm< BOVZ>ޞ~+ B臑 ސw~'GNF^Xve( BKpJ$* B{c-QA,_诙~w+߿KB&(%>Q{~!A!ޛIENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/blue_bubble@27.sci0000644000015600001650000000013512674565025024556 0ustar pbuserpbgroup00000000000000border.left:135 border.top: 27 border.bottom: 48 border.right: 135 source: blue_bubble@27.pngmessaging-app-0.1+16.04.20160323/src/qml/assets/green_bubble@27.png0000644000015600001650000002015212674565025024736 0ustar pbuserpbgroup00000000000000PNG  IHDREbsRGB $IDATxk\ys셢hGTj F ?ĵiőlҴY5Vڨ@[-Ph hj 6$BV[KV$²6i,RfNΒ2I=[#,g{N$mG9z;i{s7EmQ[rW4 }mwM]6 @M MoxEiϖY׮E\7+}.jLN}NB?kW+??,|7Z/}?~te7MӾo/g @׆@15mlK7YϗF.:x{|-h[bTbq*^Ivn4i=ۡ:ĭW6ۺƓe#Ci{kƈGmy;s}6NGk6n O= @`w 2.4#A~kF{ȉߜ^}[ ~> Xl @,DG]bF<{ @,(5ol-gg/طofG @ [#{rn{RC! @epln6kY~6 @@@m9x7Ƴy1k/ @B`Jŵ @Nm?Y8G @Ÿwm8=8 @޴|G vڶ_:9 @ [`n @R#qeTKLm @lFZV xd3Gl lhr @ Gz.N4+eGS-;1ۓ9"stm;.eN lfX)K뗦+kH5JY2mA ĊCӶOɥOjɇ֑vsp#>?[È? @ _TmOu]oWKH|ģH$>/  @ ]`1RS6=t -0\i]kJxJ厅}fz̅ @,Ylq_=ڶu @(Aqbc܏b"P|/]7:o̱ů~Y_UH[`o^'+tDqk1\ ;Tw*n?C!_ogG^|fxz @;?4?_]8Ӻ"m$ͥ&jGf%{ p |CKšḘd})::W`b<.YG>bx,<^\Z2,1>|@ki>/i] W p5Gc~ߟY29NGW ¯,5[~Ïi&i1\PѶkLJ=?2Z^EvH >;r׵?l,l,5+O6ݡ]^Ѷetc_uD7m{1t#W  nܑΦ11L<]qL CM]|ڮ98#) #Grěϗ7xneĵW+. H#t疻}롣Fx\^9v'2!&Amm+F9t\9G]z#x MvqyqrSO^F B\}S>lFdaG؟Jh[W  {bݏn4#@9i94nwz.N, tcOzwz߻౛~{@ |=z?].S.h]eף/wꪓa!ah<'hG9\gxt<1Xtu%iˑmJ/vgO|?׽ן'xOk\}b$䯔C)k~Ӎ71csǾ1tsq?|^\W WW @@@Ytڷw~eE(6<6~ɏx(\ف8vt$oȧ HYt o0l,֏[Gkzs?k{6@HԊc[Sfʫ+`tt>Gz#N?ݧOȉ]B]OGCxڱqcZoLlhs&Σ|v_3^·G2v p =sg~"&]W6N([vՙ2{|]1M}~?W/E+IENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/red_bubble@27.png0000644000015600001650000001537312674565025024421 0ustar pbuserpbgroup00000000000000PNG  IHDREbsRGBIDATx}g]n};1%S:kGfb [ Y(8F!q&"1 l,"ckJ ӎmz>t][Ozz~'YRJ9^;Rkig`?>5Sɮ{T˾>/ym޶qȱζ^ d  @` mZ}]\6EkO[[TR[[RZ;2$*  @8u[fFoks_}w.fQom4s;ܢZ|1X9 @v 7U~/ޏ 䌷og?&4=^ @4vGș@ځ~x8Yy?lO~ſN;1:sx# @`kO$x{e6f @#Ўxnԏްy/|IZI_8CX1 pnٯ8؅<)x̝@҅> @)<^߻'v d.| @:~+W~zE8R!@$0t~vct= @`u|"cj~б5;8vC1Cu/ߞy~|pСA @Eø/jï̺ @&#\֘?C𘌳Q  @9c\(n Cha̎6S @' ]})l;Y @& ܱc6q6$ @$RzI 0 _vԭۘ @e\Z( @n~e2 @;tkRM<"@&'foխ1 .P}`xa  @|ivG @pvvpi<$@3mW﫷 @"~4*]J @c_OV@ղ@xe  @tuʰ3d61w: +LLL2Ƴ[߿2U 60H-0dv? vPj+OLZ`.k<1im @vQ}0Q; ChWI?>]a˘86.0-jM_kJxtݙ @(q"xl|=doN!  @l'x]"xh;w_pOP<~g9<'mD  @+*=eƏ.KT:ۛ6,| @E 訮z>3'x /L_Sk2yL@rj>1<9o]oov#@,JtGʨ?}dW7e3.|c @isԗ۲}ymx̿y2M?= Of^=)pJx{7tB uu׮O=>~lQjwkׇz:laˍޱM:t;m_Æ7l3ɲ\%X_U7zǏg ۮo˪6kw߮K.{xL]_h/ſ-O6_uC12|l9rp\K9woy/-煝񘴰  @[tYm|1#W-eC#8^ @H7Z/[+/D.:1{S})O%ʌ%YxӮq]Z]0fo,Uk~D8G//Ui~2_lcߜ{ۯ 37n x,}nt٪kۼ'.c?f9J{5iq^2qz @28ڛr|~m_9?Lm4o?޷uҸEYpD_`#ˮvܮaln!F՗_+t,18'"@e p]GjWo؋ӎO=灋,R}R,+}~-5+|v[6Hy|W^@e}.@qצghہ{5~kw?1:+}\c֏+\ko~M7[?܎Ij;c_h<4Y<|֓+\`im㺥ZնKxkrDz8ub㬖%.,pө}߿؅ BƓ}_?Mnq!'֌"@ PwZ;˸v;fzѫTwۆV*΢?獋<M p zOo>2|v6gYgJ?fцG},  ꎷ^v;vٯW/q%sFpY϶=w?9crF&@e&Pwo+O=sE/bED,IENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/red_bubble@27.sci0000644000015600001650000000013412674565025024400 0ustar pbuserpbgroup00000000000000border.left:135 border.top: 27 border.bottom: 48 border.right: 135 source: red_bubble@27.pngmessaging-app-0.1+16.04.20160323/src/qml/assets/grey_bubble@27.png0000644000015600001650000001400012674565025024577 0ustar pbuserpbgroup00000000000000PNG  IHDRCu;sRGBIDATxol]Yڎ/jB9E4/*Q4D%WL $$lZ2 1G T^I5JKbR-j<Ry<_m @z;v|[\1x=zX&: @>Ng]Mrͭtאx@C 9._O?[. @[e6q߅OHx\*x @/; @@hGYU-S8 @Ȍ؋.d| @@^jZΠ @[`ttL /  @9Hc8z "!@I`zrrrg;ݾ텟 @<^x/% Jm<@mAM5Ŀo  @aٹs6qw~+'~aE; 7޿?qS30 09r5c,\N$21jɡ @@ r |u#O?i5 @C-|^hWG{pС/#mݍ d/dqMh/ٳ,-~u @z:Nرg~fYhW˻ƣK1 @` =:p+K{ҥ/={ Ν{<'k @VLo{{رco=1==/ovvg"Hv_Yr<Ϗ+7g},Y+9 @7v.k-ۗyfLg_|;ߖy~*rə8399y.7t$xlh |@`o~8;Жڱ3 Ήʉހ}))xՠ 3T>P7ur@ GAȅ |(LOƿ-)'x0+B8y/~6`5 k2V{͟7  D+}s>~'A܇~osf9>9~}+ϱ౒ @/9r8 })09=< ASN}_&| J.U}o;Wάe(yt*1{0L`pR笃aeo\ a|Ǐd$||r.>|d;LSN @zN8q˗'m~mM<:a4lT ?񩌳kcmgbc9>ٶr{Jm @`UqWz-q^J69rb6?[+xը pMp>Y~ef?ڹsCo3n<lJ?IMlTd.*oʗi ُ_>[`/mמ?տz ӽ ˊPf9+fu~t.x կ @`ڕ/كO$D{2m7O^9cmcNl"'/?'c /^Z$pa6*X@ܛr'|ܻOu9++_l!H_$@VHMy0D1H 'N$u[N0o'@'оvҥKg~1~laƑ,caSߴ$@d~ُ'e|'w [. x,7 l̀xH;Zw)k ?zs1 EO !b|$[8r[o}ͼ<1cc~>M"O'f'l|5Ͽl]҃Ra  @` s%h|.W|.KT~]"6IENDB`messaging-app-0.1+16.04.20160323/src/qml/assets/media_bubble@27.png0000644000015600001650000001330212674565025024714 0ustar pbuserpbgroup00000000000000PNG  IHDR[KW5sRGB|IDATxO^I ,iZY]vOAOMzAXB6ZB.(.Ebдnۍv3&1Iig~3Y.8qb}ss{ps>+++vhnm+_Y]};xen^ @O'=5_g:s?7viv;s8sqvq_s;o߾gΜ9=w @uΝ;N .<5W7v> @DӧO{+[ǿx\ո @{''CnxYlߙ7dBN`+KS}GNCq(|Gy 1&:~~w=m @PW^~W~޵++[[[߼ @O*0]=ܵ ;Oz`GN`^{uryR// @;?{וo-b!@6oٳgs QDlX  @`7_[:? zWǮ: pEcp|  @`ˏǮ<__e^lp @@F`ˑ^gG%@W/jG㿪E< :Aw7WOZpYWWWq  @T`~?C\kܹs?tOSio={ocy='s[++yL|,WWo~ǿx> @~h{𩧞z O1r٥7  @W[1qcǎ}u7wo 0/xg{; @+Gyys^ @JY0?->Vp\'Ou…ߜr @ώ|{ 8'x;9;[ĉ뛛?d}i> s["~xr<^}i|۸I&@K-uݤ/Š +7P1߾0t>;,f݃hAkZk0{e\7ű]/[qm5#[~FM"Whwɤ2F7 I&6 "CveJ#Fb#kCb.&{;7v\HR&:y+iNq)EXBykDIj{n%U",n y62Wc ֧j:!XG6?c ꒒tuC mA>  EǏFqhcǞT:.i g/ּ9PmDHª&E`=ǵO)&0MHu/ ~%"MG$g;\j|();o߆ZQVJ=U߶ؒ!5>VGN6ˣ=䅫v.Xegx&F8Px.araT-;_ɇ"n@!l,cF!VOnp,o>@4/[F @x.{ q8_6VDXnϽęRLjXSdF V=%,"4֟SXs^=-%^Xh+.[ و[.)fV&$;>O4AD7fJqG}Li tli+~ڍBq -Vx+S,#%Vs#n׎|Bp$ddw/n*UQ%pĘK"X~)reC,,4O ~Zh˥A\̩+d$ ;4Uz)Ynma7H8VD*AM hO@]l" Og欛]ϻߴ)v,ؕĴҾL[f)r .#GKUi!eZz֡&M je1+N8%ٹe,3e#̗ Ul&n0M%'WM*HH{P5}G,(Z5^qvILjHOHM` ;5r{\FrUR;b*#,QTzK@/Q!BVς :eTI&7unB;j/L8HSij+.#*LZBxg)᫑uZj">7E+\HC..JYGns矉P2]SeW6%$7Ճ4|% ԕeDfNhD " FAq:"]%& GI9"C>Y1J3Dj1*1 3,]8 #ap"ِ,X5k ؞H3x :(F#w/(fLd.w_ _Gnh4Rv:Bp:IiBjxb^c60ThS*Lo+W$2/+e;?{U5.aF~~#΄K0F-,FݟE~{nF[ǸJJW 0o0.C^3Wdw</BP?{ո[EӤȘ N4Wb ynϟ$۱ی8acsi:-!n@j`)Ȓ1vƍrE&Y$\u/ĥAUάV0khLq[p%"$sTd +"N5eRe"qMδ"&' SuS GH&+oRvZqRGjw/5$} Ӏ57LKgt#B 3J!QI֨?JN&԰j@I 9jb2hQ*d r<%(Umxb+?JG]yer*cw xdQ؄h3GA1t&, u(ɝn\+bS[Cɂ7a:#.t‡I[kŲ۠ ظ>Z7F嫫[gZ]un6p2v1|ElXZ'*Uǫ^ ¤SBUJcf"laDsI`*_B* m{ܲՠ u60l--YAلb%NL0582DYqG|w9@2<< &-i2h\¶~t'3G4lcJP+ ܩL ׯ?}q?ܻPNkdѯ _]\3FӂشfQ`t#hbZ3owYzoU.SV6p3d?UH(L-FyXkERQ-x$2UC#"z՚]y}ǿO Us UQ~N=O{8RmgnKahA}b1bGv/UͲ|\JzzvuT|ӿKDYu#U/+mVo3&f)@Χv? X =*L(1]A[r/O~>v~v~ea "C!HV|pۆœ'﮸hlku ϵ]6HaNhkS 6ί^9\~ [?goE}t>ѣ~z_}W/߼zo4`b?R,T -aըNEa<">yT;IP#JJ&oܻs߾ m˲e|?ӳ_ݛo,ߟ65~Oʏ2C-(oRq*p 0A)Gp5uJX[,ceݸsozv,`չ{?iC޼~n=NdWt;9{uPO!{DFd Ud( VN~f+P>&ɑ}o{XO?P+uj oݻwoJ9m\u퍍4A8~敻}/=yP}ƞ&Z V49:O?.^%$mNQLv:ֽ{}<<+{?vF(\zO~ϮВ ^kJ+^hlT#G!R]V{ȼyR޸5H,+ZC5]N|SaĦ0X_ߜ9O[_v6ֿz5t2hS%2;@Mѓ")Fa4QfhB~t@ "l+muT@veS7B<1h6+Rc`ڝ[kK0 pD-ƙ?bܢ,ʽ3pζi ncJM ⾙JƩmaD4Z:XQ1njX'4ccV*Hw^K 10\G}H~q$9aӠ#QhfQWeQմV"UtK5<Cd L\: .oRRगp~*J̦IKP 3΀w^1*2Q))W͚?JW>w(%愃hH<(Cۻnj!Q1Ճ%2 85Q0tAJ*9+`2mPV'WIk|ɼL4-ӊH_ˆWFC`t';+7)MA 76cpyy>ZltT)@H>.%'S)֨{`B@gy Ðc3lؔ/yA[6͓A!<0 j(|16#Bi raBWmQ!3e1)M[Qo> $+ri2h7NQJR1y7R]p-юAv1qe *Nqʔǀdۃ9bS׋/~=$a%<+Sũl_T&̀ypL%.4 9J#'=h u zn6mi^؆Nb5}ˢ< O/Rw>.LǶ޿{owoK"NT*oy3FlSĹ]à۝v§c!GIx~5 J$KZ~yxyjbY!(]`E 3w2,dԌxZJLϥƻ RYm99Pý&IYY+GњW5RrvS5&L},yk1V5^N+fVTn)wώrZ}ԍM*`h2TkqH2; y-/V>j0LHTf lAj LsF7N2tM=ъ6nJ dj2QR2Bm;\M?&B*;`KuVfVٿ<̬X3n h' t;`gė}13%O7EdUck%-;Ӥ 죕 JiSb iPQJ'%xy,ќ2o$m_@F[]`)ſ3b< ZO,9ʹ Ҽ:Ҍ ׳fFA26++)t.nAy$e<8 b-e6LQy $oz\);'tIB6 R~ iJ16cl)`:J Rk6D|:ʌF09ifϓ&)D (&um_ec/K^- o7*ri-]ӵ,J` FG6Ԧ 菻 yi5ӻdj䁧?SRkV$iVZU3ª*[M.HђheV[{mpј^EV5@a)h(GJўM S>-7ųy,P즖s3f+xY]/Ó:wPX24__XyelRt<4etf@O؇F[«fUw7xI',9M /C$wȈŁY'Q-芲QzZ8A ]a>ĉ5ӥF7pj8HYy>}\(95Mײ; L0phK'&Tmw*vO+OYe VrME4Q c,`5t)Kͬ0,pnWQS9( +AbsAbC3b6%IٲybY*acEMm><:2rN#Ƙ^֡'V8 vgWs\^+`*f|Zt;``B9h<ōR Nӻv)8Ƴ͑%2r&]r/X.)#@TT&Դa)li8@i6"\kzGdY8$y0ey}' 4;I2WrHC4N`O~5y|.91xQ鰶Kpֶ.a?N.MH#u SaZt>R} U:K_ImqQ"Ѽ߅`\ WD߼bzf-@ӑiT#/[GOg(%rerVHy<4a53rf|%$-ȐL'>)e:V"xքO5fAq;H8II%M禪+WyKXHc>4&ɒY0$wLk| oU var html = linkify( text [, options ] ); // // Arguments: // // text - (String) Non-HTML text containing links to be parsed. // options - (Object) An optional object containing linkify parse options. // // Options: // // callback (Function) - If specified, this will be called once for each link- // or non-link-chunk with two arguments, text and href. If the chunk is // non-link, href will be omitted. If unspecified, the default linkification // callback is used. // punct_regexp (RegExp) - A RegExp that will be used to trim trailing // punctuation from links, instead of the default. If set to null, trailing // punctuation will not be trimmed. // // Returns: // // (String) An HTML string containing links. var SCHEME = "[a-z\\d.-]+://", IPV4 = "(?:(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])", HOSTNAME = "(?:(?:[^\\s!@#$%^&*()_=+[\\]{}\\\\|;:'\",.<>/?]+)\\.)+", TLD = "(?:ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)", HOST_OR_IP = "(?:" + HOSTNAME + TLD + "|" + IPV4 + ")", PATH = "(?:[;/][^#?<>\\s]*)?", QUERY_FRAG = "(?:\\?[^#<>\\s]*)?(?:#[^<>\\s]*)?", URI1 = "\\b" + SCHEME + "[^<>\\s]+", URI2 = "\\b" + HOST_OR_IP + PATH + QUERY_FRAG + "(?!\\w)", MAILTO = "mailto:", EMAIL = "(?:" + MAILTO + ")?[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@" + HOST_OR_IP + QUERY_FRAG + "(?!\\w)", URI_RE = new RegExp( "(?:" + URI1 + "|" + URI2 + "|" + EMAIL + ")", "ig" ), SCHEME_RE = new RegExp( "^" + SCHEME, "i" ), quotes = { "'": "`", '>': '<', ')': '(', ']': '[', '}': '{', '»': '«', '›': '‹' }, default_options = { callback: function( text, href ) { return href ? '' + text + '' : text; }, punct_regexp: /(?:[!?.,:;'"]|(?:&|&)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)$/ }; function linkify( txt, options ) { options = options || {}; // Temp variables. var arr, i, link, href, // Output HTML. html = '', // Store text / link parts, in order, for re-combination. parts = [], // Used for keeping track of indices in the text. idx_prev, idx_last, idx, link_last, // Used for trimming trailing punctuation and quotes from links. matches_begin, matches_end, quote_begin, quote_end; // Initialize options. for ( i in default_options ) { if ( options[ i ] === undefined ) { options[ i ] = default_options[ i ]; } } // Find links. while ( arr = URI_RE.exec( txt ) ) { link = arr[0]; idx_last = URI_RE.lastIndex; idx = idx_last - link.length; // Not a link if preceded by certain characters. if ( /[\/:]/.test( txt.charAt( idx - 1 ) ) ) { continue; } // Trim trailing punctuation. do { // If no changes are made, we don't want to loop forever! link_last = link; quote_end = link.substr( -1 ) quote_begin = quotes[ quote_end ]; // Ending quote character? if ( quote_begin ) { matches_begin = link.match( new RegExp( '\\' + quote_begin + '(?!$)', 'g' ) ); matches_end = link.match( new RegExp( '\\' + quote_end, 'g' ) ); // If quotes are unbalanced, remove trailing quote character. if ( ( matches_begin ? matches_begin.length : 0 ) < ( matches_end ? matches_end.length : 0 ) ) { link = link.substr( 0, link.length - 1 ); idx_last--; } } // Ending non-quote punctuation character? if ( options.punct_regexp ) { link = link.replace( options.punct_regexp, function(a){ idx_last -= a.length; return ''; }); } } while ( link.length && link !== link_last ); href = link; // Add appropriate protocol to naked links. if ( !SCHEME_RE.test( href ) ) { href = ( href.indexOf( '@' ) !== -1 ? ( !href.indexOf( MAILTO ) ? '' : MAILTO ) : !href.indexOf( 'irc.' ) ? 'irc://' : !href.indexOf( 'ftp.' ) ? 'ftp://' : 'http://' ) + href; } // Push preceding non-link text onto the array. if ( idx_prev != idx ) { parts.push([ txt.slice( idx_prev, idx ) ]); idx_prev = idx_last; } // Push massaged link onto the array parts.push([ link, href ]); }; // Push remaining non-link text onto the array. parts.push([ txt.substr( idx_prev ) ]); // Process the array items. for ( i = 0; i < parts.length; i++ ) { html += options.callback.apply( this, parts[i] ); } // In case of catastrophic failure, return the original text; return html || txt; }; messaging-app-0.1+16.04.20160323/src/qml/MainPage.qml0000644000015600001650000002516212674565025022244 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem import Ubuntu.Contacts 0.1 import Ubuntu.History 0.1 import "dateUtils.js" as DateUtils Page { id: mainPage property alias selectionMode: threadList.isInSelectionMode property bool searching: false property bool isEmpty: threadCount == 0 && !threadModel.canFetchMore property alias threadCount: threadList.count property alias displayedThreadIndex: threadList.currentIndex property var _messagesPage: null function startSelection() { threadList.startSelection() } TextField { id: searchField objectName: "searchField" visible: mainPage.searching anchors { top: parent.top topMargin: units.gu(1) left: parent.left right: parent.right rightMargin: units.gu(2) } inputMethodHints: Qt.ImhNoPredictiveText placeholderText: i18n.tr("Search...") onActiveFocusChanged: { if (!activeFocus) { searchField.text = "" mainPage.searching = false } } } flickable: pageHeader.flickable header: PageHeader { id: pageHeader property alias leadingActions: leadingBar.actions property alias trailingActions: trailingBar.actions title: i18n.tr("Messages") flickable: dualPanel ? null : threadList leadingActionBar { id: leadingBar } trailingActionBar { id: trailingBar } } states: [ State { id: defaultState name: "default" when: !searching && !selectionMode property list trailingActions: [ Action { objectName: "searchAction" iconName: "search" onTriggered: { mainPage.searching = true searchField.forceActiveFocus() } }, Action { objectName: "settingsAction" text: i18n.tr("Settings") iconName: "settings" onTriggered: { emptyStack() pageStack.addFileToNextColumnSync(mainPage, Qt.resolvedUrl("SettingsPage.qml")) } }, Action { objectName: "newMessageAction" text: i18n.tr("New message") iconName: "add" onTriggered: mainView.bottomEdge.commit() } ] PropertyChanges { target: pageHeader trailingActions: defaultState.trailingActions leadingActions: [] } }, State { id: searchState name: "search" when: searching property list leadingActions: [ Action { objectName: "cancelSearch" visible: mainPage.searching iconName: "back" text: i18n.tr("Cancel") onTriggered: { searchField.text = "" mainPage.searching = false } } ] PropertyChanges { target: pageHeader contents: searchField leadingActions: searchState.leadingActions trailingActions: [] } }, State { id: selectionState name: "selection" when: selectionMode property list leadingActions: [ Action { objectName: "selectionModeCancelAction" iconName: "back" onTriggered: threadList.cancelSelection() } ] property list trailingActions: [ Action { objectName: "selectionModeSelectAllAction" iconName: "select" onTriggered: { if (threadList.selectedItems.count === threadList.count) { threadList.clearSelection() } else { threadList.selectAll() } } }, Action { objectName: "selectionModeDeleteAction" enabled: threadList.selectedItems.count > 0 iconName: "delete" onTriggered: threadList.endSelection() } ] PropertyChanges { target: pageHeader title: " " leadingActions: selectionState.leadingActions trailingActions: selectionState.trailingActions } } ] EmptyState { id: emptyStateScreen visible: mainPage.isEmpty && !mainView.dualPanel } Component { id: sectionDelegate Item { anchors { left: parent.left right: parent.right margins: units.gu(2) } height: units.gu(3) Label { anchors.fill: parent elide: Text.ElideRight text: DateUtils.friendlyDay(Qt.formatDate(section, "yyyy/MM/dd")); verticalAlignment: Text.AlignVCenter fontSize: "small" } ListItem.ThinDivider { anchors.bottom: parent.bottom } } } MultipleSelectionListView { id: threadList objectName: "threadList" anchors { top: parent.top topMargin: mainView.dualPanel ? pageHeader.height : 0 left: parent.left right: parent.right bottom: keyboard.top } listModel: threadModel clip: true cacheBuffer: threadList.height * 2 section.property: "eventDate" currentIndex: -1 //spacing: searchField.text === "" ? units.gu(-2) : 0 section.delegate: searching && searchField.text !== "" ? null : sectionDelegate header: ListItem.Standard { id: newItem height: mainView.bottomEdge.status === BottomEdge.Committed && !mainView.bottomEdge.showingConversation && mainView.dualPanel ? units.gu(10) : 0 text: i18n.tr("New message") iconName: "message-new" iconFrame: false selected: true } listDelegate: ThreadDelegate { id: threadDelegate // FIXME: find a better unique name objectName: "thread%1".arg(participants[0].identifier) anchors { left: parent.left right: parent.right } height: units.gu(8) selectionMode: threadList.isInSelectionMode selected: { if (selectionMode) { return threadList.isSelected(threadDelegate) } else if (mainView.bottomEdge.status === BottomEdge.Committed || !mainView.inputInfo.hasKeyboard) { return false } else { // FIXME: there might be a better way of doing this return index === threadList.currentIndex } } searchTerm: mainPage.searching ? searchField.text : "" onItemClicked: { if (threadList.isInSelectionMode) { if (!threadList.selectItem(threadDelegate)) { threadList.deselectItem(threadDelegate) } } else { var properties = model.properties properties["keyboardFocus"] = false properties["threads"] = model.threads var participantIds = []; for (var i in model.participants) { participantIds.push(model.participants[i].identifier) } properties["participantIds"] = participantIds properties["participants"] = model.participants properties["presenceRequest"] = threadDelegate.presenceItem if (displayedEvent != null) { properties["scrollToEventId"] = displayedEvent.eventId } emptyStack() mainStack.addComponentToNextColumnSync(mainPage, messagesWithBottomEdge, properties) // mark this item as current threadList.currentIndex = index } } onItemPressAndHold: { threadList.startSelection() threadList.selectItem(threadDelegate) } } onSelectionDone: { var threadsToRemove = [] for (var i=0; i < items.count; i++) { var threads = items.get(i).model.threads for (var j in threads) { threadsToRemove.push(threads[j]) } } if (threadsToRemove.length > 0) { mainView.removeThreads(threadsToRemove); } } Binding { target: threadList property: 'contentY' value: -threadList.headerItem.height when: mainView.composingNewMessage && mainView.dualPanel } } KeyboardRectangle { id: keyboard } Scrollbar { flickableItem: threadList align: Qt.AlignTrailing } Loader { id: bottomEdgeLoader active: !selectionMode && !searching && !mainView.dualPanel sourceComponent: MessagingBottomEdge { parent: mainPage } } } messaging-app-0.1+16.04.20160323/src/qml/ThumbnailImage.qml0000644000015600001650000000242312674565025023444 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 UbuntuShape { id: thumbnail property string filePath signal pressAndHold() width: childrenRect.width height: childrenRect.height image: Image { id: avatarImage width: units.gu(8) height: units.gu(8) sourceSize.height: height sourceSize.width: width fillMode: Image.PreserveAspectCrop source: filePath asynchronous: true } MouseArea { anchors.fill: parent onPressAndHold: { mouse.accept = true thumbnail.pressAndHold() } } } messaging-app-0.1+16.04.20160323/src/qml/ComposeBar.qml0000644000015600001650000004611512674565025022616 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import QtMultimedia 5.0 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem import Ubuntu.Components.Popups 1.3 import Ubuntu.Content 1.3 import Ubuntu.Telephony 0.1 import messagingapp.private 0.1 import "Stickers" Item { id: composeBar property bool showContents: true property int maxHeight: textEntry.height + units.gu(2) property bool canSend: true property alias text: messageTextArea.text property bool audioAttached: attachments.count == 1 && attachments.get(0).contentType.toLowerCase().indexOf("audio/") > -1 // Audio QML component needs to process the recorded audio to find duration and AudioRecorder seems to erase duration after some events property alias audioRecordedDuration: audioRecordingBar.duration property alias recording: audioRecordingBar.recording property bool oskEnabled: true signal sendRequested(string text, var attachments) // internal properties property int _activeAttachmentIndex: -1 property int _defaultHeight: textEntry.height + attachmentPanel.height + stickersPicker.height + units.gu(2) Component.onDestruction: { composeBar.reset() } function forceFocus() { messageTextArea.forceActiveFocus() } function reset() { if (composeBar.audioAttached) { FileOperations.remove(attachments.get(0).filePath) } textEntry.text = "" attachments.clear() } function addAttachments(transfer) { if (!transfer || !transfer.items) { return } for (var i = 0; i < transfer.items.length; i++) { if (String(transfer.items[i].text).length > 0) { composeBar.text = String(transfer.items[i].text) continue } var attachment = {} if (!startsWith(String(transfer.items[i].url),"file://")) { composeBar.text = String(transfer.items[i].url) continue } var filePath = String(transfer.items[i].url).replace('file://', '') // get only the basename attachment["contentType"] = application.fileMimeType(filePath) if (startsWith(attachment["contentType"], "text/vcard") || startsWith(attachment["contentType"], "text/x-vcard")) { attachment["name"] = "contact.vcf" } else { attachment["name"] = filePath.split('/').reverse()[0] } attachment["filePath"] = filePath attachments.append(attachment) } } anchors.bottom: isSearching ? parent.bottom : keyboard.top anchors.left: parent.left anchors.right: parent.right height: showContents ? Math.min(_defaultHeight, maxHeight) : 0 visible: showContents clip: true Behavior on height { UbuntuNumberAnimation { } } MouseArea { enabled: !composeBar.audioAttached anchors.fill: parent onClicked: { forceFocus() } } ListModel { id: attachments } Component { id: attachmentPopover Popover { id: popover Column { id: containerLayout anchors { left: parent.left top: parent.top right: parent.right } ListItem.Standard { text: i18n.tr("Remove") onClicked: { attachments.remove(_activeAttachmentIndex) PopupUtils.close(popover) } } } Component.onDestruction: _activeAttachmentIndex = -1 } } Component { id: microphoneWarningPopover Popover { id: popover Column { id: containerLayout anchors { left: parent.left top: parent.top right: parent.right } ListItem.Standard { text: i18n.tr("You have to press and hold the record icon") onClicked: { PopupUtils.close(popover) } } Connections { target: composeBar onTextChanged: PopupUtils.close(popover) } } } } ListItem.ThinDivider { anchors.top: parent.top } Row { id: leftSideActions opacity: { if (composeBar.recording) { // we need to fade the buttons in when dragging return dragTarget.dragAmount } else if (composeBar.audioAttached) { return 0; } else { return 1 } } Behavior on opacity { UbuntuNumberAnimation {} } visible: opacity > 0 width: childrenRect.width height: childrenRect.height anchors { left: parent.left leftMargin: units.gu(2) verticalCenter: sendButton.verticalCenter } spacing: units.gu(2) TransparentButton { id: attachButton objectName: "attachButton" iconName: "add" iconRotation: attachmentPanel.expanded ? 45 : 0 onClicked: { attachmentPanel.expanded = !attachmentPanel.expanded if (attachmentPanel.expanded) { stickersPicker.expanded = false } } } TransparentButton { id: stickersButton objectName: "stickersButton" iconSource: (stickersPicker.expanded && oskEnabled) ? Qt.resolvedUrl("./assets/input-keyboard-symbolic.svg") : Qt.resolvedUrl("./assets/face-smile-big-symbolic-2.svg") visible: stickerPacksModel.count > 0 onClicked: { if (!stickersPicker.expanded) { messageTextArea.focus = false stickersPicker.expanded = true attachmentPanel.expanded = false } else { stickersPicker.expanded = false messageTextArea.forceActiveFocus() } } } } AudioPlaybackBar { id: audioPlaybackBar anchors { left: parent.left right: audioRecordingBar.right top: parent.top bottom: attachmentPanel.top } source: composeBar.audioAttached ? attachments.get(0).filePath : "" duration: audioRecordedDuration opacity: composeBar.audioAttached ? 1.0 : 0.0 Behavior on opacity { UbuntuNumberAnimation {} } visible: opacity > 0 onResetRequested: { composeBar.reset() } } AudioRecordingBar { id: audioRecordingBar anchors { left: parent.left right: anchorPoint.left top: parent.top bottom: attachmentPanel.top } buttonOpacity: recording ? 1 - dragTarget.dragAmount : 0 onAudioRecorded: { attachments.append(audio) } } Item { id: dragTarget property real recordingX: recordButton.x property real normalX: leftSideActions.x + leftSideActions.width property real delta: recordingX - normalX property real dragAmount: 1 - (x - normalX) / (delta > 0 ? delta : 0.0001) x: recordingX width: 0 function reset() { x = Qt.binding(function(){return recordingX}) } } Item { id: anchorPoint x: (composeBar.recording || composeBar.audioAttached) ? dragTarget.x : dragTarget.normalX Behavior on x { UbuntuNumberAnimation { } } } StyledItem { id: textEntry property alias text: messageTextArea.text property alias inputMethodComposing: messageTextArea.inputMethodComposing property int fullSize: composeBar.audioAttached ? messageTextArea.height : attachmentThumbnails.height + messageTextArea.height style: Theme.createStyleComponent("TextAreaStyle.qml", textEntry) anchors { topMargin: units.gu(1) top: parent.top left: anchorPoint.right leftMargin: units.gu(2) right: sendButton.left rightMargin: units.gu(2) } height: attachments.count !== 0 && !composeBar.audioAttached ? fullSize + units.gu(1.5) : fullSize onActiveFocusChanged: { if(activeFocus) { stickersPicker.expanded = false messageTextArea.forceActiveFocus() } else { focus = false } } onTextChanged: { // in case there is audio attached and the user starts typing, we remove the attachment // and continue the text message if (text !== "" && composeBar.audioAttached) { attachments.clear() } } focus: false opacity: composeBar.audioAttached ? 0.0 : 1.0 Behavior on opacity { UbuntuNumberAnimation {} } MouseArea { anchors.fill: parent onClicked: forceFocus() } Flow { id: attachmentThumbnails spacing: units.gu(1) anchors{ left: parent.left right: parent.right top: parent.top topMargin: units.gu(1) leftMargin: units.gu(1) rightMargin: units.gu(1) } height: childrenRect.height Repeater { model: attachments delegate: Loader { height: units.gu(8) source: { var contentType = getContentType(filePath) console.log(contentType) switch(contentType) { case ContentType.Contacts: return Qt.resolvedUrl("ThumbnailContact.qml") case ContentType.Pictures: return Qt.resolvedUrl("ThumbnailImage.qml") case ContentType.Videos: return Qt.resolvedUrl("ThumbnailVideo.qml") case ContentType.Unknown: return Qt.resolvedUrl("ThumbnailUnknown.qml") default: console.log("unknown content Type") } } onStatusChanged: { if (status == Loader.Ready) { item.filePath = filePath } } Connections { target: status == Loader.Ready ? item : null ignoreUnknownSignals: true onPressAndHold: { Qt.inputMethod.hide() _activeAttachmentIndex = index PopupUtils.open(attachmentPopover, parent) } } } } } ListItem.ThinDivider { id: divider anchors { left: parent.left right: parent.right top: attachmentThumbnails.bottom margins: units.gu(0.5) } visible: attachments.count > 0 } TextArea { id: messageTextArea objectName: "messageTextArea" anchors { top: attachments.count == 0 ? textEntry.top : attachmentThumbnails.bottom left: parent.left right: parent.right } // this value is to avoid letter being cut off height: units.gu(4.3) style: LocalTextAreaStyle {} autoSize: true maximumLineCount: attachments.count == 0 ? 8 : 4 placeholderText: { if (telepathyHelper.ready) { var account = telepathyHelper.accountForId(presenceRequest.accountId) if (account && (presenceRequest.type != PresenceRequest.PresenceTypeUnknown && presenceRequest.type != PresenceRequest.PresenceTypeUnset) && account.protocolInfo.serviceName !== "") { console.log(presenceRequest.accountId) console.log(presenceRequest.type) return account.protocolInfo.serviceName } } return i18n.tr("Write a message...") } focus: textEntry.focus font.family: "Ubuntu" font.pixelSize: FontUtils.sizeToPixels("medium") color: "#5d5d5d" } } AttachmentPanel { id: attachmentPanel anchors { left: parent.left right: parent.right top: textEntry.bottom topMargin: units.gu(1) } Connections { target: composeBar onAudioAttachedChanged: { if (composeBar.audioAttached) { attachmentPanel.expanded = false; } } } onAttachmentAvailable: { attachments.append(attachment) forceFocus() } onExpandedChanged: { if (expanded && Qt.inputMethod.visible) { attachmentPanel.forceActiveFocus() } } } Loader { id: stickersPicker property bool expanded: false height: expanded ? item.height : 0 active: false sourceComponent: stickersPickerComponent anchors { left: parent.left right: parent.right top: textEntry.bottom } onExpandedChanged: { if (expanded) { stickersPicker.active = expanded } if (active) { item.expanded = expanded } } } Component { id: stickersPickerComponent StickersPicker { id: stickersPicker1 onExpandedChanged: { if (expanded && Qt.inputMethod.visible) { stickersPicker1.forceActiveFocus() } } onStickerSelected: { if (!canSend) { // FIXME: show a dialog saying what we need to do to be able to send return } var attachment = {} var filePath = String(path).replace('file://', '') attachment["contentType"] = application.fileMimeType(filePath) attachment["name"] = filePath.split('/').reverse()[0] attachment["filePath"] = filePath // we need to append the attachment to a ListModel, so create it dynamically var attachments = Qt.createQmlObject("import QtQuick 2.0; ListModel { }", composeBar) attachments.append(attachment) composeBar.sendRequested("", attachments) stickersPicker.expanded = false } } } SequentialAnimation { id: enableRecordButton running: false alwaysRunToEnd: false UbuntuNumberAnimation { target: sendButton; property: "opacity"; to: 0 } UbuntuNumberAnimation { target: recordButton; property: "opacity"; to: 1 } } SequentialAnimation { id: enableSendButton running: false alwaysRunToEnd: false UbuntuNumberAnimation { target: recordButton; property: "opacity"; to: 0 } UbuntuNumberAnimation { target: sendButton; property: "opacity"; to: 1 } } TransparentButton { id: sendButton objectName: "sendButton" anchors.verticalCenter: textEntry.verticalCenter anchors.right: parent.right anchors.rightMargin: units.gu(2) iconSource: Qt.resolvedUrl("./assets/send.svg") enabled: !recordButton.enabled onEnabledChanged: { if (enabled) { enableSendButton.start() } } opacity: 0 visible: enabled onClicked: { // make sure we flush everything we have prepared in the OSK preedit Qt.inputMethod.commit(); if ((textEntry.text == "" && attachments.count == 0) || !canSend) { return } if (composeBar.audioAttached) { textEntry.text = "" } composeBar.sendRequested(textEntry.text, attachments) } } TransparentButton { id: recordButton objectName: "recordButton" anchors { verticalCenter: textEntry.verticalCenter right: parent.right rightMargin: units.gu(2) } enabled: textEntry.text != "" || textEntry.inputMethodComposing || attachments.count > 0 ? false : true onEnabledChanged: { if (enabled) { enableRecordButton.start() } } visible: enabled iconColor: composeBar.recording ? "black" : "gray" iconName: "audio-input-microphone-symbolic" onClicked: { if (!composeBar.audioAttached) { var oskFocus = null if (textEntry.activeFocus) { oskFocus = composeBar.forceFocus } else if (multiRecipient.activeFocus) { oskFocus = multiRecipient.forceActiveFocus } PopupUtils.open(microphoneWarningPopover, recordButton) // avoid dismissing the osk if (oskFocus) { oskFocus() } } } onPressed: audioRecordingBar.startRecording() onReleased: { audioRecordingBar.stopRecording() // if dragged past the threshold, cancel if (dragTarget.dragAmount >= 0.5) { composeBar.reset() } dragTarget.reset() } // drag-to-cancel drag.target: dragTarget drag.axis: Drag.XAxis drag.minimumX: (leftSideActions.x + leftSideActions.width) drag.maximumX: recordButton.x } } messaging-app-0.1+16.04.20160323/src/qml/MessagingBottomEdge.qml0000644000015600001650000000223412674565025024445 0ustar pbuserpbgroup00000000000000import QtQuick 2.0 import Ubuntu.Components 1.3 BottomEdge { id: bottomEdge function commitWithProperties(properties) { _realPage.destroy() _realPage = messagesComponent.createObject(null, properties) commit() } property bool showingConversation: _realPage && _realPage.state !== "newMessage" property var _realPage: null height: parent ? parent.height : 0 hint.text: i18n.tr("+") contentComponent: Item { id: pageContent implicitWidth: bottomEdge.width implicitHeight: bottomEdge.height children: bottomEdge._realPage } Component.onCompleted: { mainView.bottomEdge = bottomEdge _realPage = messagesComponent.createObject(null) } Component.onDestruction: { _realPage.destroy() } onCollapseCompleted: { _realPage.destroy() _realPage = messagesComponent.createObject(null) } Component { id: messagesComponent Messages { anchors.fill: parent onCancel: bottomEdge.collapse() basePage: bottomEdge.parent startedFromBottomEdge: true } } } messaging-app-0.1+16.04.20160323/src/qml/RegularMessageDelegate.qml0000644000015600001650000000731212674565025025121 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.History 0.1 import Ubuntu.Telephony 0.1 import "dateUtils.js" as DateUtils Column { height: childrenRect.height property var messageData: null property Item delegateItem property var timestamp: messageData.timestamp property string senderId: messageData.senderId property var textReadTimestamp: messageData.textReadTimestamp property int textMessageStatus: messageData.textMessageStatus property var textMessageAttachments: messageData.textMessageAttachments property bool newEvent: messageData.newEvent property var textMessage: messageData.textMessage property string accountId: messageData.accountId property int index: -1 // WORKAROUND: we can not use sections because the verticalLayoutDirection is ListView.BottomToTop the sections will appear // bellow the item MessageDateSection { text: visible ? DateUtils.friendlyDay(timestamp) : "" anchors { left: parent.left right: parent.right leftMargin: units.gu(2) rightMargin: units.gu(2) } visible: (index === root.count) || !DateUtils.areSameDay(eventModel.get(index+1).timestamp, timestamp) } MessageDelegateFactory { objectName: "message%1".arg(index) incoming: senderId != "self" // TODO: we have several items inside selected: root.isSelected(delegateItem) selectionMode: root.isInSelectionMode accountLabel: { var account = telepathyHelper.accountForId(accountId) if (account && (account.type == AccountEntry.PhoneAccount || account.type == AccountEntry.MultimediaAccount)) { if (multiplePhoneAccounts) { return account.displayName } } return "" } rightSideActions: { var actions = [] if (textMessageStatus === HistoryThreadModel.MessageStatusPermanentlyFailed) { actions.push(reloadAction) } var hasTextAttachments = false for (var i=0; i < textMessageAttachments.length; i++) { if (startsWith(textMessageAttachments[i].contentType, "text/plain")) { hasTextAttachments = true break } } if (messageData.textMessage !== "" || hasTextAttachments) { actions.push(copyAction) } actions.push(infoAction) return actions } // TODO: need select only the item onItemClicked: { if (root.isInSelectionMode) { if (!root.selectItem(delegateItem)) { root.deselectItem(delegateItem) } } } onItemPressAndHold: { root.startSelection() root.selectItem(delegateItem) } Component.onCompleted: { if (newEvent) { messages.markMessageAsRead(accountId, threadId, eventId, type); } } } } messaging-app-0.1+16.04.20160323/src/qml/ThumbnailContact.qml0000644000015600001650000000621012674565025024013 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Contacts 0.1 Item { id: attachment readonly property int contactsCount:vcardParser.contacts ? vcardParser.contacts.length : 0 property string filePath property alias vcard: vcardParser property string contactDisplayName: { if (contactsCount > 0) { var contact = vcard.contacts[0] if (contact.displayLabel.label && (contact.displayLabel.label != "")) { return contact.displayLabel.label } else if (contact.name) { var contacFullName = contact.name.firstName if (contact.name.midleName) { contacFullName += " " + contact.name.midleName } if (contact.name.lastName) { contacFullName += " " + contact.name.lastName } return contacFullName } return i18n.tr("Unknown contact") } return "" } property string title: { var result = attachment.contactDisplayName if (attachment.contactsCount > 1) { return result + " (+%1)".arg(attachment.contactsCount-1) } else { return result } } signal pressAndHold() height: units.gu(6) width: textEntry.width ContactAvatar { id: avatar anchors { top: parent.top bottom: parent.bottom left: parent.left } contactElement: attachment.contactsCount === 1 ? attachment.vcard.contacts[0] : null fallbackAvatarUrl: attachment.contactsCount === 1 ? "image://theme/contact" : "image://theme/contact-group" fallbackDisplayName: attachment.contactsCount === 1 ? attachment.contactDisplayName : "" width: height } Label { id: label anchors { left: avatar.right leftMargin: units.gu(1) top: avatar.top bottom: avatar.bottom right: parent.right rightMargin: units.gu(1) } verticalAlignment: Text.AlignVCenter text: attachment.title elide: Text.ElideMiddle color: UbuntuColors.lightAubergine } MouseArea { anchors.fill: parent onPressAndHold: { mouse.accept = true attachment.pressAndHold() } } VCardParser { id: vcardParser vCardUrl: attachment ? Qt.resolvedUrl(attachment.filePath) : "" } } messaging-app-0.1+16.04.20160323/src/qml/MessageDelegate.qml0000644000015600001650000000265712674565025023606 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 Item { id: messageDelegate objectName: "messageDelegate" property var messageData: null property bool incoming: (messageData && messageData.senderId !== "self") property string accountLabel: "" property var _lastItem property bool swipeLocked: false function deleteMessage() { //virtual implemented by each Message type } function copyMessage() { //virtual implemented by each Message type } function resendMessage() { //virtual implemented by each Message type } function showMessageDetails(mouse) { //virtual implemented by each Message type } function clicked(mouse) { //virtual implemented by each Message type } } messaging-app-0.1+16.04.20160323/src/qml/ThumbnailVideo.qml0000644000015600001650000000374512674565025023500 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Thumbnailer 0.1 UbuntuShape { id: thumbnail property string filePath signal pressAndHold() onFilePathChanged: videoImage.source = "image://thumbnailer/" + filePath width: childrenRect.width height: childrenRect.height image: Image { id: videoImage width: units.gu(8) height: units.gu(8) sourceSize.width: width sourceSize.height: height fillMode: Image.PreserveAspectCrop asynchronous: true onStatusChanged: { if (status === Image.Error) { source = "image://theme/image-missing" } } } ActivityIndicator { anchors.centerIn: parent visible: running running: videoImage.status != Image.Ready } Icon { width: units.gu(3) height: units.gu(3) anchors.centerIn: parent name: "media-playback-start" color: "white" visible: opacity > 0.0 opacity: videoImage.status == Image.Ready ? 0.8 : 0.0 Behavior on opacity { UbuntuNumberAnimation {duration: UbuntuAnimation.FastDuration} } } MouseArea { anchors.fill: parent onPressAndHold: { mouse.accept = true thumbnail.pressAndHold() } } } messaging-app-0.1+16.04.20160323/src/qml/Dialogs/0000755000015600001650000000000012674565500021422 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/src/qml/Dialogs/NoDefaultSIMCardDialog.qml0000644000015600001650000000372612674565025026313 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2013 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 import Ubuntu.Telephony 0.1 Component { Dialog { id: dialogue title: i18n.tr("Welcome to your Messaging app!") Column { anchors.left: parent.left anchors.right: parent.right spacing: units.gu(2) Label { anchors.left: parent.left anchors.right: parent.right height: paintedHeight + units.gu(6) verticalAlignment: Text.AlignVCenter text: i18n.tr("If you wish to edit your SIM and other mobile preferences, please visit System Settings.") wrapMode: Text.WordWrap onLinkActivated: { PopupUtils.close(dialogue) Qt.openUrlExternally("settings:///system/cellular") } } Button { objectName: "closeNoSimCardDefaultDialog" text: i18n.tr("Close") color: UbuntuColors.orange onClicked: { settings.mainViewIgnoreFirstTimeDialog = true PopupUtils.close(dialogue) Qt.inputMethod.hide() } } } } } messaging-app-0.1+16.04.20160323/src/qml/Dialogs/SimLockedDialog.qml0000644000015600001650000000474412674565025025142 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2013 Canonical Ltd. * * This file is part of messaging-app. * * dialer-app 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. * * dialer-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 Component { Dialog { id: dialogue title: i18n.tr("SIM Card is locked") Column { anchors.left: parent.left anchors.right: parent.right spacing: units.gu(2) Label { anchors.left: parent.left anchors.right: parent.right height: paintedHeight verticalAlignment: Text.AlignVCenter text: i18n.tr("Please unlock your SIM card to call or send a message. You can unlock your SIM card from the Network Indicator at the top of the screen or by visiting System Settings > Security & Privacy.") wrapMode: Text.WordWrap onLinkActivated: { PopupUtils.close(dialogue) Qt.openUrlExternally("settings:///system/security-privacy") } } Row { spacing: units.gu(4) anchors.horizontalCenter: parent.horizontalCenter Button { objectName: "okSimLockedDialog" text: i18n.tr("Ok") color: UbuntuColors.orange onClicked: { PopupUtils.close(dialogue) } } // Please, reenable this once lp:1374215 gets fixed /*Button { objectName: "unlockSimLockedDialog" text: i18n.tr("Unlock") color: UbuntuColors.orange onClicked: { PopupUtils.close(dialogue) telepathyHelper.unlockSimCards() } }*/ } } } } messaging-app-0.1+16.04.20160323/src/qml/Dialogs/NoMicrophonePermission.qml0000644000015600001650000000371512674565025026616 0ustar pbuserpbgroup00000000000000/* * Copyright 2016 Canonical Ltd. * * This file is part of messaging-app. * * dialer-app 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. * * dialer-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 Component { Dialog { id: dialogue title: i18n.tr("No permission to access microphone") Column { anchors.left: parent.left anchors.right: parent.right spacing: units.gu(2) Label { anchors.left: parent.left anchors.right: parent.right height: paintedHeight verticalAlignment: Text.AlignVCenter text: i18n.tr("Please grant access on System Settings > Security & Privacy.") wrapMode: Text.WordWrap onLinkActivated: { PopupUtils.close(dialogue) Qt.openUrlExternally("settings:///system/security-privacy") } } Row { spacing: units.gu(4) anchors.horizontalCenter: parent.horizontalCenter Button { objectName: "okNoMicrophonePermission" text: i18n.tr("Ok") color: UbuntuColors.orange onClicked: { PopupUtils.close(dialogue) } } } } } } messaging-app-0.1+16.04.20160323/src/qml/Dialogs/SetDefaultSIMCardDialog.qml0000644000015600001650000000522312674565025026464 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2013 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 import Ubuntu.Telephony 0.1 Component { id: setDefaultSimCardDialog Dialog { id: dialogue // TRANSLATORS: %1 refers to the SIM card name or account name text: i18n.tr("Change all Messaging associations to %1?").arg(messages.account.displayName) Column { anchors.left: parent.left anchors.right: parent.right spacing: units.gu(2) Row { anchors.horizontalCenter: parent.horizontalCenter spacing: units.gu(4) Button { objectName: "setDefaultSimCardDialogNo" text: i18n.tr("No") color: UbuntuColors.orange onClicked: { PopupUtils.close(dialogue) Qt.inputMethod.hide() } } Button { objectName: "setDefaultSimCardDialogYes" text: i18n.tr("Yes") color: UbuntuColors.orange onClicked: { telepathyHelper.setDefaultAccount(TelepathyHelper.Messaging, messages.account) PopupUtils.close(dialogue) Qt.inputMethod.hide() } } } Row { CheckBox { id: dontAskAgainCheckbox checked: false onCheckedChanged: settings.messagesDontAsk = checked } Label { text: i18n.tr("Don't ask again") anchors.verticalCenter: dontAskAgainCheckbox.verticalCenter MouseArea { anchors.fill: parent onClicked: dontAskAgainCheckbox.checked = !dontAskAgainCheckbox.checked } } } } } } messaging-app-0.1+16.04.20160323/src/qml/Dialogs/FileSizeWarningDialog.qml0000644000015600001650000000455112674565025026324 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * dialer-app 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. * * dialer-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 Component { Dialog { id: dialogue title: i18n.tr("File size warning") Column { anchors.left: parent.left anchors.right: parent.right spacing: units.gu(2) Label { anchors.left: parent.left anchors.right: parent.right height: paintedHeight verticalAlignment: Text.AlignVCenter text: i18n.tr("You are trying to send big files (over 300Kb). Some operators might not be able to send it.") wrapMode: Text.WordWrap } Row { spacing: units.gu(4) anchors.horizontalCenter: parent.horizontalCenter Button { objectName: "okFileSizeWarningDialog" text: i18n.tr("Ok") color: UbuntuColors.orange onClicked: { PopupUtils.close(dialogue) } } } Row { CheckBox { id: dontAskAgainCheckbox checked: false onCheckedChanged: settings.messagesDontShowFileSizeWarning = checked } Label { text: i18n.tr("Don't show again") anchors.verticalCenter: dontAskAgainCheckbox.verticalCenter MouseArea { anchors.fill: parent onClicked: dontAskAgainCheckbox.checked = !dontAskAgainCheckbox.checked } } } } } } messaging-app-0.1+16.04.20160323/src/qml/Dialogs/CMakeLists.txt0000644000015600001650000000036612674565025024171 0ustar pbuserpbgroup00000000000000file(GLOB DIALOGS_QML_JS_FILES *.qml *.js) # make the files visible on qtcreator add_custom_target(messaging_dialogs_QMlFiles ALL SOURCES ${DIALOGS_QML_JS_FILES}) install(FILES ${DIALOGS_QML_JS_FILES} DESTINATION ${MESSAGING_APP_DIR}/Dialogs) messaging-app-0.1+16.04.20160323/src/qml/Dialogs/NoSIMCardSelectedDialog.qml0000644000015600001650000000225012674565025026446 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2013 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Popups 1.3 Component { Dialog { id: dialogue title: i18n.tr("No SIM card selected") text: i18n.tr("You need to select a SIM card") Button { objectName: "closeNoSimCardSelectedDialog" text: i18n.tr("Close") color: UbuntuColors.orange onClicked: { PopupUtils.close(dialogue) Qt.inputMethod.hide() } } } } messaging-app-0.1+16.04.20160323/src/qml/CMakeLists.txt0000644000015600001650000000073512674565025022607 0ustar pbuserpbgroup00000000000000project(qml) file(GLOB QML_JS_FILES *.qml *.js) set(QML_DIRS MMS ) add_custom_target(messaging_app_QMlFiles ALL SOURCES ${QML_JS_FILES}) set(ASSETS_DIR assets) set(3RD_PARTY_DIR 3rd_party) install(FILES ${QML_JS_FILES} DESTINATION ${MESSAGING_APP_DIR}) install(DIRECTORY ${ASSETS_DIR} DESTINATION ${MESSAGING_APP_DIR}) install(DIRECTORY ${3RD_PARTY_DIR} DESTINATION ${MESSAGING_APP_DIR}) add_subdirectory(MMS) add_subdirectory(Dialogs) add_subdirectory(Stickers) messaging-app-0.1+16.04.20160323/src/qml/MessageDelegateFactory.qml0000644000015600001650000001146412674565025025132 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Contacts 0.1 import Ubuntu.History 0.1 ListItemWithActions { id: messageFactory property bool incoming: false property string accountLabel // To be used by actions property int _index: index property var _lastItem signal deleteMessage() signal resendMessage() signal copyMessage() signal showMessageDetails() color: "transparent" locked: loader.item.swipeLocked width: messageList.width leftSideAction: Action { iconName: "delete" text: i18n.tr("Delete") onTriggered: deleteMessage() } height: loader.height + units.gu(1) internalAnchors { topMargin: units.gu(0.5) bottomMargin: units.gu(0.5) } onItemClicked: { if (!selectionMode && (loader.status === Loader.Ready)) { loader.item.clicked(mouse) } } Loader { id: loader anchors { left: parent.left right: parent.right } source: textMessageAttachments.length > 0 ? Qt.resolvedUrl("MMSDelegate.qml") : Qt.resolvedUrl("SMSDelegate.qml") height: status == Loader.Ready ? item.height : 0 onStatusChanged: { if (status === Loader.Ready) { //signals messageFactory.resendMessage.connect(item.resendMessage) messageFactory.deleteMessage.connect(item.deleteMessage) messageFactory.copyMessage.connect(item.copyMessage) messageFactory.showMessageDetails(item.showMessageDetails) } } Binding { target: loader.item property: "messageData" value: messageData when: (loader.status === Loader.Ready) } Binding { target: loader.item property: "accountLabel" value: accountLabel when: (loader.status === Loader.Ready) } Binding { target: messageFactory property: "_lastItem" value: loader.item._lastItem when: (loader.status === Loader.Ready) } } Item { id: statusIcon height: units.gu(4) width: units.gu(4) parent: messageFactory._lastItem onParentChanged: { // The spinner gets stuck once parent changes, this is a workaround indicator.running = false // if temporarily failed or unknown status, then show the spinner indicator.running = Qt.binding(function(){ return !incoming && (textMessageStatus === HistoryThreadModel.MessageStatusUnknown || textMessageStatus === HistoryThreadModel.MessageStatusTemporarilyFailed)}); } anchors { verticalCenter: parent ? parent.verticalCenter : undefined right: parent ? parent.left : undefined rightMargin: units.gu(2) } visible: !incoming && !selectionMode ActivityIndicator { id: indicator anchors.centerIn: parent height: units.gu(2) width: units.gu(2) visible: running && !selectionMode } Item { id: retrybutton anchors.fill: parent Icon { id: icon name: "reload" color: "red" height: units.gu(2) width: units.gu(2) anchors { centerIn: parent verticalCenterOffset: units.gu(-1) } } Label { text: i18n.tr("Failed!") fontSize: "small" color: "red" anchors { horizontalCenter: retrybutton.horizontalCenter top: icon.bottom } } visible: (textMessageStatus === HistoryThreadModel.MessageStatusPermanentlyFailed) MouseArea { id: retrybuttonMouseArea anchors.fill: parent onClicked: messageFactory.resendMessage() } } } } messaging-app-0.1+16.04.20160323/src/qml/MessagingPageLayout.qml0000644000015600001650000000376712674565025024502 0ustar pbuserpbgroup00000000000000import QtQuick 2.0 import Ubuntu.Components 1.3 AdaptivePageLayout { id: layout property var _pagesToRemove: [] layouts: PageColumnsLayout { when: mainStack.width >= units.gu(90) PageColumn { maximumWidth: units.gu(50) minimumWidth: units.gu(40) preferredWidth: units.gu(40) } PageColumn { fillWidth: true } } function deleteInstances() { for (var i in _pagesToRemove) { if (_pagesToRemove[i].destroy) { _pagesToRemove[i].destroy() } } _pagesToRemove = [] } function removePage(page) { // check if this page was allocated dynamically and then remove it for (var i in _pagesToRemove) { if (_pagesToRemove[i] == page) { _pagesToRemove[i].destroy() _pagesToRemove.splice(i, 1) break } } removePages(page) } function addFileToNextColumnSync(parentObject, resolvedUrl, properties) { addComponentToNextColumnSync(parentObject, Qt.createComponent(resolvedUrl), properties) } function addFileToCurrentColumnSync(parentObject, resolvedUrl, properties) { addComponentToCurrentColumnSync(parentObject, Qt.createComponent(resolvedUrl), properties) } function addComponentToNextColumnSync(parentObject, component, properties) { if (typeof(properties) === 'undefined') { properties = {} } var page = component.createObject(parentObject, properties) layout.addPageToNextColumn(parentObject, page) _pagesToRemove.push(page) } function addComponentToCurrentColumnSync(parentObject, component, properties) { if (typeof(properties) === 'undefined') { properties = {} } var page = component.createObject(parentObject, properties) layout.addPageToCurrentColumn(parentObject, page) _pagesToRemove.push(page) } } messaging-app-0.1+16.04.20160323/src/qml/ContactSearchList.qml0000644000015600001650000001206212674565025024133 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2013 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtContacts 5.0 import Ubuntu.Components 1.3 import Ubuntu.Components.ListItems 1.3 as ListItem import Ubuntu.Contacts 0.1 ListView { id: root // FIXME: change the Ubuntu.Contacts model to search for more fields property alias filterTerm: contactModel.filterTerm onFilterTermChanged: console.debug("FILTER :" + filterTerm) signal phonePicked(string phoneNumber) model: ContactListModel { id: contactModel manager: "galera" view: root autoUpdate: false sortOrders: [ SortOrder { detail: ContactDetail.Tag field: Tag.Tag direction: Qt.AscendingOrder blankPolicy: SortOrder.BlanksLast caseSensitivity: Qt.CaseInsensitive }, // empty tags will be sorted by display Label SortOrder { detail: ContactDetail.DisplayLabel field: DisplayLabel.Label direction: Qt.AscendingOrder blankPolicy: SortOrder.BlanksLast caseSensitivity: Qt.CaseInsensitive } ] fetchHint: FetchHint { // FIXME: check what other fields to load here detailTypesHint: [ ContactDetail.DisplayLabel, ContactDetail.PhoneNumber ] } } ContactDetailPhoneNumberTypeModel { id: phoneTypeModel } delegate: Item { anchors { left: parent.left right: parent.right margins: units.gu(2) } height: phoneRepeater.count * units.gu(6) Column { anchors.fill: parent spacing: units.gu(1) Repeater { id: phoneRepeater model: contact.phoneNumbers.length delegate: MouseArea { anchors { left: parent.left right: parent.right } height: units.gu(5) onClicked: root.phonePicked(contact.phoneNumbers[index].number) Column { anchors.fill: parent Label { anchors { left: parent.left right: parent.right } height: units.gu(2) text: { // this is necessary to keep the string in the original format var originalText = contact.displayLabel.label var lowerSearchText = filterTerm.toLowerCase() var lowerText = originalText.toLowerCase() var searchIndex = lowerText.indexOf(lowerSearchText) if (searchIndex !== -1) { var piece = originalText.substr(searchIndex, lowerSearchText.length) return originalText.replace(piece, "" + piece + "") } else { return originalText } } fontSize: "medium" color: UbuntuColors.lightAubergine } Label { anchors { left: parent.left right: parent.right } height: units.gu(2) text: { var phoneDetail = contact.phoneNumbers[index] return ("%1 %2").arg(phoneTypeModel.get(phoneTypeModel.getTypeIndex(phoneDetail)).label) .arg(phoneDetail.number) } } Item { anchors { left: parent.left right: parent.right } height: units.gu(1) } ListItem.ThinDivider {} } } } } } } messaging-app-0.1+16.04.20160323/src/qml/KeyboardRectangle.qml0000644000015600001650000000351712674565025024150 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2013 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import GSettings 1.0 Item { id: keyboardRect anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom height: Qt.inputMethod.visible ? Qt.inputMethod.keyboardRectangle.height : 0 property bool oskEnabled: !gsettings.stayHidden function recursiveFindFocusedItem(parent) { if (parent.activeFocus) { return parent; } for (var i in parent.children) { var child = parent.children[i]; if (child.activeFocus) { return child; } var item = recursiveFindFocusedItem(child); if (item != null) { return item; } } return null; } Connections { target: Qt.inputMethod onVisibleChanged: { if (!Qt.inputMethod.visible) { var focusedItem = recursiveFindFocusedItem(keyboardRect.parent); if (focusedItem != null) { focusedItem.focus = false; } } } } GSettings { id: gsettings schema.id: "com.canonical.keyboard.maliit" } } messaging-app-0.1+16.04.20160323/src/qml/MMS/0000755000015600001650000000000012674565500020474 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/src/qml/MMS/PreviewerSingleContact.qml0000644000015600001650000000206512674565025025642 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 Ubuntu.Contacts 0.1 import "../" Previewer { id: root title: contactView.title flickable: contactView.flickable MessagingContactViewPage { id: contactView header: Item { height: 0 } contact: thumbnail.vcard.contacts.length > 0 ? thumbnail.vcard.contacts[0] : null editable: false anchors.fill: parent } } messaging-app-0.1+16.04.20160323/src/qml/MMS/MMSBase.qml0000644000015600001650000000161012674565025022436 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 Item { id: baseDelegate property var attachment property string previewer property bool lastItem: false property bool swipeLocked: false property bool showDeliveryStatus: true } messaging-app-0.1+16.04.20160323/src/qml/MMS/PreviewerMultipleContacts.qml0000644000015600001650000000764012674565025026403 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 Ubuntu.Components 1.3 import Ubuntu.Content 1.3 import Ubuntu.Contacts 0.1 import Ubuntu.AddressBook.Base 0.1 import Ubuntu.AddressBook.ContactView 0.1 Previewer { id: root function saveAttachment() { // all contacts. root.handleAttachment(attachment.filePath, ContentHandler.Destination) } function shareAttchment() { // all contacts. root.handleAttachment(attachment.filePath, ContentHandler.Share) } title: thumbnail.title MultipleSelectionListView { id: contactList anchors { top: root.header.bottom bottom: parent.bottom left: parent.left right: parent.right } listModel: thumbnail.vcard.contacts listDelegate: ContactDelegate { id: contactDelegate objectName: "contactDelegate" property var contact: thumbnail.vcard.contacts[index] onClicked: { mainStack.addComponentToCurrentColumnSync(root, sigleContatPreviewer, {'contact': contact}) } } } Component { id: sigleContatPreviewer ContactViewPage { id: contactViewPage editable: false onActionTrigerred: { if ((action === "message") || (action == "default")) { mainView.startChat(detail.value(0), "") return } else { Qt.openUrlExternally(("%1:%2").arg(action).arg(detail.value(0))) } } state: "default" states: [ PageHeadState { name: "default" head: contactViewPage.head actions: [ Action { objectName: "saveButton" text: i18n.tr("Save") iconSource: "image://theme/save" onTriggered: contactExporter.exportContact(contactViewPage.contact, ContentHandler.Destination) }, Action { objectName: "shareButton" iconSource: "image://theme/share" text: i18n.tr("Share") onTriggered: contactExporter.exportContact(contactViewPage.contact, ContentHandler.Share) } ] } ] ContactExporter { id: contactExporter property int actionHandler: -1 function exportContact(contact, handler) { contactExporter.actionHandler = handler contactExporter.start([contact]) } contactModel: thumbnail.vcard._model exportToDisk: true onDone: { console.debug("Export file:" + outputFile) root.handleAttachment(outputFile, contactExporter.actionHandler) } } } } } messaging-app-0.1+16.04.20160323/src/qml/MMS/MMSImage.qml0000644000015600001650000000556212674565025022620 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import ".." MMSBase { id: imageDelegate previewer: "MMS/PreviewerImage.qml" height: imageAttachment.height width: imageAttachment.width UbuntuShape { id: bubble anchors.top: parent.top width: image.width height: image.height image: Image { id: imageAttachment objectName: "imageAttachment" fillMode: Image.PreserveAspectCrop smooth: true source: attachment.filePath visible: false asynchronous: true height: Math.min(implicitHeight, units.gu(14)) width: Math.min(implicitWidth, units.gu(27)) cache: false sourceSize.width: units.gu(27) sourceSize.height: units.gu(27) onStatusChanged: { if (status === Image.Error) { source = "image://theme/image-missing" width = 128 height = 128 } } } Rectangle { visible: imageDelegate.lastItem gradient: Gradient { GradientStop { position: 0.0; color: "transparent" } GradientStop { position: 1.0; color: "gray" } } anchors { bottom: parent.bottom left: parent.left right: parent.right } height: units.gu(2) radius: bubble.height * 0.1 Label { anchors{ left: parent.left bottom: parent.bottom leftMargin: incoming ? units.gu(2) : units.gu(1) bottomMargin: units.gu(0.5) } fontSize: "xx-small" text: Qt.formatTime(timestamp).toLowerCase() color: "white" } } } DeliveryStatus { id: deliveryStatus messageStatus: textMessageStatus enabled: showDeliveryStatus anchors { right: parent.right rightMargin: units.gu(0.5) bottom: parent.bottom bottomMargin: units.gu(0.5) } } } messaging-app-0.1+16.04.20160323/src/qml/MMS/PreviewerImage.qml0000644000015600001650000001661212674565033024131 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Content 1.3 import Ubuntu.Thumbnailer 0.1 import ".." Previewer { id: imagePreviewer // FIXME: this won't work correctly in windowed mode Component.onCompleted: application.fullscreen = true Component.onDestruction: application.fullscreen = false Connections { target: application onFullscreenChanged: imagePreviewer.header.visible = !application.fullscreen } title: i18n.tr("Image Preview") clip: true Rectangle { anchors.fill: parent color: "black" } Item { id: imageItem property bool pinchInProgress: zoomPinchArea.active property size thumbSize: Qt.size(viewer.width * 1.05, viewer.height * 1.05) onWidthChanged: { // Only change thumbSize if width increases more than 5% // that way we do not reload image for small resizes if (width > thumbSize.width) { thumbSize = Qt.size(width * 1.05, height * 1.05); } } onHeightChanged: { // Only change thumbSize if height increases more than 5% // that way we do not reload image for small resizes if (height > thumbSize.height) { thumbSize = Qt.size(width * 1.05, height * 1.05); } } function zoomIn(centerX, centerY, factor) { flickable.scaleCenterX = centerX / (flickable.sizeScale * flickable.width); flickable.scaleCenterY = centerY / (flickable.sizeScale * flickable.height); flickable.sizeScale = factor; } function zoomOut() { if (flickable.sizeScale != 1.0) { flickable.scaleCenterX = flickable.contentX / flickable.width / (flickable.sizeScale - 1); flickable.scaleCenterY = flickable.contentY / flickable.height / (flickable.sizeScale - 1); flickable.sizeScale = 1.0; } } width: parent.width height: parent.height ActivityIndicator { objectName: "imageActivityIndicator" anchors.centerIn: parent visible: running running: image.status != Image.Ready } PinchArea { id: zoomPinchArea anchors.fill: parent property real initialZoom property real maximumScale: 3.0 property real minimumZoom: 1.0 property real maximumZoom: 3.0 property bool active: false property var center onPinchStarted: { active = true; initialZoom = flickable.sizeScale; center = zoomPinchArea.mapToItem(media, pinch.startCenter.x, pinch.startCenter.y); imageItem.zoomIn(center.x, center.y, initialZoom); } onPinchUpdated: { var zoomFactor = MathUtils.clamp(initialZoom * pinch.scale, minimumZoom, maximumZoom); flickable.sizeScale = zoomFactor; } onPinchFinished: { active = false; } Flickable { id: flickable anchors.fill: parent contentWidth: media.width contentHeight: media.height contentX: (sizeScale - 1) * scaleCenterX * width contentY: (sizeScale - 1) * scaleCenterY * height interactive: !imageItem.pinchInProgress property real sizeScale: 1.0 property real scaleCenterX: 0.0 property real scaleCenterY: 0.0 Behavior on sizeScale { enabled: !imageItem.pinchInProgress UbuntuNumberAnimation {duration: UbuntuAnimation.FastDuration} } Behavior on scaleCenterX { UbuntuNumberAnimation {duration: UbuntuAnimation.FastDuration} } Behavior on scaleCenterY { UbuntuNumberAnimation {duration: UbuntuAnimation.FastDuration} } Item { id: media width: flickable.width * flickable.sizeScale height: flickable.height * flickable.sizeScale Image { id: image objectName: "thumbnailImage" anchors.fill: parent asynchronous: true cache: false source: "image://thumbnailer/%1".arg(attachment.filePath.toString()) sourceSize { width: imageItem.thumbSize.width height: imageItem.thumbSize.height } fillMode: Image.PreserveAspectFit opacity: status == Image.Ready ? 1.0 : 0.0 Behavior on opacity { UbuntuNumberAnimation {duration: UbuntuAnimation.FastDuration} } } Image { id: highResolutionImage objectName: "highResolutionImage" anchors.fill: parent asynchronous: true cache: false source: flickable.sizeScale > 1.0 ? attachment.filePath : "" sourceSize { width: width height: height } fillMode: Image.PreserveAspectFit } } MouseArea { id: imageMouseArea anchors.fill: parent property bool clickAccepted: false onDoubleClicked: { if (imageMouseArea.clickAccepted) { return } clickTimer.stop() if (flickable.sizeScale < zoomPinchArea.maximumZoom) { imageItem.zoomIn(mouse.x, mouse.y, zoomPinchArea.maximumZoom); } else { imageItem.zoomOut(); } } onClicked: { imageMouseArea.clickAccepted = false clickTimer.start() } } Timer { id: clickTimer interval: 200 onTriggered: { imageMouseArea.clickAccepted = true application.fullscreen = !application.fullscreen } } } } } } messaging-app-0.1+16.04.20160323/src/qml/MMS/MMSContact.qml0000644000015600001650000001147112674565025023165 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Contacts 0.1 import Ubuntu.History 0.1 import ".." MMSBase { id: vcardDelegate readonly property bool error: (textMessageStatus === HistoryThreadModel.MessageStatusPermanentlyFailed) readonly property bool sending: (textMessageStatus === HistoryThreadModel.MessageStatusUnknown || textMessageStatus === HistoryThreadModel.MessageStatusTemporarilyFailed) && !incoming readonly property int contactsCount:vcardParser.contacts ? vcardParser.contacts.length : 0 property alias vcard: vcardParser property string contactDisplayName: { if (contactsCount > 0) { var contact = vcard.contacts[0] if (contact.displayLabel.label && (contact.displayLabel.label != "")) { return contact.displayLabel.label } else if (contact.name) { var contacFullName = contact.name.firstName if (contact.name.midleName) { contacFullName += " " + contact.name.midleName } if (contact.name.lastName) { contacFullName += " " + contact.name.lastName } return contacFullName } return i18n.tr("Unknown contact") } return "" } property string title: { var result = vcardDelegate.contactDisplayName if (vcardDelegate.contactsCount > 1) { return result + " (+%1)".arg(vcardDelegate.contactsCount-1) } else { return result } } previewer: vcardDelegate.contactsCount > 1 ? "MMS/PreviewerMultipleContacts.qml" : "MMS/PreviewerSingleContact.qml" height: units.gu(9.5) width: units.gu(27) Rectangle { id: bubble anchors.fill: parent color: { if (error) { return "#fc4949" } else if (sending) { return "#b2b2b2" } else if (incoming) { return "#ffffff" } else { return "#3fb24f" } } border.color: incoming ? "#ACACAC" : "transparent" radius: units.gu(1) ContactAvatar { id: avatar contactElement: (vcardDelegate.contactsCount === 1) ? vcardDelegate.vcard.contacts[0] : null anchors { top: parent.top topMargin: units.gu(1) bottom: parent.bottom bottomMargin: units.gu(2.5) left: parent.left leftMargin: units.gu(1) } fallbackAvatarUrl: vcardDelegate.contactsCount === 1 ? "image://theme/contact" : "image://theme/contact-group" fallbackDisplayName: vcardDelegate.contactsCount === 1 ? vcardDelegate.contactDisplayName : "" width: height } Label { id: contactName anchors { left: avatar.right leftMargin: units.gu(1) top: avatar.top bottom: avatar.bottom right: parent.right rightMargin: units.gu(1) } verticalAlignment: Text.AlignVCenter text: vcardDelegate.title elide: Text.ElideMiddle color: incoming ? UbuntuColors.darkGrey : "#ffffff" } Label { anchors{ left: parent.left bottom: parent.bottom leftMargin: incoming ? units.gu(2) : units.gu(1) bottomMargin: units.gu(0.5) } fontSize: "xx-small" text: Qt.formatTime(timestamp).toLowerCase() color: incoming ? UbuntuColors.lightGrey : "white" } } VCardParser { id: vcardParser vCardUrl: attachment ? Qt.resolvedUrl(attachment.filePath) : "" } DeliveryStatus { id: deliveryStatus messageStatus: textMessageStatus enabled: showDeliveryStatus anchors { right: parent.right rightMargin: units.gu(0.5) bottom: parent.bottom bottomMargin: units.gu(0.5) } } } messaging-app-0.1+16.04.20160323/src/qml/MMS/MMSDefault.qml0000644000015600001650000000413712674565025023157 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import ".." MMSBase { id: defaultDelegate property string unknownLabel: { if (startsWith(attachment.contentType, "audio/") ) { return i18n.tr("Audio attachment not supported") root.textAttachements.push(attachment) } else if (startsWith(attachment.contentType, "video/")) { return i18n.tr("Video attachment not supported") } return i18n.tr("File type not supported") } height: units.gu(15) width: Math.max(unknownAttachmentLabel.paintedWidth+units.gu(2), units.gu(27)) Image { id: unknownAttachmentImage fillMode: Image.PreserveAspectFit anchors.centerIn: shape anchors.verticalCenterOffset: -unknownAttachmentLabel.height/2 smooth: true source: Qt.resolvedUrl("../assets/transfer-unsupported01.svg") asynchronous: false height: Math.min(implicitHeight, units.gu(8)) width: Math.min(implicitWidth, units.gu(27)) cache: false } Label { id: unknownAttachmentLabel color: "gray" text: unknownLabel anchors.horizontalCenter: unknownAttachmentImage.horizontalCenter anchors.top: unknownAttachmentImage.bottom } UbuntuShape { id: shape anchors.top: parent.top width: parent.width height: parent.height color: "gray" opacity: 0.2 } } messaging-app-0.1+16.04.20160323/src/qml/MMS/MMSVideo.qml0000644000015600001650000000625212674565025022641 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Thumbnailer 0.1 import ".." MMSBase { id: videoDelegate previewer: "MMS/PreviewerVideo.qml" height: videoAttachment.height width: videoAttachment.width UbuntuShape { id: bubble anchors.top: parent.top width: image.width height: image.height image: Image { id: videoAttachment objectName: "videoAttachment" fillMode: Image.PreserveAspectCrop smooth: true source: "image://thumbnailer/" + attachment.filePath visible: false asynchronous: true height: Math.min(implicitHeight, units.gu(14)) width: Math.min(implicitWidth, units.gu(27)) cache: false sourceSize.width: units.gu(27) sourceSize.height: units.gu(27) onStatusChanged: { if (status === Image.Error) { source = "image://theme/image-missing" width = 128 height = 128 } } } Icon { objectName: "playbackStartIcon" width: units.gu(3) height: units.gu(3) anchors.centerIn: parent name: "media-playback-start" color: "white" opacity: 0.8 } Rectangle { visible: videoDelegate.lastItem gradient: Gradient { GradientStop { position: 0.0; color: "transparent" } GradientStop { position: 1.0; color: "gray" } } anchors { bottom: parent.bottom left: parent.left right: parent.right } height: units.gu(2) radius: bubble.height * 0.1 Label { anchors{ left: parent.left bottom: parent.bottom leftMargin: incoming ? units.gu(2) : units.gu(1) bottomMargin: units.gu(0.5) } fontSize: "xx-small" text: Qt.formatTime(timestamp).toLowerCase() color: "white" } } } DeliveryStatus { id: deliveryStatus messageStatus: textMessageStatus enabled: showDeliveryStatus anchors { right: parent.right rightMargin: units.gu(0.5) bottom: parent.bottom bottomMargin: units.gu(0.5) } } } messaging-app-0.1+16.04.20160323/src/qml/MMS/CMakeLists.txt0000644000015600001650000000027612674565025023243 0ustar pbuserpbgroup00000000000000file(GLOB MMS_QML_JS_FILES *.qml *.js) add_custom_target(messaging_app_MMS_QMlFiles ALL SOURCES ${MMS_QML_JS_FILES}) install(FILES ${MMS_QML_JS_FILES} DESTINATION ${MESSAGING_APP_DIR}/MMS) messaging-app-0.1+16.04.20160323/src/qml/MMS/MMSAudio.qml0000644000015600001650000001451312674565025022633 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtMultimedia 5.0 import Ubuntu.Components 1.3 import Ubuntu.Components.Themes.Ambiance 1.3 import messagingapp.private 0.1 import ".." import "../dateUtils.js" as DateUtils MMSBase { id: audioDelegate height: units.gu(5) width: units.gu(28) property string textColor: incoming ? "#5D5D5D" : "#FFFFFF" swipeLocked: audioPlayer.playing Rectangle { id: shape radius: units.gu(1) smooth: true anchors.top: parent.top width: parent.width height: parent.height color: incoming ? "#FFFFFF" : "#3fb24f" border.color: incoming ? "#888888" : "transparent" } Loader { id: audioPlayer readonly property bool playing: ready ? item.playing : false readonly property bool paused: ready ? item.paused : false readonly property bool stopped: ready ? item.stopped : false readonly property int position: ready ? item.position : 0 readonly property int duration: ready ? item.duration : 0 readonly property bool ready: status == Loader.Ready readonly property int playbackState: ready ? item.playbackState : Audio.StoppedState property bool muted: false property string source: "" function play() { var tmpFile = FileOperations.getTemporaryFile(".ogg") if (FileOperations.link(attachment.filePath, tmpFile)) { source = tmpFile; } else { console.log("MMSAudio: Failed to link", attachment.filePath, "to", tmpFile) return } audioPlayer.active = true item.play() } function stop() { item.stop() audioPlayer.active = false audioPlayer.muted = false } function pause() { item.pause() } function seek(pos) { item.seek(pos) } active: false sourceComponent: audioPlayerComponent Component.onDestruction: FileOperations.remove(source) } Component { id: audioPlayerComponent Audio { id: audioPlayer1 objectName: "audioPlayer" readonly property bool playing: audioPlayer1.playbackState == Audio.PlayingState readonly property bool paused: audioPlayer1.playbackState == Audio.PausedState readonly property bool stopped: audioPlayer1.playbackState == Audio.StoppedState source: audioPlayer.source muted: audioPlayer.muted } } TransparentButton { id: playButton objectName: "playButton" anchors { left: parent.left leftMargin: units.gu(1) verticalCenter: shape.verticalCenter } spacing: units.gu(1) sideBySide: true iconColor: audioDelegate.textColor iconName: audioPlayer.playing ? "media-playback-pause" : "media-playback-start" textSize: FontUtils.sizeToPixels("x-small") textColor: audioDelegate.textColor text: { if (audioPlayer.playing || audioPlayer.paused) { return DateUtils.formattedTime(audioPlayer.position/ 1000) } if (audioPlayer.duration > 0) { return DateUtils.formattedTime(audioPlayer.duration / 1000) } return "" } onClicked: { if (audioPlayer.playing) { audioPlayer.pause() } else { audioPlayer.play() } } } Slider { id: slider Connections { target: audioPlayer onDurationChanged: { if (slider.maximumValue == 100) { slider.maximumValue = audioPlayer.duration } } } style: SliderStyle { Component.onCompleted: thumb.visible = false Connections { target: audioPlayer onPlaybackStateChanged: { thumb.visible = !audioPlayer.stopped if (!thumb.visible) { audioPlayer.seek(0) } } } } enabled: !audioPlayer.stopped function formatValue(v) { return DateUtils.formattedTime(v/1000) } anchors { left: playButton.right right: deliveryStatus.left leftMargin: units.gu(1) rightMargin: units.gu(2) verticalCenter: shape.verticalCenter } height: units.gu(3) minimumValue: 0.0 maximumValue: 100 value: audioPlayer.position activeFocusOnPress: false onPressedChanged: { if (!pressed) { if (audioPlayer.playing || audioPlayer.paused) { audioPlayer.seek(value) } else { audioPlayer.muted = true // we only get the duration while playing audioPlayer.play() audioPlayer.pause() if (audioPlayer.duration == 100) { audioPlayer.seek((audioPlayer.duration*value)/100) } else { audioPlayer.seek(value) } audioPlayer.muted = false } value = Qt.binding(function(){ return audioPlayer.position}) } } } DeliveryStatus { id: deliveryStatus messageStatus: textMessageStatus enabled: showDeliveryStatus anchors { right: parent.right rightMargin: units.gu(0.5) verticalCenter: slider.verticalCenter } } } messaging-app-0.1+16.04.20160323/src/qml/MMS/Previewer.qml0000644000015600001650000001050112674565025023156 0ustar pbuserpbgroup00000000000000/* * Copyright 2012, 2013, 2014 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import Ubuntu.Components 1.3 import Ubuntu.Content 1.3 import ".." Page { id: previewerPage property variant attachment property variant thumbnail signal actionTriggered function handleAttachment(filePath, handlerType) { mainStack.addPageToCurrentColumn(previewerPage, picker, {"url": filePath, "handler": handlerType}); actionTriggered() } function saveAttachment() { previewerPage.handleAttachment(attachment.filePath, ContentHandler.Destination) } function shareAttchment() { previewerPage.handleAttachment(attachment.filePath, ContentHandler.Share) } header: PageHeader { id: pageHeader property alias leadingActions: leadingBar.actions property alias trailingActions: trailingBar.actions title: previewerPage.title leadingActionBar { id: leadingBar actions: [ Action { name: "cancel" text: i18n.tr("Cancel") iconName: "back" shortcut: "Esc" onTriggered: { mainStack.removePage(previewerPage) } } ] } trailingActionBar { id: trailingBar } } state: "default" states: [ State { id: defaultState name: "default" property list trailingActions: [ Action { objectName: "saveButton" text: i18n.tr("Save") iconSource: "image://theme/save" onTriggered: previewerPage.saveAttachment() }, Action { objectName: "shareButton" iconSource: "image://theme/share" text: i18n.tr("Share") onTriggered: previewerPage.shareAttchment() } ] PropertyChanges { target: pageHeader trailingActions: defaultState.trailingActions } } ] Component { id: resultComponent ContentItem {} } Page { id: picker visible: false property var curTransfer property var url property var handler property var contentType: getContentType(url) function __exportItems(url) { if (picker.curTransfer.state === ContentTransfer.InProgress) { picker.curTransfer.items = [ resultComponent.createObject(mainView, {"url": url}) ]; picker.curTransfer.state = ContentTransfer.Charged; } } // invisible header header: Item { height: 0 } ContentPeerPicker { visible: parent.visible contentType: picker.contentType handler: picker.handler onPeerSelected: { picker.curTransfer = peer.request(); mainStack.removePage(picker); if (picker.curTransfer.state === ContentTransfer.InProgress) picker.__exportItems(picker.url); } onCancelPressed: mainStack.removePage(picker); } Connections { target: picker.curTransfer ? picker.curTransfer : null onStateChanged: { console.log("curTransfer StateChanged: " + picker.curTransfer.state); if (picker.curTransfer.state === ContentTransfer.InProgress) { picker.__exportItems(picker.url); } } } } } messaging-app-0.1+16.04.20160323/src/qml/MMS/PreviewerVideo.qml0000644000015600001650000001552412674565033024156 0ustar pbuserpbgroup00000000000000/* * Copyright 2012-2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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.2 import QtMultimedia 5.0 import Ubuntu.Components 1.3 import Ubuntu.Content 1.3 import Ubuntu.Thumbnailer 0.1 import messagingapp.private 0.1 import ".." Previewer { id: videoPreviewer property size thumbnailSize: Qt.size(viewer.width * 1.05, viewer.height * 1.05) title: i18n.tr("Video Preview") clip: true // FIXME: this won't work correctly in windowed mode Component.onCompleted: { application.fullscreen = true // Load Video player after toggling fullscreen to reduce flickering videoLoader.active = true } Component.onDestruction: application.fullscreen = false onWidthChanged: { // Only change thumbnailSize if width increases more than 5% // that way we do not reload image for small resizes if (width > thumbnailSize.width) { thumbnailSize = Qt.size(width * 1.05, height * 1.05); } } onHeightChanged: { // Only change thumbnailSize if height increases more than 5% // that way we do not reload image for small resizes if (height > thumbnailSize.height) { thumbnailSize = Qt.size(width * 1.05, height * 1.05); } } Connections { target: application onFullscreenChanged: { videoPreviewer.header.visible = !application.fullscreen toolbar.collapsed = application.fullscreen } } Rectangle { anchors.fill: parent color: "black" } Loader { id: videoLoader anchors.fill: parent active: false sourceComponent: videoComponent onStatusChanged: { if (status == Loader.Ready) { var tmpFile = FileOperations.getTemporaryFile(".mp4") if (FileOperations.link(attachment.filePath, tmpFile)) { videoLoader.item.source = tmpFile } else { console.log("MMSVideo: Failed to link", attachment.filePath, "to", tmpFile) } } } Component { id: videoComponent Item { id: videoPlayer objectName: "videoPlayer" property alias source: player.source property alias playbackState: player.playbackState function play() { player.play() } function pause() { player.pause() } function stop() { player.stop() } anchors.fill: parent MediaPlayer { id: player autoPlay: true } VideoOutput { id: videoOutput anchors.fill: parent source: player } Rectangle { id: thumbnail anchors.fill: parent visible: player.status == MediaPlayer.EndOfMedia color: "black" ActivityIndicator { anchors.centerIn: parent visible: running running: image.status != Image.Ready } Image { id: image anchors.fill: parent visible: status == Image.Ready opacity: visible ? 1.0 : 0.0 Behavior on opacity { UbuntuNumberAnimation {} } fillMode: Image.PreserveAspectFit smooth: true source: "image://thumbnailer/" + player.source.toString().replace("file://", "") asynchronous: true cache: true sourceSize { width: videoPreviewer.thumbnailSize.width height: videoPreviewer.thumbnailSize.height } } } } } } MouseArea { anchors { top: parent.top bottom: toolbar.top left: parent.left right: parent.right } onClicked: application.fullscreen = !application.fullscreen } Rectangle { id: toolbar objectName: "toolbar" property bool collapsed: false anchors.bottom: parent.bottom width: parent.width height: collapsed ? 0 : units.gu(7) Behavior on height { UbuntuNumberAnimation {} } color: "gray" opacity: 0.8 Row { anchors { top: parent.top bottom: parent.bottom horizontalCenter: parent.horizontalCenter } spacing: units.gu(2) Icon { anchors.verticalCenter: parent.verticalCenter width: toolbar.collapsed ? 0 : units.gu(5) height: width Behavior on width { UbuntuNumberAnimation {} } Behavior on height { UbuntuNumberAnimation {} } name: videoLoader.item && videoLoader.item.playbackState == MediaPlayer.PlayingState ? "media-playback-pause" : "media-playback-start" color: "white" MouseArea { anchors.fill: parent onClicked: { if (videoLoader.item.playbackState == MediaPlayer.PlayingState) { videoLoader.item.pause() } else { videoLoader.item.play() } } } } Icon { anchors.verticalCenter: parent.verticalCenter width: toolbar.collapsed ? 0 : units.gu(5) height: width Behavior on width { UbuntuNumberAnimation {} } Behavior on height { UbuntuNumberAnimation {} } name: "media-playback-stop" color: "white" MouseArea { anchors.fill: parent onClicked: { videoLoader.item.stop() } } } } } } messaging-app-0.1+16.04.20160323/src/qml/MessagingContactEditorPage.qml0000644000015600001650000000315012674565025025751 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * dialer-app 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. * * dialer-app 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.2 import QtContacts 5.0 import Ubuntu.Components 1.3 import Ubuntu.AddressBook.ContactEditor 0.1 ContactEditorPage { id: root property var contactListPage: null leadingActions: Action { objectName: "cancel" text: i18n.tr("Cancel") iconName: "back" onTriggered: { root.cancel() root.active = false } } headerActions: [ Action { objectName: "save" text: i18n.tr("Save") iconName: "ok" enabled: root.isContactValid onTriggered: root.save() } ] onContactSaved: { if (root.contactListPage) { if (root.contactListPage.phoneToAdd !== "") { mainStack.removePage(root.contactListPage) } else { root.contactListPage.moveListToContact(contact) root.contactListPage.phoneToAdd = "" } } } } messaging-app-0.1+16.04.20160323/src/messagingapplication.cpp0000644000015600001650000002414312674565042024161 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2012-2015 Canonical, Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ #include "messagingapplication.h" #include "audiorecorder.h" #include "fileoperations.h" #include "stickers-history-model.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #include #include #include #include #define MESSAGING_FULLSCREEN_FLAG 0x00800000 using namespace QtVersit; #define Pair QPair namespace C { #include } static void printUsage(const QStringList& arguments) { qDebug() << "usage:" << arguments.at(0).toUtf8().constData() << "[message:///PHONE_NUMBER]" << "[--fullscreen]" << "[--help]" << "[-testability]"; } //this is necessary to work on desktop //On desktop use: export MESSAGING_APP_ICON_THEME=ubuntu-mobile static void installIconPath() { QByteArray iconTheme = qgetenv("MESSAGING_APP_ICON_THEME"); if (!iconTheme.isEmpty()) { QIcon::setThemeName(iconTheme); } } static QObject* FileOperations_singleton_factory(QQmlEngine* engine, QJSEngine* scriptEngine) { Q_UNUSED(engine); Q_UNUSED(scriptEngine); return new FileOperations(); } static QObject* StickersHistoryModel_singleton_factory(QQmlEngine* engine, QJSEngine* scriptEngine) { Q_UNUSED(engine); Q_UNUSED(scriptEngine); return new StickersHistoryModel(); } MessagingApplication::MessagingApplication(int &argc, char **argv) : QGuiApplication(argc, argv), m_view(0), m_applicationIsReady(false) { setApplicationName("MessagingApp"); } bool MessagingApplication::fullscreen() const { // FIXME: Correct flag to be used will be defined in future releases return m_view->flags() & static_cast (MESSAGING_FULLSCREEN_FLAG); } bool MessagingApplication::setup() { installIconPath(); static QList validSchemes; bool fullScreen = false; if (validSchemes.isEmpty()) { validSchemes << "message"; } QStringList arguments = this->arguments(); if (arguments.contains("--help")) { printUsage(arguments); return false; } if (arguments.contains("--fullscreen")) { arguments.removeAll("--fullscreen"); fullScreen = true; } // The testability driver is only loaded by QApplication but not by QGuiApplication. // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own. if (arguments.contains("-testability") || qgetenv("QT_LOAD_TESTABILITY") == "1") { arguments.removeAll("-testability"); QLibrary testLib(QLatin1String("qttestability")); if (testLib.load()) { typedef void (*TasInitialize)(void); TasInitialize initFunction = (TasInitialize)testLib.resolve("qt_testability_init"); if (initFunction) { initFunction(); } else { qCritical("Library qttestability resolve failed!"); } } else { qCritical("Library qttestability load failed!"); } } /* Ubuntu APP Manager gathers info on the list of running applications from the .desktop file specified on the command line with the desktop_file_hint switch, and will also pass a stage hint So app will be launched like this: /usr/bin/messaging-app --desktop_file_hint=/usr/share/applications/messaging-app.desktop --stage_hint=main_stage So remove whatever --arg still there before continue parsing */ for (int i = arguments.count() - 1; i >=0; --i) { if (arguments[i].startsWith("--")) { arguments.removeAt(i); } } if (arguments.size() == 2) { QUrl uri(arguments.at(1)); if (validSchemes.contains(uri.scheme())) { m_arg = arguments.at(1); } } m_view = new QQuickView(); QObject::connect(m_view, SIGNAL(statusChanged(QQuickView::Status)), this, SLOT(onViewStatusChanged(QQuickView::Status))); QObject::connect(m_view->engine(), SIGNAL(quit()), SLOT(quit())); m_view->setResizeMode(QQuickView::SizeRootObjectToView); m_view->setTitle("Messaging"); m_view->rootContext()->setContextProperty("application", this); m_view->rootContext()->setContextProperty("i18nDirectory", I18N_DIRECTORY); m_view->rootContext()->setContextProperty("view", m_view); m_view->engine()->setBaseUrl(QUrl::fromLocalFile(messagingAppDirectory())); m_view->engine()->addImportPath(UNITY8_QML_PATH); // check if there is a contacts backend override QString contactsBackend = qgetenv("QTCONTACTS_MANAGER_OVERRIDE"); if (!contactsBackend.isEmpty()) { qDebug() << "Overriding the contacts backend, using:" << contactsBackend; m_view->rootContext()->setContextProperty("QTCONTACTS_MANAGER_OVERRIDE", contactsBackend); } QDir dataLocation(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)); m_view->rootContext()->setContextProperty("dataLocation", dataLocation.absolutePath()); dataLocation.mkpath("stickers"); const char* uri = "messagingapp.private"; qmlRegisterType(uri, 0, 1, "AudioRecorder"); qmlRegisterSingletonType(uri, 0, 1, "FileOperations", FileOperations_singleton_factory); qmlRegisterSingletonType(uri, 0, 1, "StickersHistoryModel", StickersHistoryModel_singleton_factory); // used by autopilot tests to load vcards during tests QByteArray testData = qgetenv("QTCONTACTS_PRELOAD_VCARD"); m_view->rootContext()->setContextProperty("QTCONTACTS_PRELOAD_VCARD", testData); QString pluginPath = ubuntuPhonePluginPath(); if (!pluginPath.isNull()) { m_view->engine()->addImportPath(pluginPath); } m_view->setSource(QUrl::fromLocalFile("messaging-app.qml")); if (fullScreen) { m_view->showFullScreen(); } else { m_view->show(); } notify_init(C::gettext("Messaging application")); return true; } MessagingApplication::~MessagingApplication() { if (m_view) { delete m_view; } } void MessagingApplication::setFullscreen(bool fullscreen) { // FIXME: Correct flag to be used will be defined in future releases if (fullscreen) { m_view->setFlags(m_view->flags() | static_cast (MESSAGING_FULLSCREEN_FLAG)); } else { m_view->setFlags(m_view->flags() & !static_cast (MESSAGING_FULLSCREEN_FLAG)); } Q_EMIT fullscreenChanged(); } void MessagingApplication::onViewStatusChanged(QQuickView::Status status) { if (status != QQuickView::Ready) { return; } onApplicationReady(); } void MessagingApplication::onApplicationReady() { m_applicationIsReady = true; parseArgument(m_arg); m_arg.clear(); } void MessagingApplication::parseArgument(const QString &arg) { if (arg.isEmpty()) { return; } QString text; QString accountId; QUrl url(arg); QString scheme = url.scheme(); QString value = url.path(); // Remove the first "/" if needed. We have two possible scenarios: // message:///phonenumber and message:phonenumber if (value.startsWith("/")) { value = value.right(value.length()-1); } QUrlQuery query(url); Q_FOREACH(const Pair &item, query.queryItems(QUrl::FullyDecoded)) { if (item.first == "text") { text = item.second; } if (item.first == "accountId") { accountId = item.second; } } QQuickItem *mainView = m_view->rootObject(); if (!mainView) { return; } if (scheme == "message") { if (!value.isEmpty()) { QMetaObject::invokeMethod(mainView, "startChat", Q_ARG(QVariant, value), Q_ARG(QVariant, text), Q_ARG(QVariant, accountId)); } else { QMetaObject::invokeMethod(mainView, "startNewMessage"); } } } void MessagingApplication::activateWindow() { if (m_view) { m_view->raise(); m_view->requestActivate(); } } QString MessagingApplication::readTextFile(const QString &fileName) { QString text; QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { return QString(); } text = QString(file.readAll()); file.close(); return text; } QString MessagingApplication::fileMimeType(const QString &fileName) { QMimeDatabase db; QMimeType type = db.mimeTypeForFile(fileName); return type.name(); } void MessagingApplication::showNotificationMessage(const QString &message, const QString &icon) { NotifyNotification *notification = notify_notification_new(message.toStdString().c_str(), NULL, icon.toStdString().c_str()); notify_notification_set_urgency(notification, NOTIFY_URGENCY_LOW); GError *error = NULL; if (!notify_notification_show(notification, &error)) { qWarning() << "Failed to show notification:" << error->message; g_error_free (error); } g_object_unref(G_OBJECT(notification)); } QObject *MessagingApplication::findMessagingChild(const QString &objectName) { return m_view->rootObject()->findChild(objectName); } messaging-app-0.1+16.04.20160323/src/messaging-app.url-dispatcher0000644000015600001650000000004212674565025024650 0ustar pbuserpbgroup00000000000000[ { "protocol": "message" } ] messaging-app-0.1+16.04.20160323/src/stickers-history-model.cpp0000644000015600001650000002122412674565025024402 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ #include "stickers-history-model.h" // Qt #include #include #include #include #define CONNECTION_NAME "messaging-app-stickers-history" /*! \class StickersHistoryModel \brief List model that stores information about most recently used stickers StickersHistoryModel is a list model that stores information about the most recently used stickers. Each sticker is simply identified by the sticker pack name plus the name of the sticker image file itself. Stickers are ordered by the time of last use, with the most recent first. By default the model stores a rolling list of the 10 most recently used stickers, though this number can be changed by setting the /a limit */ StickersHistoryModel::StickersHistoryModel(QObject* parent) : QAbstractListModel(parent), m_limit(10) { m_database = QSqlDatabase::addDatabase(QLatin1String("QSQLITE"), CONNECTION_NAME); } StickersHistoryModel::~StickersHistoryModel() { m_database.close(); m_database = QSqlDatabase(); QSqlDatabase::removeDatabase(CONNECTION_NAME); } void StickersHistoryModel::resetDatabase(const QString& databaseName) { beginResetModel(); m_entries.clear(); m_database.close(); m_database.setDatabaseName(databaseName); m_database.open(); createOrAlterDatabaseSchema(); endResetModel(); populateFromDatabase(); } void StickersHistoryModel::createOrAlterDatabaseSchema() { QMutexLocker ml(&m_dbMutex); QSqlQuery query(m_database); QString statement = QLatin1String("CREATE TABLE IF NOT EXISTS history " "(sticker VARCHAR, mostRecentUse DATETIME);"); query.prepare(statement); if (!query.exec()) { qWarning() << "Query failed" << query.lastError(); } } void StickersHistoryModel::populateFromDatabase() { QSqlQuery query(m_database); QString statement = QLatin1String("SELECT sticker, mostRecentUse " "FROM history ORDER BY mostRecentUse DESC;"); query.prepare(statement); if (!query.exec()) { qWarning() << "Query failed" << query.lastError(); } int count = 0; while (query.next()) { HistoryEntry entry; entry.sticker = query.value(0).toString(); entry.mostRecentUse = QDateTime::fromTime_t(query.value(1).toInt()); beginInsertRows(QModelIndex(), count, count); m_entries.append(entry); endInsertRows(); ++count; } } QHash StickersHistoryModel::roleNames() const { static QHash roles; if (roles.isEmpty()) { roles[Sticker] = "sticker"; roles[MostRecentUse] = "mostRecentUse"; } return roles; } int StickersHistoryModel::rowCount(const QModelIndex& parent) const { Q_UNUSED(parent); return m_entries.count(); } QVariant StickersHistoryModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) { return QVariant(); } const HistoryEntry& entry = m_entries.at(index.row()); switch (role) { case Sticker: return entry.sticker; case MostRecentUse: return entry.mostRecentUse; default: return QVariant(); } } const QString StickersHistoryModel::databasePath() const { return m_database.databaseName(); } int StickersHistoryModel::limit() const { return m_limit; } void StickersHistoryModel::setLimit(int limit) { if (limit != m_limit) { m_limit = limit; Q_EMIT limitChanged(); removeExcessRows(); } } void StickersHistoryModel::setDatabasePath(const QString& path) { if (path != databasePath()) { if (path.isEmpty()) { resetDatabase(":memory:"); } else { resetDatabase(path); } Q_EMIT databasePathChanged(); } } int StickersHistoryModel::getEntryIndex(const QString& sticker) const { for (int i = 0; i < m_entries.count(); ++i) { if (m_entries.at(i).sticker == sticker) { return i; } } return -1; } /*! Add an entry to the model. If an entry for the same sticker already exists, it is updated and placed first in the model. Otherwise a new entry is created and added at the begining of the model. If the new row count exceeds the limit, excess rows are purged. */ void StickersHistoryModel::add(const QString& sticker) { if (sticker.isEmpty()) { return; } QDateTime now = QDateTime::currentDateTime(); int index = getEntryIndex(sticker); if (index == -1) { HistoryEntry entry; entry.sticker = sticker; entry.mostRecentUse = now; beginInsertRows(QModelIndex(), 0, 0); m_entries.prepend(entry); endInsertRows(); insertNewEntryInDatabase(entry); Q_EMIT rowCountChanged(); removeExcessRows(); } else { HistoryEntry entry; if (index > 0) { beginMoveRows(QModelIndex(), index, index, QModelIndex(), 0); } entry = m_entries.takeAt(index); entry.mostRecentUse = now; m_entries.prepend(entry); if (index > 0) { endMoveRows(); } QVector roles; roles << MostRecentUse; Q_EMIT dataChanged(this->index(0), this->index(0), roles); updateExistingEntryInDatabase(m_entries.first()); } } void StickersHistoryModel::removeExcessRows() { if (m_limit < rowCount()) { beginRemoveRows(QModelIndex(), m_limit, rowCount() - 1); for (int i = rowCount() - 1; i >= m_limit; i--) { HistoryEntry item = m_entries.takeAt(i); removeEntryFromDatabase(item.sticker); } endRemoveRows(); Q_EMIT rowCountChanged(); } } void StickersHistoryModel::insertNewEntryInDatabase(const HistoryEntry& entry) { QMutexLocker ml(&m_dbMutex); QSqlQuery query(m_database); static QString statement = QLatin1String("INSERT INTO history (sticker, mostRecentUse) " "VALUES (?, ?);"); query.prepare(statement); query.addBindValue(entry.sticker); query.addBindValue(entry.mostRecentUse.toTime_t()); if (!query.exec()) { qWarning() << "Query failed" << query.lastError(); } } void StickersHistoryModel::updateExistingEntryInDatabase(const HistoryEntry& entry) { QMutexLocker ml(&m_dbMutex); QSqlQuery query(m_database); static QString statement = QLatin1String("UPDATE history SET mostRecentUse=?" " WHERE sticker=?;"); query.prepare(statement); query.addBindValue(entry.mostRecentUse.toTime_t()); query.addBindValue(entry.sticker); if (!query.exec()) { qWarning() << "Query failed" << query.lastError(); } } void StickersHistoryModel::removeEntryFromDatabase(const QString& sticker) { QMutexLocker ml(&m_dbMutex); QSqlQuery query(m_database); static QString statement = QLatin1String("DELETE FROM history WHERE sticker=?;"); query.prepare(statement); query.addBindValue(sticker); if (!query.exec()) { qWarning() << "Query failed" << query.lastError(); } } void StickersHistoryModel::clearAll() { if (!m_entries.isEmpty()) { beginResetModel(); m_entries.clear(); endResetModel(); clearDatabase(); Q_EMIT rowCountChanged(); } } void StickersHistoryModel::clearDatabase() { QMutexLocker ml(&m_dbMutex); QSqlQuery query(m_database); QString statement = QLatin1String("DELETE FROM history;"); query.prepare(statement); if (!query.exec()) { qWarning() << "Query failed" << query.lastError(); } } QVariantMap StickersHistoryModel::get(int i) const { QVariantMap item; QHash roles = roleNames(); QModelIndex modelIndex = index(i, 0); if (modelIndex.isValid()) { Q_FOREACH(int role, roles.keys()) { QString roleName = QString::fromUtf8(roles.value(role)); item.insert(roleName, data(modelIndex, role)); } } return item; } messaging-app-0.1+16.04.20160323/src/messaging-app-content.json0000644000015600001650000000016312674565025024347 0ustar pbuserpbgroup00000000000000{ "share": [ "contacts", "pictures", "links", "text", "videos" ] } messaging-app-0.1+16.04.20160323/src/audiorecorder.cpp0000644000015600001650000001470212674565025022610 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2015 Canonical, Ltd. * * Authors: * Arthur Renato Mello * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ #include "audiorecorder.h" #include #include #include #include #include AudioRecorder::AudioRecorder(QObject *parent) : QObject(parent) { m_audioRecorder = new QAudioRecorder(); connect(m_audioRecorder, SIGNAL(stateChanged(QMediaRecorder::State)), SIGNAL(recorderStateChanged())); connect(m_audioRecorder, SIGNAL(statusChanged(QMediaRecorder::Status)), SIGNAL(recorderStatusChanged())); connect(m_audioRecorder, SIGNAL(error(QMediaRecorder::Error)), SLOT(updateRecorderError(QMediaRecorder::Error))); connect(m_audioRecorder, SIGNAL(actualLocationChanged(QUrl)), SLOT(updateActualLocation(QUrl))); connect(m_audioRecorder, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged(qint64))); connect(m_audioRecorder, SIGNAL(audioInputChanged(const QString&)), SIGNAL(audioInputChanged(const QString&))); m_audioSettings = m_audioRecorder->audioSettings(); } AudioRecorder::~AudioRecorder() { delete m_audioRecorder; } AudioRecorder::RecorderState AudioRecorder::recorderState() const { return RecorderState(m_audioRecorder->state()); } AudioRecorder::RecorderStatus AudioRecorder::recorderStatus() const { return RecorderStatus(m_audioRecorder->status()); } AudioRecorder::Error AudioRecorder::errorCode() const { return Error(m_audioRecorder->error()); } QString AudioRecorder::errorString() const { return m_audioRecorder->errorString(); } QString AudioRecorder::outputLocation() const { return m_audioRecorder->outputLocation().toString(); } QString AudioRecorder::actualLocation() const { return m_audioRecorder->actualLocation().toString(); } qint64 AudioRecorder::duration() const { return m_audioRecorder->duration(); } int AudioRecorder::bitRate() const { return m_audioSettings.bitRate(); } int AudioRecorder::channelCount() const { return m_audioSettings.channelCount(); } QString AudioRecorder::codec() const { return m_audioSettings.codec(); } AudioRecorder::EncodingQuality AudioRecorder::quality() const { return EncodingQuality(m_audioSettings.quality()); } int AudioRecorder::sampleRate() const { return m_audioSettings.sampleRate(); } QString AudioRecorder::audioInput() const { return m_audioRecorder->audioInput(); } void AudioRecorder::record() { setRecorderState(RecordingState); } void AudioRecorder::stop() { setRecorderState(StoppedState); } void AudioRecorder::pause() { setRecorderState(PausedState); } void AudioRecorder::setRecorderState(AudioRecorder::RecorderState state) { if (!m_audioRecorder) return; switch (state){ case AudioRecorder::RecordingState: { // Create temporary file to store audio recorded QDir dataLocation(QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)); QTemporaryFile outputFile(dataLocation.absoluteFilePath("audioXXXXXX%1").arg(m_fileExtension)); outputFile.setAutoRemove(false); outputFile.open(); outputFile.close(); setOutputLocation(outputFile.fileName()); m_audioRecorder->record(); break; } case AudioRecorder::StoppedState: m_audioRecorder->stop(); break; case AudioRecorder::PausedState: m_audioRecorder->pause(); break; } } void AudioRecorder::setOutputLocation(const QString &location) { if (outputLocation() != location) { // FIXME: implement auto-removal of previous recordings m_audioRecorder->setOutputLocation(location); Q_EMIT outputLocationChanged(outputLocation()); } } void AudioRecorder::setBitRate(int rate) { if (bitRate() != rate) { m_audioSettings.setBitRate(rate); Q_EMIT bitRateChanged(rate); } } void AudioRecorder::setChannelCount(int count) { if (channelCount() != count) { m_audioSettings.setChannelCount(count); Q_EMIT channelCountChanged(count); } } void AudioRecorder::setCodec(const QString &audioCodec) { if (codec() != audioCodec) { if (!m_audioRecorder->supportedAudioCodecs().contains(audioCodec)) { qWarning() << "AudioRecorder error: Unsupported Audio Codec: " << audioCodec; return; } if (audioCodec == "audio/vorbis" || audioCodec == "audio/speex" || audioCodec == "audio/FLAC") { m_audioRecorder->setContainerFormat("ogg"); m_fileExtension = ".ogg"; } else if (audioCodec == "audio/PCM") { m_audioRecorder->setContainerFormat("wav"); m_fileExtension = ".wav"; } else { m_audioRecorder->setContainerFormat("raw"); } m_audioSettings.setCodec(audioCodec); Q_EMIT codecChanged(audioCodec); } } void AudioRecorder::setQuality(AudioRecorder::EncodingQuality encodingQuality) { if (quality() != encodingQuality) { m_audioSettings.setQuality(QMultimedia::EncodingQuality(encodingQuality)); Q_EMIT qualityChanged(encodingQuality); } } void AudioRecorder::setSampleRate(int rate) { if (sampleRate() != rate) { m_audioSettings.setSampleRate(rate); Q_EMIT sampleRateChanged(rate); } } void AudioRecorder::setAudioInput(const QString &input) { if (audioInput() != input) { m_audioRecorder->setAudioInput(input); Q_EMIT audioInputChanged(input); } } void AudioRecorder::updateRecorderError(QMediaRecorder::Error errorCode) { qWarning() << "AudioRecorder error:" << errorString(); Q_EMIT errorChanged(Error(errorCode), errorString()); } void AudioRecorder::updateActualLocation(const QUrl &url) { Q_EMIT actualLocationChanged(url.toString()); } messaging-app-0.1+16.04.20160323/src/audiorecorder.h0000644000015600001650000001204712674565025022255 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2015 Canonical, Ltd. * * Authors: * Arthur Renato Mello * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ #ifndef AUDIORECORDER_H #define AUDIORECORDER_H #include #include class AudioRecorder : public QObject { Q_OBJECT Q_ENUMS(EncodingQuality) Q_ENUMS(Error) Q_ENUMS(RecorderState) Q_ENUMS(RecorderStatus) Q_PROPERTY(RecorderState recorderState READ recorderState WRITE setRecorderState NOTIFY recorderStateChanged) Q_PROPERTY(RecorderStatus recorderStatus READ recorderStatus NOTIFY recorderStatusChanged) Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) Q_PROPERTY(Error errorCode READ errorCode NOTIFY errorChanged) Q_PROPERTY(QString outputLocation READ outputLocation NOTIFY outputLocationChanged) Q_PROPERTY(QString actualLocation READ actualLocation NOTIFY actualLocationChanged) Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged) Q_PROPERTY(int bitRate READ bitRate WRITE setBitRate NOTIFY bitRateChanged); Q_PROPERTY(int channelCount READ channelCount WRITE setChannelCount NOTIFY channelCountChanged); Q_PROPERTY(QString codec READ codec WRITE setCodec NOTIFY codecChanged); Q_PROPERTY(EncodingQuality quality READ quality WRITE setQuality NOTIFY qualityChanged); Q_PROPERTY(int sampleRate READ sampleRate WRITE setSampleRate NOTIFY sampleRateChanged); Q_PROPERTY(QString audioInput READ audioInput WRITE setAudioInput NOTIFY audioInputChanged); public: enum EncodingQuality { VeryLowQuality = QMultimedia::VeryLowQuality, LowQuality = QMultimedia::LowQuality, NormalQuality = QMultimedia::NormalQuality, HighQuality = QMultimedia::HighQuality, VeryHighQuality = QMultimedia::VeryHighQuality }; enum Error { NoError = QMediaRecorder::NoError, ResourceError = QMediaRecorder::ResourceError, FormatError = QMediaRecorder::FormatError, OutOfSpaceError = QMediaRecorder::OutOfSpaceError }; enum RecorderState { StoppedState = QMediaRecorder::StoppedState, RecordingState = QMediaRecorder::RecordingState, PausedState = QMediaRecorder::PausedState }; enum RecorderStatus { UnavailableStatus = QMediaRecorder::UnavailableStatus, UnloadedStatus = QMediaRecorder::UnloadedStatus, LoadingStatus = QMediaRecorder::LoadingStatus, LoadedStatus = QMediaRecorder::LoadedStatus, StartingStatus = QMediaRecorder::StartingStatus, RecordingStatus = QMediaRecorder::RecordingStatus, PausedStatus = QMediaRecorder::PausedStatus, FinalizingStatus = QMediaRecorder::FinalizingStatus }; AudioRecorder(QObject *parent = 0); ~AudioRecorder(); RecorderState recorderState() const; RecorderStatus recorderStatus() const; Error errorCode() const; QString errorString() const; QString outputLocation() const; QString actualLocation() const; qint64 duration() const; int bitRate() const; int channelCount() const; QString codec() const; EncodingQuality quality() const; int sampleRate() const; QString audioInput() const; public Q_SLOTS: void record(); void stop(); void pause(); void setRecorderState(AudioRecorder::RecorderState state); void setOutputLocation(const QString &location); void setBitRate(int rate); void setChannelCount(int count); void setCodec(const QString &audioCodec); void setQuality(AudioRecorder::EncodingQuality encodingQuality); void setSampleRate(int rate); void setAudioInput(const QString &input); Q_SIGNALS: void recorderStateChanged(); void recorderStatusChanged(); void errorChanged(AudioRecorder::Error errorCode, const QString &errorString); void outputLocationChanged(const QString &location); void actualLocationChanged(const QString &location); void durationChanged(qint64 duration); void bitRateChanged(int rate); void channelCountChanged(int count); void codecChanged(const QString &codec); void qualityChanged(AudioRecorder::EncodingQuality quality); void sampleRateChanged(int rate); void audioInputChanged(const QString &input); private Q_SLOTS: void updateRecorderError(QMediaRecorder::Error); void updateActualLocation(const QUrl&); private: QAudioRecorder *m_audioRecorder; QAudioEncoderSettings m_audioSettings; QString m_fileExtension; }; #endif // AUDIORECORDER_H messaging-app-0.1+16.04.20160323/src/messaging-app.desktop.in.in0000644000015600001650000000103112674565025024404 0ustar pbuserpbgroup00000000000000[Desktop Entry] Type=Application _Name=Messaging _GenericName=Messaging App _Comment=Messaging application _Keywords=Messages;SMS;MMS;Text Messages;Text Exec=messaging-app %u Terminal=false Icon=@CMAKE_INSTALL_PREFIX@/@MESSAGING_APP_DIR@/assets/messaging-app.png MimeType=x-scheme-handler/contact;x-scheme-handler/call X-Ubuntu-Touch=true X-Ubuntu-Default-Department-ID=accessories X-Ubuntu-Single-Instance=true X-Ubuntu-Splash-Show-Header=true X-Screenshot=@CMAKE_INSTALL_PREFIX@/@MESSAGING_APP_DIR@/assets/messaging-app-screenshot.png messaging-app-0.1+16.04.20160323/src/stickers-history-model.h0000644000015600001650000000522312674565025024050 0ustar pbuserpbgroup00000000000000/* * Copyright 2015 Canonical Ltd. * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ #ifndef __STICKERS_HISTORY_MODEL_H__ #define __STICKERS_HISTORY_MODEL_H__ // Qt #include #include #include #include #include #include class StickersHistoryModel : public QAbstractListModel { Q_OBJECT Q_PROPERTY(QString databasePath READ databasePath WRITE setDatabasePath NOTIFY databasePathChanged) Q_PROPERTY(int limit READ limit WRITE setLimit NOTIFY limitChanged) Q_PROPERTY(int count READ rowCount NOTIFY rowCountChanged) Q_ENUMS(Roles) public: StickersHistoryModel(QObject* parent=0); ~StickersHistoryModel(); enum Roles { Sticker = Qt::UserRole + 1, MostRecentUse }; // reimplemented from QAbstractListModel QHash roleNames() const; int rowCount(const QModelIndex& parent=QModelIndex()) const; QVariant data(const QModelIndex& index, int role) const; const QString databasePath() const; void setDatabasePath(const QString& path); int limit() const; void setLimit(int limit); Q_INVOKABLE void add(const QString& sticker); Q_INVOKABLE void clearAll(); Q_INVOKABLE QVariantMap get(int index) const; Q_SIGNALS: void databasePathChanged() const; void rowCountChanged() const; void limitChanged() const; protected: struct HistoryEntry { QString sticker; QDateTime mostRecentUse; }; QList m_entries; int getEntryIndex(const QString& sticker) const; void updateExistingEntryInDatabase(const HistoryEntry& entry); private: QMutex m_dbMutex; QSqlDatabase m_database; int m_limit; void resetDatabase(const QString& databaseName); void createOrAlterDatabaseSchema(); void populateFromDatabase(); void insertNewEntryInDatabase(const HistoryEntry& entry); void removeEntryFromDatabase(const QString& sticker); void clearDatabase(); void removeExcessRows(); }; #endif // __STICKERS_HISTORY_MODEL_H__ messaging-app-0.1+16.04.20160323/src/fileoperations.h0000644000015600001650000000230212674565025022442 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2015 Canonical, Ltd. * * Authors: * Arthur Mello * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ #ifndef FILEOPERATIONS_H #define FILEOPERATIONS_H #include class FileOperations : public QObject { Q_OBJECT public: FileOperations(QObject *parent = 0); ~FileOperations(); Q_INVOKABLE QString getTemporaryFile(const QString &fileExtension) const; Q_INVOKABLE bool link(const QString &from, const QString &to); Q_INVOKABLE bool remove(const QString &fileName); Q_INVOKABLE qint64 size(const QString &filePath); }; #endif // FILEOPERATIONS_H messaging-app-0.1+16.04.20160323/src/CMakeLists.txt0000644000015600001650000000270112674565025022011 0ustar pbuserpbgroup00000000000000set(MESSAGING_APP messaging-app) set(messaging_app_HDRS audiorecorder.h fileoperations.h messagingapplication.h stickers-history-model.h ) set(messaging_app_SRCS audiorecorder.cpp fileoperations.cpp messagingapplication.cpp main.cpp stickers-history-model.cpp ) add_executable(${MESSAGING_APP} ${messaging_app_SRCS} ) qt5_use_modules(${MESSAGING_APP} Core DBus Gui Multimedia Qml Quick Sql Versit) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${NOTIFY_INCLUDE_DIRS} ) target_link_libraries(${MESSAGING_APP} ${NOTIFY_LIBRARIES}) install(TARGETS ${MESSAGING_APP} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) # Handle i18n in the desktop file set(DESKTOP_FILE ${MESSAGING_APP}.desktop) configure_file(${DESKTOP_FILE}.in.in ${DESKTOP_FILE}.in) add_custom_target(${DESKTOP_FILE} ALL COMMENT "Merging translations into ${DESKTOP_FILE}" COMMAND LC_ALL=C ${INTLTOOL_MERGE} -d -u ${CMAKE_SOURCE_DIR}/po ${DESKTOP_FILE}.in ${DESKTOP_FILE} >/dev/null ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE} DESTINATION ${CMAKE_INSTALL_DATADIR}/applications ) install(FILES "messaging-app.url-dispatcher" DESTINATION ${CMAKE_INSTALL_DATADIR}/url-dispatcher/urls ) install(FILES "messaging-app-content.json" DESTINATION ${CMAKE_INSTALL_DATADIR}/content-hub/peers RENAME messaging-app ) add_subdirectory(qml) messaging-app-0.1+16.04.20160323/src/fileoperations.cpp0000644000015600001650000000317612674565025023007 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2015 Canonical, Ltd. * * Authors: * Arthur Mello * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ #include "fileoperations.h" #include #include #include #include FileOperations::FileOperations(QObject *parent) : QObject(parent) { } FileOperations::~FileOperations() { } QString FileOperations::getTemporaryFile(const QString &fileExtension) const { //TODO remove once lp:1420728 is fixed QDir dataLocation(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); if (!dataLocation.exists()) { dataLocation.mkpath("."); } QTemporaryFile tmp(dataLocation.path() + "/tmpXXXXXX" + fileExtension); tmp.open(); return tmp.fileName(); } bool FileOperations::link(const QString &from, const QString &to) { return QFile::link(from, to); } bool FileOperations::remove(const QString &fileName) { return QFile::remove(fileName); } qint64 FileOperations::size(const QString &filePath) { return QFile(filePath).size(); } messaging-app-0.1+16.04.20160323/po/0000755000015600001650000000000012674565500017076 5ustar pbuserpbgroup00000000000000messaging-app-0.1+16.04.20160323/po/pl.po0000644000015600001650000002674612674565025020072 0ustar pbuserpbgroup00000000000000# Polish translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-23 22:36+0000\n" "Last-Translator: GTriderXC \n" "Language-Team: Polish \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-Launchpad-Export-Date: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 godzina rozmowy" msgstr[1] "%1 godziny rozmowy" msgstr[2] "%1 godzin rozmowy" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minuta rozmowy" msgstr[1] "%1 minuty rozmowy" msgstr[2] "%1 minut rozmowy" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekunda rozmowy" msgstr[1] "%1 sekundy rozmowy" msgstr[2] "%1 sekund rozmowy" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Zaakceptowano" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Dodaj" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Dodaj odbiorcę" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Wszystko" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Załącznik: %1 kontakt" msgstr[1] "Załączniki: %1 kontakty" msgstr[2] "Załączniki: %1 kontaktów" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Załącznik: %1 plik" msgstr[1] "Załączniki: %1 pliki" msgstr[2] "Załączniki: %1 plików" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Załącznik: %1 obraz" msgstr[1] "Załączniki: %1 obrazy" msgstr[2] "Załączniki: %1 obrazów" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Załącznik: %1 film" msgstr[1] "Załączniki: %1 filmy" msgstr[2] "Załączniki: %1 filmów" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Załączniki dźwiękowe nie są obsługiwane" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Połączenie" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Anuluj" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Czy zmienić wszystkie powiązania wiadomości dla %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Zamknij" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Utwórz nową wiadomość przeciągając palcem z dołu ekranu." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopiuj" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Usuń" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Usunięto" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Dostarczono" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Nie pytaj ponownie" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Edycja" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Włącz czat grupowy MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Niepowodzenie" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Niepowodzenie!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Ulubione" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Nieobsługiwany typ plików" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Od" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Rozumiem" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupa" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Osób w grupie: (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Podgląd obrazu" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informacje" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Później" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Szczegóły wiadomości" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Wiadomości" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Wiadomości;SMS;MMS;Wiadomość tekstowa;Tekst" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Wiadomości" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Wiadomości" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Menedżer wiadomości" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Brak części wiadomości" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Ja" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nowa wiadomość" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nie" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nie wybrano karty SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Brak sieci" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "OK" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Oczekiwanie" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Aby wykonywać połączenia i wysyłać wiadomości, odblokuj kartę SIM. Można " "tego dokonać za pomocą ikony sieci u góry wyświetlacza lub w menu Ustawienia systemowe > Zabezpieczenia & " "Prywatność." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Przeczytane" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Odebrane" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Usuń" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Spróbuj ponownie" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Karta SIM jest zablokowana" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Zapisz" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Szukaj" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Szukaj..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Proszę wybrać domyślną kartę SIM dla wszystkich wysyłanych wiadomości. Wybór " "można zmienić w ustawieniach systemu." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Wyślij" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Wysłane" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Ustawienia" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Udostępnij" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Stan" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Przeciągnij, aby skasować" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Przeciągnij, aby wyświetlić dostępne opcje" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Przełącz na domyślną kartę SIM" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "W tej chwili nie udało się wykonać operacji" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Wiadomość skopiowana do schowka" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Brak zasięgu sieci dla %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Brak połączenia z siecią." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Do" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Do:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Dzisiaj" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Typ" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Nieznany" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Nieznany kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Podgląd obrazu" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Załączniki wideo nie są obsługiwane" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Witaj w programie komunikatora Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Napisz wiadomość..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Tak" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Wczoraj" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Należy wybrać kartę SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Przełączono na %1 @ %2" #~ msgid "+ Create New" #~ msgstr "+ Utwórz nowy" #~ msgid "Create new" #~ msgstr "Utwórz nową" messaging-app-0.1+16.04.20160323/po/bs.po0000644000015600001650000002575312674565025020060 0ustar pbuserpbgroup00000000000000# Bosnian translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-03-09 19:13+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Bosnian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 poziv sata" msgstr[1] "%1 poziv sati" msgstr[2] "%1 poziv sati" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 poziv minute" msgstr[1] "%1 poziv minuta" msgstr[2] "%1 poziv minuta" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 poziv sekunde" msgstr[1] "%1 poziv sekundi" msgstr[2] "%1 poziv sekundi" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Prihvaćeno" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Dodaj" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Dodaj primatelja" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Sve" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Prilog: %1 kontakt" msgstr[1] "Prilozi: %1 kontakta" msgstr[2] "Prilozi: %1 kontakta" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Prilog: %1 fajl" msgstr[1] "Prilozi: %1 fajla" msgstr[2] "Prilozi: %1 fajlova" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Prilog: %1 slika" msgstr[1] "Prilozi: %1 slike" msgstr[2] "Prilozi: %1 slika" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Prilog: %1 video" msgstr[1] "Prilozi: %1 videa" msgstr[2] "Prilozi: %1 videa" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audio prilog nije podržan" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Poziv" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Otkaži" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Promjeni sve Asocijacije poruka u %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Zatvori" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Kreiraj novu poruku prelaskom gore sa dna ekrana." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt osoba" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopiraj" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Izbriši" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Obrisan" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Dostavljeno" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Ne pitaj ponovo" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Nije uspjelo" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Nije uspjelo!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Omiljeno" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Tip datoteke nije podržan" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Od" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupa" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupa (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Pregled slike" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Kasnije" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informacija o poruci" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Poruke" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Poruke;SMS;MMS;Tekstualne poruke;Tekst" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Slanje poruka" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplikacija za slanje poruka" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplikacija za slanje poruka" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Nedostaju podaci o poruci" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Ja" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nova poruka" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ne" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nije odabrana SIM kartica" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Nema mreže" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "U redu" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Na čekanju" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Molimo otključajte Vašu SIM karticu kako bi pravili pozive ili slali poruke. " "Možete otključati Vašu SIM karticu uz pomoć mrežnog indikatora na vrhu " "ekrana ili posjetom Postavki > Sigurnosti " "& Privatnosti." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Čitanje" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Primljeno" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Ukloni" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Ponovi" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM kartica je zaključana" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Snimi" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Traži" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Traži..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Odaberite primarni SIM za sve odlazne poruke. Možete promjeniti vaš izbor u " "Postavke." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Pošalji" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Poslano" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Podijeli" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Prebaci na primarni SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Privremeno nije uspjelo" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Tekstualna poruka kopirana u clipboard" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Trenutno nema mreže na %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Trenutno nema mreže." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Za" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Za:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Danas" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Vrsta" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Nepoznat" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Nepoznat kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Pregled videa" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video prilog nije podržan" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Napiši poruku..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Da" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Jučer" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Morate odabrati SIM karticu" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Prebacili ste na %1 @ %2" messaging-app-0.1+16.04.20160323/po/pa.po0000644000015600001650000003172212674565025020045 0ustar pbuserpbgroup00000000000000# Punjabi translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-02 05:16+0000\n" "Last-Translator: Gursharnjit_Singh \n" "Language-Team: Punjabi \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 ਘੰਟਾ ਕਾਲ" msgstr[1] "%1 ਘੰਟੇ ਕਾਲ" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 ਮਿੰਟ ਕਾਲ" msgstr[1] "%1 ਮਿੰਟ ਕਾਲ" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 ਸਕਿੰਟ ਕਾਲ" msgstr[1] "%1 ਸਕਿੰਟ ਕਾਲ" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "ਮਨਜ਼ੂਰ" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "ਜੋੜੋ" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "ਪ੍ਰਾਪਤ ਕਰਤਾ ਜੋੜੋ" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "ਸਾਰੇ" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "ਨੱਥੀ: %1 ਸੰਪਰਕ" msgstr[1] "ਨੱਥੀ: %1 ਸੰਪਰਕ" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "ਨੱਥੀ: %1 ਫ਼ਾਈਲ" msgstr[1] "ਨੱਥੀ: %1 ਫ਼ਾਈਲਾਂ" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "ਨੱਥੀ: %1 ਤਸਵੀਰ" msgstr[1] "ਨੱਥੀ: %1 ਤਸਵੀਰਾਂ" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "ਨੱਥੀ: %1 ਵੀਡੀਓ" msgstr[1] "ਨੱਥੀ: %1 ਵੀਡੀਓ" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "ਨੱਥੀ ਕੀਤੀ ਆਡੀਓ ਨੂੰ ਸਹਿਯੋਗ ਨਹੀਂ" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "ਕਾਲ" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "ਰੱਦ" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "%1 ਨਾਲ ਸੰਬੰਧਤ ਸਾਰੇ ਸਨੁੇਹੇ ਬਦਲੋ?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "ਬੰਦ" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "ਸਕਰੀਨ ਦੇ ਤਲੇ ਨੂੰ ਉੱਪਰ ਵੱਲ ਖਿਸਕਾਉਣ ਦੁਆਰਾ ਇੱਕ ਨਵੇਂ ਸੁਨੇਹਾ ਲਿਖੋ।" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "ਸੰਪਰਕ" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "ਕਾਪੀ" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "ਹਟਾਓ" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "ਹਟਾਇਆ" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "ਪਹੁੰਚਾਇਆ" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "ਫੇਰ ਨਾ ਪੁੱਛੋ" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "MMS ਗਰੁੱਪ ਚੈੱਟ ਨੂੰ ਚਾਲੂ ਕਰੋ" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "ਫ਼ੇਲ੍ਹ ਹੋਇਆ" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "ਫ਼ੇਲ੍ਹ ਹੋਇਆ!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "ਮਨਪਸੰਦ" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "ਫਾਈਲ ਕਿਸਮ ਨੂੰ ਸਹਿਯੋਗ ਨਹੀਂ" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "ਵੱਲੋਂ" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "ਮਿਲ ਗਿਆ" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "ਗਰੁੱਪ" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "ਗਰੁੱਪ (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "ਤਸਵੀਕ ਝਲਕ" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "ਜਾਣਕਾਰੀ" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "ਬਾਅਦ ਵਿੱਚ" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "ਸੁਨੇਹਾ ਜਾਣਕਾਰੀ" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "ਸੁਨੇਹੇ" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "ਸੁਨੇਹੇ;SMS;MMS;ਟੈਕਸਟ ਸੁਨੇਹੇ;ਟੈਕਸਟ" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "ਮੈਸੇਜ਼ਿੰਗ" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "ਮੈਸੇਜ਼ਿੰਗ ਐਪ" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "ਮੈਸੇਜ਼ਿੰਗ ਐਪਲੀਕੇਸ਼ਨ" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "ਸੁਨੇਹਾ ਡਾਟਾ ਲਾਪਤਾ" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "ਖੁਦ" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "ਨਵਾਂ ਸੁਨੇਹਾ" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "ਨਹੀਂ" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "ਕੋਈ ਸਿਮ ਕਾਰਡ ਨਹੀਂ ਚੁਣਿਆ" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "ਨੈੱਟਵਰਕ ਨਹੀਂ" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "ਠੀਕ" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "ਬਾਕੀ" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "ਕਿਰਪਾ ਕਰਕੇ ਕਾਲ ਕਰਨ ਜਾਂ ਸੁਨੇਹਾ ਭੇਜਣ ਲਈ ਆਪਣੇ ਸਿਮ ਕਾਰਡ ਦਾ ਲਾੱਕ ਖੋਲ੍ਹੋ। ਤੁਸੀਂ " "ਸਕਰੀਨ ਦੇ ਉੱਤੇ ਦਿੱਤੇ ਨੈੱਟਵਰਕ ਸੂਚਕ ਜਾਂ ਸਿਸਟਮ " "ਸੈਟਿੰਗ > ਸੁਰੱਖਿਆ & ਪਰਦੇਦਾਰੀ ਤੇ ਜਾ ਕੇ ਆਪਣੇ ਸਿਮ ਕਾਰਡ ਦਾ ਲਾੱਕ ਖੋਲ੍ਹ " "ਸਕਦੇ ਹੋ।" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "ਪੜ੍ਹੋ" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "ਮਿਲਿਆ" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "ਹਟਾਓ" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "ਸਿਮ ਕਾਰਡ ਲਾਕ ਹੈ" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "ਸੰਭਾਲ੍ਹੋ" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "ਖੋਜ" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "ਖੋਜ..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "ਸਾਰੇ ਬਾਹਰ ਜਾਣ ਵਾਲੇ ਸੁਨੇਹਿਆਂ ਲਈ ਇੱਕ ਮੂਲ ਸਿਮ ਚੁਣੋ। ਤੁਸੀਂ ਹਮੇਸਾ ਸਿਸਟਮ ਸੈਟਿੰਗਵਿੱਚ ਆਪਣੀ ਚੋਣ ਬਦਲ ਸਕਦੇ ਹੋ।" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "ਭੇਜੋ" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "ਭੇਜੇ" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "ਸੈਟਿੰਗ" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "ਸਾਂਝਾ ਕਰੋ" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "ਦਰਜਾ" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "ਹਟਾਉਣ ਲਈ ਖਿੱਚੋ" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "ਕਾਰਜ ਖੋਲ੍ਹਣ ਲਈ ਖਿੱਚੋ" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "ਮੂਲ ਸਿਮ ਲਈ ਬਦਲੋ:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਫ਼ੇਲ੍ਹ ਹੋਇਆ" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "ਟੈਕਸਟ ਸੁਨੇਹਾ ਕਲਿੱਪਬੋਰਡ ਤੇ ਕਾਪੀ ਹੋਇਆ" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "ਇਸ ਸਮੇਂ %1 ਉੱਤੇ ਕੋਈ ਨੈੱਟਵਰਕ ਨਹੀਂ ਹੈ" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "ਇਸ ਸਮੇਂ ਕੋਈ ਨੈੱਟਵਰਕ ਨਹੀਂ ਹੈ।" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "ਵੱਲ" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "ਵੱਲ:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "ਅੱਜ" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "ਕਿਸਮ" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "ਅਣਜਾਣ" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "ਅਣਪਛਾਤਾ ਸੰਪਰਕ" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "ਵਿਡੀਓ ਝਲਕ" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "ਨੱਥੀ ਕੀਤੀ ਵੀਡੀਓ ਨੂੰ ਸਹਿਯੋਗ ਨਹੀਂ" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "ਤੁਹਾਡੀ ਉਬੰਤੂ ਮੈਸੇਜਿੰਗ ਐਪ ਵਿੱਚ ਸੁਆਗਤ ਹੈ।" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "ਇੱਕ ਸੁਨੇਹਾ ਲਿਖੋ..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "ਹਾਂ" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "ਕੱਲ੍ਹ" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "ਤੁਹਾਨੂੰ ਸਿਮ ਚੁਣਨ ਦੀ ਲੋੜ" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "ਤੁਸੀਂ %1 @ %2 ਵਿੱਚ ਬਦਲੋ" #~ msgid "+ Create New" #~ msgstr "+ ਨਵਾਂ ਬਣਾਓ" messaging-app-0.1+16.04.20160323/po/az.po0000644000015600001650000002254312674565025020060 0ustar pbuserpbgroup00000000000000# Azerbaijani translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-09-07 13:30+0000\n" "Last-Translator: Nicat Məmmədov \n" "Language-Team: Azerbaijani \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 saat zəng" msgstr[1] "%1 saat zəng" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 dəqiqə zəng" msgstr[1] "%1 dəqiqə zəng" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 saniyə zəng" msgstr[1] "%1 saniyə zəng" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Əlavə et" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Zəng" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "İmtina" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Yeni məktub" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Bu gün" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Məktub yaz..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Dünən" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/messaging-app.pot0000644000015600001650000002144212674565025022362 0ustar pbuserpbgroup00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-15 10:55-0300\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" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:51 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "" msgstr[1] "" #: ../src/qml/MainPage.qml:41 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:572 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:50 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:90 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:83 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:86 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:77 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:80 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:561 ../src/qml/Messages.qml:619 msgid "Call" msgstr "" #: ../src/qml/MainPage.qml:91 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:104 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:381 msgid "Close" msgstr "" #: ../src/qml/MainPage.qml:147 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/Messages.qml:630 msgid "Contact" msgstr "" #: ../src/qml/MessagesListView.qml:92 ../src/qml/SwipeItemDemo.qml:185 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:42 ../src/qml/ThreadDelegate.qml:96 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:70 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:144 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:90 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:262 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:25 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:177 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:37 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:167 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:211 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:265 msgid "New Message" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:70 #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:377 msgid "No network" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/Messages.qml:329 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:85 ../src/qml/SwipeItemDemo.qml:181 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:32 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:78 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:54 ../src/qml/NewRecipientPage.qml:66 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:78 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:45 ../src/qml/MessagingContactViewPage.qml:60 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:256 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:206 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:69 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:378 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:378 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:76 ../src/qml/MMS/PreviewerContact.qml:34 #: ../src/qml/Messages.qml:839 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:25 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:161 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/Messages.qml:957 msgid "Write a message..." msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:76 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/gl.po0000644000015600001650000002615312674565025020051 0ustar pbuserpbgroup00000000000000# Galician translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-17 16:52+0000\n" "Last-Translator: Marcos Lans \n" "Language-Team: Galician \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Chamada de %1 hora" msgstr[1] "Chamada de %1 horas" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Chamada de %1 minuto" msgstr[1] "Chamada de %1 minutos" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Chamada de %1 segundo" msgstr[1] "Chamada de %1 segundos" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Aceptada" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Engadir" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Engadir destinatario" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Todos" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Anexo: %1 contacto" msgstr[1] "Anexos: %1 contactos" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Anexo: %1 ficheiro" msgstr[1] "Anexos: %1 ficheiros" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Anexo: %1 imaxe" msgstr[1] "Anexos: %1 imaxes" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Anexo: %1 vídeo" msgstr[1] "Anexos: %1 vídeos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "O anexo de son non é compatíbel" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Chamar" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancelar" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Desexa cambiar todas as asociacións de mensaxería a %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Pechar" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Escribir unha mensaxe esvarando o dedo desde o fondo da pantalla." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contacto" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copiar" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Eliminar" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Eliminado" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Entregado" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Non preguntar máis" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Editar" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Conversa de grupo por MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Fallou" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Fallou!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoritos" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "O tipo de ficheiro non é compatíbel" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "De" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Listo" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupo" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupo (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Previsualizar imaxe" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Información" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Máis tarde" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Información da mensaxe" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mensaxes" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Mensaxes;SMS;MMS;Mensaxes de texto;Texto" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mensaxería" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplicativo de mensaxería" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplicativo de mensaxería" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Faltan os datos da mensaxe" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Eu" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nova mensaxe" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Non" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Non seleccionou a tarxeta SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Sen rede" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Aceptar" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pendentes" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Desbloquee a tarxeta SIM para chamar ou enviar unha mensaxe. Pode " "desbloqueala desde o indicador de rede na parte superior da pantalla ou indo " "a Axustes do sistema > Seguranza & " "Privacidade." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Lidas" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Recibidas" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Eliminadas" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Reintentar" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "A tarxeta SIM está bloqueada" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Gardar" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Buscar" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Buscar..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Seleccione unha SIM predeterminada para as mensaxes saíntes. Pode cambiar a " "elección en Axustes do sistema." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Enviar" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Enviada" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Axustes" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Compartir" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Estado" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Esvare o dedo para eliminar" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Esvare o dedo para ver accións" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Cambiar á SIM predeterminada" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Fallos temporais" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Mensaxe copiada ao portapapeis" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Actualmente non hai ningunha rede en %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Actualmente non hai ningunha rede." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "A" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Para:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hoxe" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipo" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Descoñecido" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contacto descoñecido" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Previsualizar vídeo" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "O anexo de vídeo non é compatíbel" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Benvido/a ao aplicativo de mensaxería de Ubuntu" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Escribir unha mensaxe..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Si" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Onte" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Debe seleccionar unha tarxeta SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Cambiado a %1 (%2)" #~ msgid "Create new" #~ msgstr "Crear unha nova" #~ msgid "+ Create New" #~ msgstr "+ Crear un novo" messaging-app-0.1+16.04.20160323/po/nl.po0000644000015600001650000002626612674565025020065 0ustar pbuserpbgroup00000000000000# Dutch translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-03-03 14:15+0000\n" "Last-Translator: rob \n" "Language-Team: Dutch \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "gesprek van %1 uur" msgstr[1] "gesprek van %1 uur" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "gesprek van %1 minuut" msgstr[1] "gesprek van %1 minuten" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "gesprek van %1 seconde" msgstr[1] "gesprek van %1 seconden" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Geaccepteerd" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Toevoegen" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Ontvanger toevoegen" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Alle" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Bijlage: %1 contact" msgstr[1] "Bijlages: %1 contacten" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Bijlage: %1 bestand" msgstr[1] "Bijlages: %1 bestanden" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Bijlage: %1 afbeelding" msgstr[1] "Bijlages: %1 afbeeldingen" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Bijlage: %1 video" msgstr[1] "Bijlages: %1 video´s" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audiobijlage wordt niet ondersteund" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Bellen" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Annuleren" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Alle berichtassociaties overzetten naar %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Sluiten" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Start een nieuw bericht door omhoog te vegen vanaf onderaan het scherm." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contact" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopiëren" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Verwijderen" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Verwijderd" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Afgeleverd" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Niet meer vragen" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Bewerken" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "MMS groeps-chat inschakelen" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Mislukt" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Mislukt!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favorieten" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Bestandstype wordt niet ondersteund" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Van" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Begrepen" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Groep" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Groep (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Afbeeldingsvoorbeeld" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Later" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Berichtinfo" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Berichten" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messages;SMS;MMS;Text Messages;Text;Berichten;Tekstberichten;Tekst" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Berichten" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Berichtenapp" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Berichtenapplicatie" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Berichtgegevens ontbreken" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Mezelf" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nieuw bericht" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nee" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Geen simkaart geselecteerd" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Geen netwerk" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "In afwachting" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "U dient uw simkaart te deblokkeren om te kunnen bellen of een bericht te " "sturen. U kunt uw simkaart deblokkeren via het netwerkmenu bovenin in het " "scherm of door naar Systeeminstellingen > " "Beveiliging & Privacy te gaan." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Gelezen" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Ontvangen" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Verwijderen" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Opnieuw proberen" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Simkaart is geblokkeerd" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "Sms" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Opslaan" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Zoeken" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Zoeken…" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Selecteer de gewenste standaard simkaart voor alle uitgaande berichten. U " "kunt deze keuze altijd wijzigen in de Systeeminstellingen." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Verzenden" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Verzonden" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Instellingen" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Delen" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Veeg om te verwijderen" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Veeg om functies weer te geven" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Wissel naar de standaard simkaart:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Tijdelijk mislukt" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Tekstbericht gekopieerd naar klembord" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Er is momenteel geen netwerk op %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Er is momenteel geen netwerk." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Aan" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Aan:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Vandaag" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Type" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Onbekend" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Onbekend contact" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Videovoorbeeld" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Videobijlage wordt niet ondersteund" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Welkom bij uw Ubuntu berichten-app." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Een bericht schrijven…" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ja" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Gisteren" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "U moet een simkaart selecteren" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "U bent gewisseld naar %1 @ %2" #~ msgid "Create new" #~ msgstr "Nieuw aanmaken" #~ msgid "+ Create New" #~ msgstr "+ nieuw aanmaken" messaging-app-0.1+16.04.20160323/po/ca.po0000644000015600001650000002647312674565025020037 0ustar pbuserpbgroup00000000000000# Catalan translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-08 10:49+0000\n" "Last-Translator: David Planella \n" "Language-Team: Catalan \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Trucada d'%1 hora" msgstr[1] "Trucada de %1 hores" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Trucada d'%1 minut" msgstr[1] "Trucada de %1 minuts" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Trucada d'%1 segon" msgstr[1] "Trucada de %1 segons" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Acceptat" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Afegeix" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Afegeix el destinatari" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Tots" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Adjunció: %1 contacte" msgstr[1] "Adjunció: %1 contactes" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Adjunció: %1 fitxer" msgstr[1] "Adjunció: %1 fitxers" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Adjunció: %1 imatge" msgstr[1] "Adjunció: %1 imatges" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Adjunció: %1 vídeo" msgstr[1] "Adjunció: %1 vídeos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "L'adjunció d'àudio no és compatible" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Truca-hi" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancel·la" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Voleu canviar totes les associacions de missatgeria a %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Tanca" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Redacteu un missatge nou fent lliscar el dit des de la vora inferior de la " "pantalla." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contacte" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copia" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Suprimeix" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Suprimit" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Enviat" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "No m'ho tornis a demanar" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Edita" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Habilita les converses de grup MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Ha fallat" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Ha fallat" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Preferits" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "El tipus de fitxer no és compatible" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "De" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "D'acord" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grup" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grup (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Previsualització de la imatge" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informació" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Més endavant" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informació del missatge" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Missatges" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Missatges;missatgeria;SMS;MMS;missatge de text;text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Missatgeria" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplicació de missatgeria" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplicació de missatgeria" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Manquen dades de missatge" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Jo" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Missatge nou" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "No" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "No s'ha seleccionat cap targeta SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Sense xarxa" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "D'acord" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pendent" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Heu de desblocar la targeta SIM abans de poder trucar o enviar missatges de " "text. Podeu fer-ho des de l'indicador de xarxes a la part superior de la " "pantalla, o bé si aneu a Configuració del " "sistema > Seguretat i privadesa." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Llegit" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Rebut" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Suprimeix" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Reintenta" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "La targeta SIM està blocada" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Desa" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Cerca" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Cerca..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Seleccioneu una targeta SIM per a tots els missatges de sortida. Podeu " "canviar aquesta opció sempre que vulgueu des dels Paràmetres del sistema." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Envia" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Enviat" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Paràmetres" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Comparteix" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Estat" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Llisqueu el dit per suprimir" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Llisqueu el dit per mostrar accions" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Canvia a la SIM predeterminada:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "S'ha produït una fallada temporal" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "S'ha copiat el missatge de text al porta-retalls" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "No hi ha cap xarxa a %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "No hi ha cap xarxa actualment." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "A" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Per a:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Avui" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipus" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Desconegut" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contacte desconegut" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Previsualització de vídeo" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "L'adjunció de vídeo no és compatible" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Us donem la benvinguda a l'apli de missatgeria" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Escriviu un missatge..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Sí" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ahir" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Cal que seleccioneu una targeta SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Heu commutat a %1 (%2)" #~ msgid "Create new" #~ msgstr "Missatge nou" #~ msgid "+ Create New" #~ msgstr "+ Contacte nou" messaging-app-0.1+16.04.20160323/po/ia.po0000644000015600001650000002566312674565025020045 0ustar pbuserpbgroup00000000000000# Interlingua translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-05-04 06:04+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Interlingua \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 ora del appello" msgstr[1] "%1 oras del appello" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minuta de appello" msgstr[1] "%1 minutas de appello" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 secundo del appello" msgstr[1] "%1 secundos del appello" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Acceptate" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Adder" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Adder le recipiente" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Toto" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Alligato: %1 contacto" msgstr[1] "Alligatos: %1 contactos" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Alligato: %1 file" msgstr[1] "Attachments: %1 files" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Alligato: %1 imagine" msgstr[1] "Alligatos: %1 imagines" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Alligato: %1 video" msgstr[1] "Alligatos: %1 videos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audio alligate non supportate" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Appello" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancellar" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Cambiar tote le associationes de messages a %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Clauder" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Componer un nove message per striar in alto ab le fundo del schermo." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contacto" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copiar" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Deler" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Delite" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Delivrate" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Non demandar de novo" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Fallite" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Fallite!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoritos" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Typo de file non supportate" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Ex" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Gruppo" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Gruppo (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Pre-visualisation del imagine" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informationes" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Plus tarde" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informationes del message" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Messages" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messages;SMS;MMS;Messages de texto;Texto" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Messages" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Application de messages" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Application de messages" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Datos del message perdite" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Me ipse" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nove message" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Non" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nulle carta SIM seligite" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Nulle rete" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "OK" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pendente" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Per favor libera tu carta SIM pro appellar o mandar un message. Tu pote " "liberar tu carta SIM per le indicator de rete al alto del schermo o per " "visitar Preparationes del systema > " "Securitate & Privacitate." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Leger" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Recipite" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Remover" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Re-provar" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Le carta SIM es blocate" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Salvar" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Cercar" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Cerca..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Seliger un SIM base pro tote le messages in egresso. Tu pote sempre variar " "tu selection in Preferentias del systema." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Inviar" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Expedite" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Compartir" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Stato" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Commutar al SIM base:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Mancate temporarimente" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Message de texto copiate in le tabula de fragmento" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Actualmente il ha nulle rete sur %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Actualmente il ha nulle rete." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "A" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "A:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hodie" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Typo" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Incognite" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contacto incognite" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Pre-visualisation del video" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video alligate non supportate" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Scriber un message..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Si" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Heri" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Selige un carta SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Tu ha commutate al %1 @ %2" #~ msgid "+ Create New" #~ msgstr "+ Crea nove" messaging-app-0.1+16.04.20160323/po/zh_TW.po0000644000015600001650000002504712674565025020503 0ustar pbuserpbgroup00000000000000# Chinese (Traditional) translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-03-01 11:16+0000\n" "Last-Translator: Cheng-Chia Tseng \n" "Language-Team: Chinese (Traditional) \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "通話 %1 小時" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "通話 %1 分鐘" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "通話 %1 秒" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "已接受" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "加入" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "加入收件人" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "所有" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "附件:%1 個聯絡人" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "附件:%1 個檔案" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "附件:%1 個圖像" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "附件:%1 條影片" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "不支援音訊附件" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "通話" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "取消" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "是否要將所有簡訊動作轉用 %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "關閉" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "由下而上掃過螢幕以撰寫新訊息。" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "聯絡人" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "複製" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "刪除" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "已刪除" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "已送出" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "不要再問" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "編輯" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "啟用 MMS 群組聊天功能" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "失敗" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "失敗!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "最愛" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "檔案類型不支援" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "自" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "我瞭解了" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "群組" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "群組 (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "影像預覽" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "資訊" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "稍後" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "訊息資訊" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "訊息" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messages;SMS;MMS;Text Messages;Text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "訊息" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "訊息程式" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "訊息應用程式" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "缺少訊息資訊" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "本人" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "新訊息" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "沒有" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "沒有選取 SIM 卡" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "沒有網路" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "確定" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "待處理" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "請解鎖您的 SIM 卡以撥打電話或傳送簡訊。您可以從螢幕頂端的「網路指示器」,或是前往 系統設定 " "> 安全與隱私 解鎖 SIM 卡。" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "已讀" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "收到" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "移除" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "重試" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM 卡已鎖定" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "儲存" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "搜尋" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "搜尋..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "為外發的訊息選取預設 SIM 卡。以後可在系統設定修改。" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "傳送" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "送出" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "設定值" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "分享" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "狀態" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "右滑刪除" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "左滑顯示功能" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "切換到預設 SIM 卡:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "暫時失敗" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "文字訊息已複製到剪貼簿" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "%1 目前沒有網路" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "目前沒有網路" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "給" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "給:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "今日" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "類型" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "不明" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "聯絡人不明" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "影片預覽" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "不支援視訊附件" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "撰寫訊息..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "是" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "昨日" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "要選取 SIM 卡" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "您已切換到 %1 @ %2" #~ msgid "Create new" #~ msgstr "建立新" #~ msgid "+ Create New" #~ msgstr "+ 建立新的" messaging-app-0.1+16.04.20160323/po/ca@valencia.po0000644000015600001650000002572112674565025021635 0ustar pbuserpbgroup00000000000000# Catalan translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-02-22 06:36+0000\n" "Last-Translator: Pau Iranzo \n" "Language-Team: Catalan \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Cridada d'%1 hora" msgstr[1] "Cridada de %1 hores" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Cridada d'%1 minut" msgstr[1] "Cridada de %1 minuts" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Cridada d'%1 segon" msgstr[1] "Cridada de %1 segons" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Acceptat" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Afig" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Afig el destinatari" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Tots" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Adjunció: %1 contacte" msgstr[1] "Adjunció: %1 contactes" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Adjunció: %1 fitxer" msgstr[1] "Adjunció: %1 fitxers" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Adjunció: %1 imatge" msgstr[1] "Adjunció: %1 imatges" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Adjunció: %1 vídeo" msgstr[1] "Adjunció: %1 vídeos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Crida-hi" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancel·la" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Voleu canviar totes les associacions de missatgeria a %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Tanca" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Redacteu un missatge nou fent lliscar el dit des de la vora inferior de la " "pantalla." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contacte" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copia" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Suprimeix" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Suprimit" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Enviat" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "No m'ho tornes a demanar" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Ha fallat" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Ha fallat" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Preferits" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "De" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grup" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grup (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Previsualització de la imatge" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informació" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Més avant" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informació del missatge" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Missatges" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Missatges;missatgeria;SMS;MMS;missatge de text;text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Missatgeria" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplicació de missatgeria" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplicació de missatgeria" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Manquen dades de missatge" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Jo" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Missatge nou" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "No" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "No s'ha seleccionat cap targeta SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Sense xarxa" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "D'acord" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pendent" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Heu de desblocar la targeta SIM abans de poder cridar o enviar missatges de " "text. Podeu fer-ho des de l'indicador de xarxes a la part superior de la " "pantalla, o bé si aneu a Configuració del " "sistema > Seguretat i privadesa." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Llegit" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Rebut" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Suprimeix" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Reintenta" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "La targeta SIM està blocada" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Guarda" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Cerca" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Cerca..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Seleccioneu una targeta SIM per a tots els missatges d'eixida. Podeu canviar " "esta opció sempre que vulgueu des dels Paràmetres del sistema." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Envia" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Enviat" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Comparteix" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Estat" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Canvia a la SIM predeterminada:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "S'ha produït una fallada temporal" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "No hi ha cap xarxa a %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "No hi ha cap xarxa actualment." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "A" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Per a:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hui" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipus" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Desconegut" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contacte desconegut" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Previsualització de vídeo" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Escriviu un missatge..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Sí" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ahir" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Cal que seleccioneu una targeta SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Heu commutat a %1 (%2)" #~ msgid "+ Create New" #~ msgstr "+ Contacte nou" #~ msgid "Create new" #~ msgstr "Missatge nou" messaging-app-0.1+16.04.20160323/po/nb.po0000644000015600001650000002575012674565025020050 0ustar pbuserpbgroup00000000000000# Norwegian Bokmal translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-16 10:49+0000\n" "Last-Translator: Åka Sikrom \n" "Language-Team: Norwegian Bokmal \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 og %2 andre" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Anrop på %1 time" msgstr[1] "Anrop på %1 timer" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Anrop på %1 minutt" msgstr[1] "Anrop på %1 minutter" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Anrop på %1 sekund" msgstr[1] "Anrop på %1 sekunder" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Godkjent" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Legg til" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Legg til mottaker" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Alt" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Vedlegg: %1 kontakt" msgstr[1] "Vedlegg: %1 kontakter" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Vedlegg: %1 fil" msgstr[1] "Vedlegg: %1 filer" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Vedlegg: %1 bilde" msgstr[1] "Vedlegg: %1 bilder" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Vedlegg: %1 video" msgstr[1] "Vedlegg: %1 videoer" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Lyd-vedlegg støttes ikke" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Ring" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Avbryt" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Vil du endre standard SIM-kort for meldinger til %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Lukk" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Skyv oppover fra bunnen av skjermen for å lage en ny melding." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopier" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Slett" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Slettet" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Levert" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Ikke spør igjen" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Rediger" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Slå på MMS-gruppesamtale" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Mislyktes" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Mislykket!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoritter" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Filtypen støttes ikke" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Fra" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Skjønner" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Gruppe" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Gruppe (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Forhåndsvisning av bilde" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Senere" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Meldingsinfo" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Meldinger" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Meldinger;SMS;MMS;Tekstmeldinger;Tekst" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Meldinger" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Meldingsprogram" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Meldingsprogram" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Meldingsdata mangler" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Meg selv" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Ny melding" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nei" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Intet SIM-kort er valgt" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Intet nettverk" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "OK" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Venter" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Lås opp SIM-kortet for å ringe eller sende melding. Du kan låse opp SIM-" "kortet fra nettverksindikatoren på toppen av skjermen, eller ved å gå til Systeminnstillinger > Personvern og " "sikkerhet." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Les" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Mottatt" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Fjern" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Prøv igjen" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM-kortet er låst" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Lagre" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Søk" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Søk …" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Velg hvilket SIM-kort som skal brukes til å sende meldinger som standard. Du " "kan endre dette valget i Systeminnstillingene når som helst." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Send" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Sendt" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Innstillinger" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Del" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Dra for å slette" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Dra for å vise handlinger" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Bytt til standard SIM-kort:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Midlertidig mislykket" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Melding kopiert til utklippstavle" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Telefonnettet på %1 er utilgjengelig" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Telefonnettet er utilgjengelig." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Til" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Til:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "I dag" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Type" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Ukjent" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Ukjent kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Forhåndsvis video" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video-vedlegg støttes ikke" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Velkommen til Ubuntus meldingsprogram." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Skriv en melding …" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ja" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "I går" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Du må velge et SIM-kort" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "%2 byttet du til %1" #~ msgid "Create new" #~ msgstr "Lag ny" #~ msgid "+ Create New" #~ msgstr "+ Lag ny" messaging-app-0.1+16.04.20160323/po/cs.po0000644000015600001650000002655712674565025020064 0ustar pbuserpbgroup00000000000000# Czech translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2016-02-09 08:56+0000\n" "Last-Translator: Vojtěch Daněk \n" "Language-Team: Czech \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-Launchpad-Export-Date: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" "Language: cs\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 hodina volání" msgstr[1] "%1 hodiny volání" msgstr[2] "%1 hodin volání" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minuta volání" msgstr[1] "%1 minuty volání" msgstr[2] "%1 minut volání" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekunda volání" msgstr[1] "%1 sekundy volání" msgstr[2] "%1 sekund volání" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Přijato" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Přidat" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Přidat příjemce" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Všechno" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Přiložit: %1 kontakt" msgstr[1] "Přiložit: %1 kontakty" msgstr[2] "Přiložit: %1 kontaktů" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Přiložit: %1 soubor" msgstr[1] "Přiložit: %1 soubory" msgstr[2] "Přiložit: %1 souborů" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Přiložit: %1 obrazek" msgstr[1] "Přiložit: %1 obrazky" msgstr[2] "Přiložit: %1 obrazků" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Přiložit: %1 video" msgstr[1] "Přiložit: %1 videa" msgstr[2] "Přiložit: %1 videí" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Přiložený audio soubor není podporován" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Volání" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Zrušit" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Změnit všechny zprávy spojené s %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Zavřít" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Potáhněte prstem ze spodu obrazovky pro vytvoření nové textové zprávy." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopírovat" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Smazat" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Smazáno" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Doručeno" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Neptat se znovu" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Upravit" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Povolit skupinový MMS chat" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Chyba" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Chyba!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Oblíbené" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Soubor není podporován" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Od" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Hotovo" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Skupina" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Skupina (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Náhled obrázku" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Později" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informace zprávy" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Zprávy" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Zprávy;SMS;MMS;Textové Zprávy;Text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Zprávy" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplikace zpráv" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplikace zpráv" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Chybí data zpráv" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Já" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nová zpráva" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ne" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nebyla zvolena SIM karta" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Žádná síť" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Čeká" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Prosím, odemkněte vaši SIM kartu pro možnost volání či zasílání zpráv. " "Učiňte tak buď pomocí aplikace Network Indicator, nacházejícího se na horní " "ploše displeje, či navštivte System Settings " "> Security & Privacy." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Číst" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Doručené" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Odstranit" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Znovu" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM karta je zamčená" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Uložit" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Hledat" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Hledat..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Zvolte výchozí SIM kartu pro všechny odchozí textové zprávy. Své rozhodnuté " "vždy můžete změnit v Nastavení systému." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Odeslat" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Odesláno" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Nastavení" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Sdílet" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Stav" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Smazat přetáhnutím" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Přetáhněte k zjištění akce" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Přepnout na výchozí SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Dočasně selhalo." #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Textová zpráva zkopírována do schránky" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "V současné době není dostupná síť na %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "V současné době není dostupná síť." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Komu" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Komu:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Dnes" # Nejsem si jistý, jestli jde o slovo „psát“ nebo „druh“. #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Druh" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Neznámé" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Neznámý kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Náhled videa" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video soubor není podporován" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Vítejte v aplikaci Ubuntu zpráv." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Napsat zprávu..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ano" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Včera" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Není zapotřebí zvolit SIM kartu" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Přepnuli jste %1 @ %2" messaging-app-0.1+16.04.20160323/po/fa.po0000644000015600001650000002767212674565025020044 0ustar pbuserpbgroup00000000000000# Persian translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-15 19:04+0000\n" "Last-Translator: Danial Behzadi \n" "Language-Team: Persian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 ساعت تماس" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 دقیقه تماس" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 ثانیه تماس" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "پذیرفته‌‌شده" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "افزودن" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "افزودن دریافت کننده" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "همه" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "ضمیمه: %1 مخاطب" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "ضمیمه: %1 پرونده" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "ضمیمه: %1 تصویر" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "ضمیمه: %1 ویدیو" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "پیوست‌های صوتی پشتیبانی نمی‌شوند" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "تماس" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "لغو" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "تغییر تمامی انجمن‌های پیام‌رسانی به %1؟" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "بستن" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "با لغزش به بالا از پایین صفحه، پیامی جدید بنویسید." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "مخاطب" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "رونوشت" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "حذف" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "حذف شد" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "رسیده" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "دیگر پرسیده نشود" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "ویرایش" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "فعّال کردن گپ گروهی MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "شکست خورد" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "شکست خورد!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "برگزیده‌ها" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "نوع پرونده پشتیبانی نمی‌شود" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "از" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "گرفتم" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "گروه" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "گروه (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "پیش‌نمایش تصویر" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "اطلاعات" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "بعداً" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "پیام چندرسانه‌ای" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "اطّلاعات پیام" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "پیام‌ها" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "پیام‌ها;پیامک;MMS;پیام متنی;متن" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "پیام‌رسانی" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "اپ پیام‌رسان" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "برنامه‌ی پیام‌رسان" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "اطّلاعات پیام از دست‌رفته" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "خودم" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "پیام جدید" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "خیر" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "سیم‌کارتی انتخاب نشده است" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "شبکه‌ای موجود نیست" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "تأیید" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "در انتظار" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "لطفاً برای تماس و فرستادن پیام، قفل سیم کارتتان را باز کنید. می‌توانید این " "کار را از طریق نشانگر شبکه در بالای صفحه یا با مراجعه به تنظیمات سامانه > امنیت & محرمانگی انجام " "دهید." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "خوانده شده" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "دریافتی" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "برداشتن" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "تلاش دوباره" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "سیم کارت قفل شده است" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "پیام کوتاه" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "ذخیره" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "جست‌وجو" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "جست‌وجو…" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "سیم‌کارت پیش‌فرضی را برای پیام‌های خروحی برگزینید. همواره می‌توانید " "انتخاباتان را در تنظیمات سامانه عوض کنید." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "فرستادن" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "ارسال شده" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "تنظیمات" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "به‌اشتراک گذاری" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "وضعیت" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "برای حذف بکشید" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "برای آشکار شدن عمل‌ها بکشید" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "عوض کردن به سیم‌کارت پیش‌گزیده:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "موقّتاً شکست خورد" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "پیام متنی در حافظه رونوشت شد" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "در حال حاضر شبکه‌ای روی %1 نیست" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "در حال حاضر شبکه‌ای موجود نیست." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "به‌" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "به :" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "امروز" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "گونه" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "ناشناس" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "مخاطب ناشناس" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "پیش‌نمایش ویدیو" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "پیوست‌های ویدیویی پشتیبانی نمی‌شوند" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "به اپ پیام‌رسانی اوبونتویتان خوش آمدید." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "نوشتن یک پیام…" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "بله" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "دیروز" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "باید یک سیم‌کارت برگزینید" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "شما در %2 به %1 تغییر یافتید" #~ msgid "Create new" #~ msgstr "ایجاد جدید" #~ msgid "+ Create New" #~ msgstr "+ افزودن جدید" messaging-app-0.1+16.04.20160323/po/pt.po0000644000015600001650000002610412674565025020066 0ustar pbuserpbgroup00000000000000# Portuguese translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-09-21 17:02+0000\n" "Last-Translator: Ivo Xavier \n" "Language-Team: Portuguese \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Hora da chamada %1" msgstr[1] "Horas da chamada %1" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "minuto da chamada %1" msgstr[1] "minutos da chamada %1" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "segundo da chamada %1" msgstr[1] "segundos da chamada %1" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Aceite" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Adicionar" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Adicionar destinatário" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Todas" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Anexo: %1 contacto" msgstr[1] "Anexos: %1 contactos" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Anexo: %1 ficheiro" msgstr[1] "Anexos: %1 ficheiros" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Anexo: %1 imagem" msgstr[1] "Anexos: %1 imagens" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Anexo: %1 vídeo" msgstr[1] "Anexos: %1 vídeos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Anexo de áudio não suportado" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Ligar" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancelar" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Alterar todas as associações de mensagens para %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Fechar" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Para compor uma nova mensagem, deslize para cima a partir do fundo do ecrã." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contacto" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copiar" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Eliminar" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Eliminado" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Entregue" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Não voltar a perguntar" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Editar" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Ativar MMS em grupo" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Falhou" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Falhou!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoritos" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Tipo de ficheiro não suportado" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "De" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Entendido" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupo" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupo (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Pré-visualizar imagem" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informação" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Mais tarde" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Detalhes da mensagem" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mensagens" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Mensagens;SMS;MMS;Mensagens de texto;Texto" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mensagens" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "App de mensagens" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "App de mensagens" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Falta informação na mensagem" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Eu" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Mensagem nova" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Não" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Sem cartão SIM selecionado" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Sem rede" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pendente" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Por favor, desbloqueie o seu cartão SIM para fazer chamadas ou enviar " "mensagens. Pode fazê-lo no indicador de rede no topo do ecrã ou nas Definições egt; Segurança eamp; privacidade." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Ler" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Recebida" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Remover" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Tentar novamente" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "O cartão SIM está bloqueado" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Guardar" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Procurar" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Procurar..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Selecione um cartão SIM padrão para todas as mensagens enviadas. Pode sempre " "alterar a sua escolha nas Definições." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Enviar" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Enviado" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Definições" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Partilhar" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Estado" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Deslize para apagar" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Deslize para revelar ações" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Alterar para SIM padrão:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Falha temporária" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Copiado para área de transferência" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Atualmente sem rede em %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Atualmente sem rede." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Para" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Para:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hoje" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipo" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Desconhecido" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contacto desconhecido" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Pré-visualizar vídeo" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Anexo de vídeo não suportado" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Bem-vindo à app de mensagens do Ubuntu" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Escrever mensagem..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Sim" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ontem" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Necessita de selecionar um cartão SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Mudou para %1 @ %2" #~ msgid "Create new" #~ msgstr "Criar nova" #~ msgid "+ Create New" #~ msgstr "+ Criar novo" messaging-app-0.1+16.04.20160323/po/en_GB.po0000644000015600001650000002560712674565025020424 0ustar pbuserpbgroup00000000000000# English (United Kingdom) translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-01 18:45+0000\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 hour call" msgstr[1] "%1 hours call" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minute call" msgstr[1] "%1 minutes call" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 second call" msgstr[1] "%1 seconds call" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Accepted" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Add" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Add recipient" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "All" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Attachment: %1 contact" msgstr[1] "Attachments: %1 contacts" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Attachment: %1 file" msgstr[1] "Attachments: %1 files" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Attachment: %1 image" msgstr[1] "Attachments: %1 images" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Attachment: %1 video" msgstr[1] "Attachments: %1 videos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audio attachment not supported" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Call" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancel" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Change all Messaging associations to %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Close" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Compose a new message by swiping up from the bottom of the screen." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contact" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copy" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Delete" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Deleted" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Delivered" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Don't ask again" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Edit" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Enable MMS group chat" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Failed" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Failed!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favourites" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "File type not supported" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "From" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Got it" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Group" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Group (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Image Preview" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Later" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Message info" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Messages" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messages;SMS;MMS;Text Messages;Text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Messaging" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Messaging App" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Messaging application" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Missing message data" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Myself" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "New Message" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "No" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "No SIM card selected" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "No network" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pending" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Read" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Received" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Remove" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Retry" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM Card is locked" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Save" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Search" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Search..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Send" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Sent" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Settings" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Share" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Swipe to delete" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Swipe to reveal actions" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Switch to default SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Temporarily Failed" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Text message copied to clipboard" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "There is currently no network on %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "There is currently no network." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "To" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "To:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Today" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Type" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Unknown" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Unknown contact" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Video Preview" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video attachment not supported" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Welcome to your Ubuntu messaging app." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Write a message..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Yes" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Yesterday" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "You need to select a SIM card" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "You switched to %1 @ %2" #~ msgid "Create new" #~ msgstr "Create new" #~ msgid "+ Create New" #~ msgstr "+ Create New" messaging-app-0.1+16.04.20160323/po/sq.po0000644000015600001650000002351512674565025020071 0ustar pbuserpbgroup00000000000000# Albanian translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-09-04 18:17+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Albanian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "" msgstr[1] "" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "U pranua" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Shto" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Të Gjitha" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Thirrje" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Anullo" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Mbylle" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakti" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopjo" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Fshije" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "U fshi" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Dorëzuar" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Mos pyet përsëri" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Dështoi" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Dështoi!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Të Parapëlqyerat" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Nga" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupi" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupi (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Pamja e parë e figurës" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Më vonë" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Info mesazhi" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mesazhet" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mesazhet" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Program Mesazhesh" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Program për mesazhe" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Unë Vetë" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Mesazh i Ri" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Jo" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nuk është zgjedhur një kartë SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Nuk ka rrjet" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Në pritje" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Lexo" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Marrë" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Hiqe" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Riprovo" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Ruaje" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Kërko" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Kërko..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Dërgo" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Dërguar" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Shpërndaje" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Gjendja" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Për momentin nuk ka rrjet në %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Për momentin nuk ka rrjet." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Marrësi" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Marrësi:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Sot" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Lloji" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "I panjohur" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Kontakt i panjohur" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Parapamje e Videos" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Bashkangjitja e videos nuk suportohet" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Shkruaj një mesazh..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Po" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Dje" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Duhet të zgjidhni një kartë SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Ju kaluat nga %1 @ %2" messaging-app-0.1+16.04.20160323/po/pt_BR.po0000644000015600001650000002633512674565025020457 0ustar pbuserpbgroup00000000000000# Brazilian Portuguese translation for messaging-app # Copyright (c) 2013 Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-08-05 04:43+0000\n" "Last-Translator: Tiago Hillebrandt \n" "Language-Team: Brazilian Portuguese \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" "Language: pt_BR\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "chamada de %1 hora" msgstr[1] "chamada de %1 horas" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "chamada de %1 minuto" msgstr[1] "chamada de %1 minutos" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "chamada de %1 segundo" msgstr[1] "chamada de %1 segundos" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Aceito" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Adicionar" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Adicionar destinatário" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Tudo" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Anexo: %1 contato" msgstr[1] "Anexos: %1 contatos" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Anexo: %1 arquivo" msgstr[1] "Anexos: %1 arquivos" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Anexo: %1 imagem" msgstr[1] "Anexos: %1 imagens" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Anexo: %1 vídeo" msgstr[1] "Anexos: %1 vídeos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Anexar áudio não é suportado" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Chamar" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancelar" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Mudar todas as associações de mensagens para %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Fechar" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Criar uma nova mensagem, deslizando a partir da parte inferior da tela." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contato" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copiar" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Excluir" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Excluído" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Entregue" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Não perguntar novamente" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Editar" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Habilitar bate-papo em grupo via MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Falhou" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Falhou!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoritos" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Tipo de arquivo não suportado" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "De" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Entendi" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupo" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupo (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Visualização da imagem" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informações" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Mais tarde" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informações de mensagem" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mensagens" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Mensagens;SMS;MMS;Mensagens de texto;Texto" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mensagens" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "App de mensagens" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplicativo de mensagens" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Faltando dados da mensagem" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Eu" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nova mensagem" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Não" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nenhum cartão SIM selecionado" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Sem rede" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pendente" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Por favor, desbloqueie o seu chip SIM para efetuar chamadas ou enviar uma " "mensagem. Você pode desbloquear seu chip SIM por meio do indicador de " "conexão no topo da tela ou visitando Configurações do Sistema> Segurança & " "Privacidade." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Ler" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Recebido" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Remover" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Repetir" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Cartão SIM está bloqueado" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Salvar" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Pesquisar" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Pesquisar..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Selecione um cartão SIM padrão para todas as mensagens enviadas. Você sempre " "pode alterar a sua escolha em Configurações do " "sistema." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Enviar" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Enviado" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Configurações" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Compartilhar" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Estado" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Deslize para apagar" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Deslize para revelar as ações" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Mudar para SIM padrão:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Falhou temporariamente" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Mensagem de texto copiada para a área de transferência" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Nenhuma rede encontrada em %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Rede não disponível" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Para" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Para:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hoje" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipo" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Desconhecido" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contato desconhecido" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Visualização do vídeo" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Anexar vídeo não é suportado" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Bem-vindo ao seu aplicativo de mensagens do Ubuntu" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Escrever uma mensagem..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Sim" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ontem" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Você precisa selecionar um cartão SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Você trocou para %1 @ %2" #~ msgid "+ Create New" #~ msgstr "+ Criar novo" #~ msgid "Create new" #~ msgstr "Criar nova" messaging-app-0.1+16.04.20160323/po/ta.po0000644000015600001650000002311712674565025020050 0ustar pbuserpbgroup00000000000000# Tamil translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-01-18 17:38+0000\n" "Last-Translator: solomon sunder \n" "Language-Team: Tamil \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 மணி நேர அழைப்பு" msgstr[1] "%1 மணி நேர அழைப்புகள்" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 நிமிட அழைப்பு" msgstr[1] "%1 நிமிட அழைப்புகள்" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 வினாடி அழைப்பு" msgstr[1] "%1 வினாடி அழைப்புகள்" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "அழை" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "தொடர்பு" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "புதிய செய்தி" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "இன்று" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "செய்தியை எழுது..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "நேற்று" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/sk.po0000644000015600001650000002643212674565025020064 0ustar pbuserpbgroup00000000000000# Slovak translation for messaging-app # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2016-03-04 08:58+0000\n" "Last-Translator: P_E_T_O \n" "Language-Team: Ubuntu Slovak Translators \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) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" "X-Launchpad-Export-Date: 2016-03-05 06:18+0000\n" "X-Generator: Launchpad (build 17936)\n" "Language: sk\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 hodinový hovor" msgstr[1] "%1 hodinový hovor" msgstr[2] "%1 hodinový hovor" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minútový hovor" msgstr[1] "%1 minútový hovor" msgstr[2] "%1 minútový hovor" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekundový hovor" msgstr[1] "%1 sekundový hovor" msgstr[2] "%1 sekundový hovor" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Prijaté" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Pridať" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Pridať príjemcu" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Všetko" #: ../src/qml/ThreadDelegate.qml:91 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Príloha: %1 kontaktov" msgstr[1] "Príloha: %1 kontakt" msgstr[2] "Príloha: %1 kontakty" #: ../src/qml/ThreadDelegate.qml:97 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Príloha: %1 súborov" msgstr[1] "Príloha: %1 súbor" msgstr[2] "Príloha: %1 súbory" #: ../src/qml/ThreadDelegate.qml:85 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Príloha: %1 obrázkov" msgstr[1] "Príloha: %1 obrázok" msgstr[2] "Príloha: %1 obrázky" #: ../src/qml/ThreadDelegate.qml:88 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Príloha: %1 videí" msgstr[1] "Príloha: %1 video" msgstr[2] "Príloha: %1 videá" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audio príloha nie je podporovaná" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Hovor" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Zrušiť" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Zmeniť všetky asociácie správ na %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:946 msgid "Close" msgstr "Zavrieť" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Pre napísanie novej správy potiahnite hore od spodnej časti obrazovky." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:185 msgid "Copy" msgstr "Kopírovať" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:107 msgid "Delete" msgstr "Vymazať" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Vymazané" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Doručené" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Nepýtať sa znova" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Upraviť" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Povoliť skupinové MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Zlyhalo" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Zlyhalo!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Obľúbené" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Typ súboru nie je podporovaný" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Od" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Mám to" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Skupina" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Skupina (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Náhľad obrázku" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:177 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Neskôr" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Info o správe" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Správy" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Správy;SMS;MMS;Textová správa;Text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Správy" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplikácia Správy" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplikácia Správy" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Chýbajúce dáta správy" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Ja" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nová správa" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nie" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nie je vybraná žiadna SIM karta" #: ../src/qml/Messages.qml:942 msgid "No network" msgstr "Žiadna sieť" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Čakajúce" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Pre volanie alebo posielanie správ, prosím, odomknite SIM kartu. SIM kartu " "môžete odomknúť z panelu Siete v hornej časti obrazovky, alebo navštívte Systémové nastavenia > Zabezpečenie a " "súkromie." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Prečítané" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Prijaté" #: ../src/qml/ComposeBar.qml:130 msgid "Remove" msgstr "Odstrániť" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:181 msgid "Retry" msgstr "Skúsiť znova" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM karta je uzamknutá" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Uložiť" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Hľadať" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Hľadať..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Vyberte predvolenú SIM pre všetky odchádzajúce správy. Vždy to môžete zmeniť " "v Systémových nastaveniach." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Poslať" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Odoslané" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Nastavenia" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Zdieľať" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:256 msgid "Swipe to delete" msgstr "Potiahnuť pre vymazanie" #: ../src/qml/SwipeItemDemo.qml:206 msgid "Swipe to reveal actions" msgstr "Potiahnutím odhaliť akcie" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Prepnúť na predvolenú SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Dočasne zlyhalo" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Textová správa skopírovaná do schránky" #: ../src/qml/Messages.qml:943 #, qt-format msgid "There is currently no network on %1" msgstr "Momentálne žiadna sieť %1" #: ../src/qml/Messages.qml:943 msgid "There is currently no network." msgstr "Momentálne žiadna sieť." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Pre" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Pre:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Dnes" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Typ" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Neznáme" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:44 msgid "Unknown contact" msgstr "Neznámy kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Náhľad videa" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video príloha nie je podporovaná" #: ../src/qml/SwipeItemDemo.qml:161 msgid "Welcome to your Ubuntu messaging app." msgstr "Vitajte vo svojej Ubuntu aplikácií Správy." #: ../src/qml/ComposeBar.qml:391 msgid "Write a message..." msgstr "Napísať správu..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Áno" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Včera" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Potrebujete zvoliť SIM kartu" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Prepli ste na %1 @ %2" messaging-app-0.1+16.04.20160323/po/oc.po0000644000015600001650000002240312674565025020042 0ustar pbuserpbgroup00000000000000# Occitan (post 1500) translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-20 05:35+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Occitan (post 1500) \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 ora de sonada" msgstr[1] "%1 oras de sonada" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "" msgstr[1] "" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Acceptat" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Apondre" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Totes" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/sv.po0000644000015600001650000002607512674565025020102 0ustar pbuserpbgroup00000000000000# Swedish translation for messaging-app # Copyright © 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # Josef Andersson , 2014. # clone , 2015. msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-08-01 21:51+0000\n" "Last-Translator: Marcus Gisslén \n" "Language-Team: Swedish\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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" "Language: sv\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 timmes samtal" msgstr[1] "%1 timmars samtal" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minuts samtal" msgstr[1] "%1 minuters samtal" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekunds samtal" msgstr[1] "%1 sekunders samtal" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Accepterad" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Lägg till" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Lägg till mottagare" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Alla" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Bilaga: %1 kontakt" msgstr[1] "Bilagor: %1 kontakter" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Bilaga: %1 fil" msgstr[1] "Bilagor: %1 filer" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Bilaga: %1 bild" msgstr[1] "Bilagor: %1 bilder" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Bilaga: %1 videofilm" msgstr[1] "Bilagor: %1 videofilmer" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Bifogat ljud stöds ej" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Samtal" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Avbryt" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Ändra alla associationer för Meddelanden till %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Stäng" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Skapa ett nytt meddelande genom att svepa uppåt från botten av skärmen." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopiera" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Ta bort" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Borttagen" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Levererad" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Fråga inte igen" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Ändra" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Aktivera MMS-gruppchatt" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Misslyckades" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Misslyckades!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoriter" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Filtyp stöds ej" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Från" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Uppfattat" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupp" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupp (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Förhandsvisa bild" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Senare" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Meddelandeinfo" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Meddelanden" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Meddelanden;SMS;MMS;Textmeddelanden;Text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Meddelanden" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Meddelandeprogram" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Meddelandeprogram" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Saknar meddelandedata" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Jag" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nytt meddelande" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nej" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Inget SIM-kort valt" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Inget nätverk" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "OK" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Väntar" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Lås upp ditt SIM-kort för att ringa eller skicka meddelanden. Du kan låsa " "upp ditt SIM-kort från nätverksindikatorn överst på skärmen eller via Systeminställningar > Säkerhet & " "sekretess." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Läs" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Mottagna" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Ta bort" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Försök igen" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM-kortet är låst" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Spara" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Sök" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Sök..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Välj ett standard-SIM för alla utgående meddelanden. Du kan alltid ändra " "ditt val i Systeminställningar." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Skicka" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Skickat" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Inställningar" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Dela" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Svep för att ta bort" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Svep för att visa åtgärder" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Byt till standard-SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Misslyckades temporärt" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Textmeddelande kopierat till urklipp" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Just nu finns inget nätverk på %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Just nu finns inget nätverk." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Till" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Till:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Idag" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Typ" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Okänd" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Okänd kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Förhandsvisa film" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Bifogad video stöds ej" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Välkommen till din meddelandeapp för Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Skriv ett meddelande…" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ja" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Igår" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Du måste välja ett SIM-kort" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Du växlade till %1 @ %2" #~ msgid "Create new" #~ msgstr "Skapa ny" #~ msgid "+ Create New" #~ msgstr "+ Skapa ny" messaging-app-0.1+16.04.20160323/po/lv.po0000644000015600001650000002665612674565025020100 0ustar pbuserpbgroup00000000000000# Latvian translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # # FIRST AUTHOR , 2014. # Rūdolfs Mazurs , 2015. msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-11-22 08:05+0000\n" "Last-Translator: Rūdolfs Mazurs \n" "Language-Team: Latvian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" "Language: lv\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 stundas zvans" msgstr[1] "%1 stundu zvans" msgstr[2] "%1 stundu zvans" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minūtes zvans" msgstr[1] "%1 minūšu zvans" msgstr[2] "%1 minūšu zvans" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekundes zvans" msgstr[1] "%1 sekunžu zvans" msgstr[2] "%1 sekunžu zvans" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Pieņemts" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Pievienot" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Pievienot saņēmēju" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Visi" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Pielikums: %1 kontakts" msgstr[1] "Pielikums: %1 kontakti" msgstr[2] "Pielikums: %1 kontaktu" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Pielikums: %1 datne" msgstr[1] "Pielikums: %1 datnes" msgstr[2] "Pielikums: %1 datņu" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Pielikums: %1 attēls" msgstr[1] "Pielikums: %1 attēli" msgstr[2] "Pielikums: %1 attēlu" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Pielikums: %1 video" msgstr[1] "Pielikums: %1 video" msgstr[2] "Pielikums: %1 video" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audio pielikumi nav atbalstīti" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Piezvanīt" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Atcelt" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Mainīt visas īsziņu asociācijas uz %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Aizvērt" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Izveidojiet jaunu īsziņu, velkot no ekrāna apakšas." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakts" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopēt" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Dzēst" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Izdzēsts" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Piegādāts" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Vairs nejautāt" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Rediģēt" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Ieslēgt MMS grupu tērzēšanu" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Neizdevās" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Neizdevās!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Izlase" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Datnes tips nav atbalstīts" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "No" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Sapratu" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupa" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupa (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Attēla priekšskatījums" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informācija" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Vēlāk" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informācija par īsziņu" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Īsziņas" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Īsziņas;SMS;MMS;Teksta īsziņas;Teksts" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Īsziņas" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Īsziņu lietotne" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Īsziņu lietotne" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Trūkstošie īsziņas dati" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Es" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Jauna īsziņa" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nē" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nav izvēlēta neviena SIM karte" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Nav tīkla" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Labi" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Gaida" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Lūdzu atbloķējiet savu SIM karti, lai piezvanītu vai sūtītu īsziņas. Jūs " "varat atbloķēt SIM karti no Tīkla indikatora ekrāna augšpusē, vai apmeklējot " "Sistēmas iestatījumi > Drošība un " "privātums." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Lasīts" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Saņemts" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Izņemt" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Mēģināt vēlreiz" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM karte ir bloķēta" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Saglabāt" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Meklēt" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Meklēt..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Izvēlieties noklusējuma SIM izejošajām īsziņām. Savu izvēli varat vēlāk " "nomainīt Sistēmas iestatījumos." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Sūtīt" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Nosūtīts" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Iestatījumi" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Dalīties" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Statuss" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Velciet, lai dzēstu" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Velciet, lai atklātu darbības" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Pārslēgties uz noklusējuma SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Uz brīdi neizdevās" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Teksta īsziņa ir kopēta uz starpliktuvi" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Šobrīd nav tīkla uz %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Šobrīd nav tīkla." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Kam" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Kam:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Šodien" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Veids" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Nezināms" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Nezināms kontakts" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Video priekšskatījums" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video pielikumi nav atbalstīti" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Laipni lūdzam Ubuntu ziņojumu lietotnē." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Rakstīt īsziņu..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Jā" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Vakar" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Jums jāizvēlas SIM karte" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Jūs pārslēdzāties uz %1 @ %2" #~ msgid "+ Create New" #~ msgstr "+ Izveidot jaunu" #~ msgid "Create new" #~ msgstr "Izveidot jaunu" messaging-app-0.1+16.04.20160323/po/id.po0000644000015600001650000002474312674565025020046 0ustar pbuserpbgroup00000000000000# Indonesian translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-11-28 12:41+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Indonesian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "panggilan %1 jam" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "panggilan %1 menit" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "panggilan %1 detik" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Diterima" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Tambah" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Tambah penerima" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Semua" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Lampiran: %1 kontak" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Lampiran: %1 berkas" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Lampiran: %1 gambar" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Lampiran: %1 video" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Panggil" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Batal" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Ubah semua asosiasi Perpesanan ke %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Tutup" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Susun sebuah pesan baru dengan menggesek naik dari dasar layar." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontak" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Salin" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Hapus" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Dihapus" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Terkirim" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Jangan tanya lagi" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Gagal" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Gagal!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favorit" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Dari" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grup" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grup (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Pratinjau Gambar" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Nanti" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Info pesan" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Pesan" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Pesan;SMS;MMS;Pesan Teks;Teks" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Perpesanan" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "App Perpesanan" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplikasi perpesanan" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Data pesan hilang" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Saya sendiri" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Pesan Baru" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Tidak" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Tak ada kartu SIM yang dipilih" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Tiada jaringan" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Ditunda" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Harap buka kunci kartu SIM Anda untuk memanggil atau mengirim pesan. Anda " "dapat membuka kunci kartu SIM Anda dari Indikator Jaringan di puncak layar " "atau dengan mengunjungi Pengaturan Sistem > " "Keamanan & Privasi." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Baca" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Diterima" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Hapus" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Coba lagi" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Kartu SIM terkunci" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Simpan" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Cari" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Cari..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Pilih sebuah SIM baku bagi semua pesan keluar. Anda selalu dapat mengubah " "pilihan dalam Pengaturan Sistem." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Kirim" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Terkirim" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Bagikan" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Berpindah ke SIM baku:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Sementara Gagal" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Saat ini tak ada jaringan pada %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Saat ini tak ada jaringan." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Untuk" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Untuk:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hari ini" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipe" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Tak dikenal" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Kontak tak dikenal" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Pratinjau Video" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Tulis suatu pesan..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ya" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Kemarin" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Anda perlu memilih suatu kartu SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Anda berpindah ke %1 @ %2" #~ msgid "+ Create New" #~ msgstr "+ Buat Baru" #~ msgid "Create new" #~ msgstr "Buat baru" messaging-app-0.1+16.04.20160323/po/mr.po0000644000015600001650000002232712674565025020064 0ustar pbuserpbgroup00000000000000# Marathi translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-08-11 18:33+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Marathi \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "" msgstr[1] "" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "स्वीकारले" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "सर्व" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/ar.po0000644000015600001650000003207212674565025020046 0ustar pbuserpbgroup00000000000000# Arabic translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-05-22 08:50+0000\n" "Last-Translator: Ibrahim Saed \n" "Language-Team: Arabic \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 && n % 100 <= 99 ? 4 : 5;\n" "X-Launchpad-Export-Date: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "اتصال أقل من ساعة (%1)" msgstr[1] "اتصال ساعة واحدة (%1)" msgstr[2] "اتصال ساعتان (%1)" msgstr[3] "اتصال %1 ساعات" msgstr[4] "اتصال %1 ساعة" msgstr[5] "اتصال %1 ساعة" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "اتصال أقل من دقيقة (%1)" msgstr[1] "اتصال دقيقة واحدة (%1)" msgstr[2] "اتصال دقيقتان (%1)" msgstr[3] "اتصال %1 دقائق" msgstr[4] "اتصال %1 دقيقة" msgstr[5] "اتصال %1 دقيقة" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "اتصال أقل من ثانية (%1)" msgstr[1] "اتصال ثانية واحدة (%1)" msgstr[2] "اتصال ثانيتين (%1)" msgstr[3] "اتصال %1 ثوان" msgstr[4] "اتصال %1 ثانية" msgstr[5] "اتصال %1 ثانية" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "مقبول" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "إضافة" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "إضافة مستلم" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "الكل" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "المرفقات: %1 أشخاص" msgstr[1] "المرفق: شخص واحد %1" msgstr[2] "المرفقات: شخصين %1" msgstr[3] "المرفقات: %1 أشخاص" msgstr[4] "المرفقات: %1 شخصا" msgstr[5] "المرفقات: %1 شخص" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "المرفقات: %1 ملف" msgstr[1] "المرفق: ملف واحد %1" msgstr[2] "المرفقات: ملفان %1" msgstr[3] "المرفقات: %1 ملفات" msgstr[4] "المرفقات: %1 ملفا" msgstr[5] "المرفقات: %1 ملف" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "المرفقات: %1 صور" msgstr[1] "المرفق: صورة واحدة %1" msgstr[2] "المرفقات: صورتان %1" msgstr[3] "المرفقات: %1 صور" msgstr[4] "المرفقات: %1 صورة" msgstr[5] "المرفقات: %1 صورة" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "المرفقات: %1 فيديو" msgstr[1] "المرفق: فيديو واحد %1" msgstr[2] "المرفقات: فيديوهين %1" msgstr[3] "المرفقات: %1 فيديوهات" msgstr[4] "المرفقات: %1 فيديو" msgstr[5] "المرفقات: %1 فيديو" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "إرفاق الصوت غير مدعوم" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "اتصل" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "إلغاء" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "تغيير جميع ارتباط الرسائل إلى %1 ؟" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "إغلاق" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "أنشئ رسالة جديدة عن طريق سحب إصبعك من أسفل الشاشة." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "شخص" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "نسخ" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "حذف" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "حُذِفت" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "تم التسليم" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "لا تسأل مرة أخرى" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "تعديل" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "فشل" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "فشل!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "المفضلات" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "نوع الملف غير مدعوم" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "من" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "تم" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "مجموعة" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "مجموعة (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "معاينة الصورة" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "معلومات" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "فيما بعد" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "رسالة وسائط" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "معلومات الرسالة" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "الرسائل" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "الرسائل;رسائل;الرسالة;رسالة;رسالة نصية;رسالة وسائط;نصية;نص" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "الرسائل" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "تطبيق الرسائل" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "تطبيق الرسائل" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "بيانات مفقودة في الرسالة" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "رسالة جديدة" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "لا" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "ما من بطاقة SIM مختارة" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "لا شبكة" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "موافق" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "قيد الانتظار" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "برجاء فتح قفل بطاقة SIM لتتمكن من الاتصال وإرسال الرسائل النصية. يمكنك فتح " "قفل بطاقة SIM من خلال مؤشر الشبكة في أعلى الشاشة أو من خلال الدخول إلى إعدادات النظام < الأمن والخصوصية." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "مقروء" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "مستلمة" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "إزالة" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "إعادة المحاولة" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "بطاقة SIM مقفلة" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "رسالة قصيرة" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "حفظ" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "بحث" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "بحث..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "اختر بطاقة SIM الافتراضية لجميع الرسائل الصادرة. يمكنك تغيير اختيارك دائما " "من خلال إعدادات النظام." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "مرسلة" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "الإعدادات" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "مشاركة" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "الحالة" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "اسحب للحذف" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "اسحب لإظهار الإجراءات" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "التحويل إلى بطاقة SIM الافتراضية:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "فشل مؤقت" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "تم نسخ الرسالة النصية إلى الحافظة" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "لا توجد شبكة حاليا في %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "لا توجد شبكة حاليا." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "إلى" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "إلى:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "اليوم" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "النوع" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "مجهول" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "شخص مجهول" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "معاينة الفيديو" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "إرفاق الفيديو غير مدعوم" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "مرحبا بك في تطبيق أوبونتو للرسائل." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "اكتب رسالة..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "نعم" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "أمس" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "عليك أن تختار بطاقة SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "لقد قمت بالتحويل إلى %1 في %2" messaging-app-0.1+16.04.20160323/po/th.po0000644000015600001650000002224412674565025020057 0ustar pbuserpbgroup00000000000000# Thai translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-08-11 14:30+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Thai \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "" msgstr[1] "" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/shn.po0000644000015600001650000002226412674565025020236 0ustar pbuserpbgroup00000000000000# Shan translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2013-10-07 11:28+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Shan \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) ? 0 : 1;\n" "X-Launchpad-Export-Date: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "" msgstr[1] "" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/ko.po0000644000015600001650000002642612674565025020063 0ustar pbuserpbgroup00000000000000# Korean translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-07-19 15:10+0000\n" "Last-Translator: MinSik CHO \n" "Language-Team: Korean \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1시간 통화" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1분 통화" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1초 통화" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "수락함" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "추가" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "받는 사람 추가" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "모두" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "첨부 파일: 연락처 %1" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "첨부 파일: 파일 %1" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "첨부 파일: 이미지 %1" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "첨부 파일: 비디오 %1" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "음악 첨부를 지원하지 않습니다." #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "전화" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "취소" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "%1와(과) 연관이 있는 모든 베시지를 바꾸시겠습니까?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "닫기" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "화면 아래에서 위로 쓸어 올리면 새 메시지를 쓸 수 있습니다." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "연락처" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "복사" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "삭제" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "삭제함" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "전송함" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "다시 묻지 않기" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "편집" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "MMS 그룹 채팅 활성화" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "실패함" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "실패!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "즐겨찾기" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "파일 형식을 지원하지 않습니다." #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "보낸 사람" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "확인" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "그룹" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "그룹(%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "이미지 미리 보기" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "정보" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "나중에" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "메시지 정보" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "메시지" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messages;메시지;SMS;단문 메시지;MM;멀티 메시지S;Text Messages;텍스트 메시지;Text;텍스트" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "메시지 보내기" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "메시지 프로그램" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "메시지 프로그램" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "잃어버린 메시지 데어터" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "자신" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "새 메시지" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "아니요" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "선택한 심 카드가 없습니다." #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "네트워크 없음" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "확인" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "보류" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "통화를 하거나 메시지를 보내려면 심 카드의 잠금 상태를 해제해주십시오. 심 카드의 잠긴 상태는 상단의 네트워크를 표시나 시스템 설정 > 보안 & 사생활 보호에서 해제할 수 있습니다." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "읽기" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "받음" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "제거" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "다시 시도" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "심 카드가 잠져있습니다." #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "단문 메시지 서비스(SMS)" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "저장" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "검색" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "검색..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "모든 메시지를 보낼 기본 심 카드를 선택해주십시오. 이 선택은 시스템 설정에서 " "언제나 바꿀 수 있습니다." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "보내기" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "보냄" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "설정" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "공유" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "상태" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "밀어서 삭제" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "작업들을 보려면 밀어주세요" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "기본 심 카드로 전환:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "일시적으로 실패함" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "텍스트 메시지를 클립 보드에 복사했습니다." #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "현재 %1에 네트워크가 없습니다." #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "현재 네트워크가 없습니다." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "받는 사람" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "받는 사람:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "오늘" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "형식" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "알 수 없음" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "알 수 없는 연락처" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "동영상 미리 보기" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "영상 첨부를 지원하지 않습니다." #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "우분투 메시지 어플리케이션에 오신걸 환영합니다." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "메시지 쓰기..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "예" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "어제" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "심 카드를 선택해야 합니다." #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "%1(으)로 %2에 전환했습니다." #~ msgid "+ Create New" #~ msgstr "+ 새 연락처" #~ msgid "Create new" #~ msgstr "새 항목 만들기" messaging-app-0.1+16.04.20160323/po/hu.po0000644000015600001650000002640312674565025020061 0ustar pbuserpbgroup00000000000000# Hungarian translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-09-03 12:26+0000\n" "Last-Translator: Richard Somlói \n" "Language-Team: Hungarian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 órás hívás" msgstr[1] "%1 órás hívás" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 perces hívás" msgstr[1] "%1 perces hívás" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 másodperces hívás" msgstr[1] "%1 másodperces hívás" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Elfogadva" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Hozzáadás" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Címzett hozzáadása" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Összes" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Melléklet: %1 névjegy" msgstr[1] "Melléklet: %1 névjegy" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Melléklet: %1 fájl" msgstr[1] "Melléklet: %1 fájl" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Melléklet: %1 kép" msgstr[1] "Melléklet: %1 kép" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Melléklet: %1 videó" msgstr[1] "Melléklet: %1 videó" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audiomelléklet nem támogatott" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Hívás" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Mégse" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Minden üzenetküldés hozzárendelése a következőhöz: %1" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Bezárás" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Új üzenet írásához húzza az ujját felfelé a kijelző aljáról indulva." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Névjegy" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Másolás" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Törlés" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Törölt" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Kézbesített" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Ne kérdezze többször" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Szerkesztés" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "MMS csoportos csevegés" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Sikertelen" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Sikertelen!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Kedvencek" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Ez a fájltípus nem támogatott" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Feladó" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Értem" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Csoport" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Csoport (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Előnézeti kép" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Információ" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Később" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Üzenetinformáció" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Üzenetek" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Üzenetek;SMS;MMS;Szöveges üzenet;Szöveg" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Üzenetek" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Üzenetküldő alkalmazás" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Üzenetküldő alkalmazás" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Hiányzó üzenetadat" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Én" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Új üzenet" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nem" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nincs SIM kártya kiválasztva" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Nincs hálózat" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "OK" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Függőben" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Híváshoz vagy üzenetküldéshez oldja fel a SIM kártyát. Ezt a hálózati " "indikátoron tudja megtenni a képernyő felső részén vagy látogasson el a Rendszerbeállítások > Biztonság és " "adatvédelem alá." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Olvasva" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Fogadva" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Törlés" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Újra" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "A SIM kártya zárolva van" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Mentés" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Keresés" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Keresés…" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Válassz ki a kimenő üzenetek alapértelmezett SIM kártyáját. Ezt később " "bármikor módosíthatja a Rendszerbeállításokban." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Küldés" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Elküldve" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Beállítások" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Megosztás" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Állapot" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Húzza el a törléshez" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Húzza el a műveletek megjelenítéséhez" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Alapértelmezett SIM kártyára váltás:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Ideiglenes hiba" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Az üzenet a vágólapra másolva" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Jelenleg nincs hálózat ezen: %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Jelenleg nincs hálózat" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Címzett" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Címzett:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Ma" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Típus" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Ismeretlen" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Ismeretlen névjegy" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Videó előnézet" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Videómelléklet nem támogatott" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Üdvözli az Ubuntu üzenetküldő alkalmazása." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Üzenet írása…" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Igen" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Tegnap" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Ki kell választania egy SIM kártyát" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Átvátott erre: %1 @ %2" #~ msgid "Create new" #~ msgstr "Új írása" #~ msgid "+ Create New" #~ msgstr "Új hozzáadása" messaging-app-0.1+16.04.20160323/po/ml.po0000644000015600001650000002312312674565025020051 0ustar pbuserpbgroup00000000000000# Malayalam translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2013-11-22 04:17+0000\n" "Last-Translator: ST Alfas \n" "Language-Team: Malayalam \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 മണിക്കൂര്‍ വിളി" msgstr[1] "%1 മണിക്കൂര്‍ വിളി" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 മിനുട്ട് വിളി" msgstr[1] "%1 മിനുട്ട് വിളി" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 സെക്കന്റ് വിളി" msgstr[1] "%1 സെക്കന്റ് വിളി" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "വിളിക്കുക" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "ബന്ധം" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "പുതിയ സന്ദേശം" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "ഇന്ന്" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "ഒരു സന്ദേശം എഴുതുക..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "ഇന്നലെ" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/br.po0000644000015600001650000002663412674565025020056 0ustar pbuserpbgroup00000000000000# Breton translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-16 15:52+0000\n" "Last-Translator: Rouxel \n" "Language-Team: Breton \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 eurvezh o pellgomz" msgstr[1] "%1 eurvezh o pellgomz" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 vunutenn o pellgomz" msgstr[1] "%1 a vunutoù o pellgomz" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 eilenn o pellgomz" msgstr[1] "%1 eilenn o pellgomz" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Aprouet" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Ouzhpennañ" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Ouzhpennañ un degemerer" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "An holl anezho" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Pezh stag : %1 darempred" msgstr[1] "Pezhioù stag : %1 a zarempredoù" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Pezh stag : %1 restr" msgstr[1] "Pezhioù stag : %1 a restroù" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Pezh stag : %1 skeudenn" msgstr[1] "Pezhioù stag : %1 a skeudennoù" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Pezh stag : %1 video" msgstr[1] "Pezhioù stag : %1 a videoioù" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "pezh stag da glevet ha ne c'hall ket bezañ lennet" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Pellgomz" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Nullañ" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Cheñch an holl gevreadurioù kemennerezh da %1 ?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Serriñ" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Sevel ur gemenadenn nevez o riklañ war-zu an nec'h adalek traoñ ar skramm." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Darempred" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Eilañ" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Diverkañ" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Diverket" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Kaset" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Arabat goulenn en-dro" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Aozañ" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Gweredekaat an MMS er flapañ a-stroll" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "C'hwitet" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "C'hwitet !" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Gwellañ deuet" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Seurt restr ha ne c'hall ket bezañ lennet" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Digant" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Mat eo" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Strollad" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Strollad (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Rakwelet ar skeudenn" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Titouroù" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Diwezhatoc'h" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Titouroù ar gemennadenn" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Kemennadennoù" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Kemennadennoù;SMS;MMS;Kemennadenn-destenn;Testenn" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Kemennerezh" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Arload kemennerezh" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Arload kemennerezh" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Diank eo titouroù ar gemennadenn" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Me ma-unan" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Kemennadenn nevez" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ket" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "N'eus bet diuzet kartenn SIM ebet" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "N'eus ket a rouedad" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Mat eo" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "O c'hortoz" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Dibrennit ho kartenn SIM evit pellgomz pe kas ur gemennadenn, mar plij. " "Gallout a rit dibrennañ ho kartenn SIM adalek ar merker rouedad e krec'h ar " "skramm pe mont da Arventennoù ar reizhiad > " "Surentez ha buhez prevez" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Lenn" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Resevet" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Lemel" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Esaeañ en-dro" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Prennet eo ar gartenn SIM" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Enrollañ" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Klask" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Klask..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Diuzit ur gartenn SIM dre ziouer evit an holl gemennadennoù a gasit. Gallout " "a reoc'h bepred cheñch ho tibab diwezhatoc'h e-barzh Arventennoù ar reizhiad." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Kas" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Kaset" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Arventennoù" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Rannañ" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Statud" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Riklañ evit diverkañ" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Riklañ evit diskuliañ oberoù" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Cheñch evit ar gartenn SIM dre ziouer :" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "C'hwitadenn evit ar poent" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Testenn eilet er golver" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "N'eus rouedad ebet evit bremañ war %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "N'eus rouedad ebet evit bremañ" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Da" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Da :" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hiziv" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Seurt" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Dianav" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Darempred dianav" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Rakwelet ar video" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Pezh stag video ha ne c'hall ket bezañ lennet" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Deuet-mat oc'h en hoc'h arloadoù kemennadennoù Ubuntu" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Skrivañ ur gemennadenn..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ya" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Dec'h" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Ret eo deoc'h diuzañ ur gartenn SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Aet oc'h eus %1 da %2" #~ msgid "Create new" #~ msgstr "Krouiñ unan nevez" #~ msgid "+ Create New" #~ msgstr "+ Krouiñ unan nevez" messaging-app-0.1+16.04.20160323/po/my.po0000644000015600001650000002446412674565025020077 0ustar pbuserpbgroup00000000000000# Burmese translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2013-10-09 11:28+0000\n" "Last-Translator: Pyae Sone \n" "Language-Team: Burmese \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 နာရီခေါ်ဆိုမှု့" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 မိနစ် ခေါ်ဆိုမှု့" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 စက္ကန့်ခေါ်ဆိုမှု့" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "ပေါင်းထည့်သည်" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "အားလုံး" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "ခေါ်မည်" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "ပယ်ဖျက်သည်" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "ပိတ်ရန်" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "အဆက်အသွယ်" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "မိတ္တူ" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "ပယ်ဖျက်ရန်" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Deleted" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "နောက်ထပ်မမေးပါနှင့်" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "ကျရှူံးသည်။" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "အကြိုက်နှစ်သက်ဆုံးများ" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "မွ" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "အုပ်စု" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "သတင်း" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "နောက်မှ" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS ကို" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "စာများ" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "စာ အသစ်" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "မဟုတ်ပါ" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "အိုကေ" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "စောင့်ဆိုင်းနေသည်" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "လက်ခံရရှိခဲ့သည်" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "ဖယ်ရှားပါ" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "ထပ်ကြိုးစားပါ" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "အက်စ်အမ်အက်စ်" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Save ကို" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "ရှာဖွေရန်" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "ရှာမည်။" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "ပို့မည်" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "ပို့သည့်" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "ဝေမျှ" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "အနေအထား" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "သို႕" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "သို့-" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "ယနေ့" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "အမျိုးအစား" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "အမည်မသိ" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "ဗီဒီယိုကို Preview" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "စာတစ်စောင်ရေးမည်" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "မနေ့က" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/sl.po0000644000015600001650000002667312674565025020074 0ustar pbuserpbgroup00000000000000# Slovenian translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-08-19 17:07+0000\n" "Last-Translator: Sasa Batistic \n" "Language-Team: Slovenian \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 ? 1 : n%100==2 ? 2 : n%100==3 || " "n%100==4 ? 3 : 0);\n" "X-Launchpad-Export-Date: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1-urni klic" msgstr[1] "%1-urni klic" msgstr[2] "%1-urni klic" msgstr[3] "%1-urni klic" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1-minutni klic" msgstr[1] "%1-minutni klic" msgstr[2] "%1-minutni klic" msgstr[3] "%1-minutni klic" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1-sekundni klic" msgstr[1] "%1-sekundni klic" msgstr[2] "%1-sekundni klic" msgstr[3] "%1-sekundni klic" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Sprejeto" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Dodaj" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Dodaj prejemnika" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Vsi" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Priloga: %1 stikov" msgstr[1] "Priloga: %1 stik" msgstr[2] "Priloga: %1 stika" msgstr[3] "Priloga: %1 stiki" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Priloga: %1 datotek" msgstr[1] "Priloga: %1 datoteka" msgstr[2] "Priloga: %1 datoteki" msgstr[3] "Priloga: %1 datoteke" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Priloga: %1 slik" msgstr[1] "Priloga: %1 slika" msgstr[2] "Priloga: %1 sliki" msgstr[3] "Priloga: %1 slike" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Priloga: %1 videov" msgstr[1] "Priloga: %1 video" msgstr[2] "Priloga: %1 videa" msgstr[3] "Priloga: %1 videi" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Zvočna priponka ni podprta" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Kliči" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Prekliči" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Ali se naj spremenijo povezave s Sporočanjem na %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Zapri" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Sestavite novo sporočilo s potegom navzgor z dna zaslona." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Stik" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopiraj" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Izbriši" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Izbrisano" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Dostavljeno" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Ne sprašuj več" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Uredi" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Omogoči skupinski MMS pogovor" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Spodletelo" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Spodletelo!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Priljubljeni" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Vrsta datoteke ni podprta" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Od" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Razumem" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Skupina" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Skupina (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Predogled slike" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Podrobnosti" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Kasneje" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Podrobnosti sporočila" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Sporočila" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Sporočila;SMS;MMS;Besedilna sporočila;Besedilo" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Sporočanje" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Program za sporočanje" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Program za sporočanje" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Manjkajo podatki sporočila" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Jaz" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Novo sporočilo" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ne" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Ni izbrane kartice SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Ni omrežja" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "V redu" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Na čakanju" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Odklenite svojo kartico SIM za klicanje in pošiljanje sporočil. Kartico SIM " "lahko odklenete iz kazalnika omrežja na vrhu zaslona ali z obiskom Sistemske nastavitve > Varnost & " "Zasebnost." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Prebrano" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Prejeto" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Odstrani" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Poskusi znova" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Kartica SIM je zaklenjena" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Shrani" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Iskanje" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Iskanje ..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Izberite privzeti SIM za vsa odhodna sporočila. Svojo izbiro lahko kadarkoli " "spremenite v Nastavitvah sistema." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Pošlji" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Poslano" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Nastavitve" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Deli" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Stanje" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Potegnite za izbris" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Potegnite za prikaz dejanj" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Preklopi na privzeto SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Začasno spodletelo" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Besedilo je kopirano v odložišče" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Trenutno ni omrežja na %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Trenutno ni omrežja." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Za" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Za:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Danes" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Vrsta" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Neznano" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Neznan stik" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Predogled videa" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video priponka ni podprta" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Dobrodošli v sporočilni program Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Napišite sporočilo ..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Da" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Včeraj" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Izbrati morate kartico SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Preklopili ste na %1 @ %2" #~ msgid "Create new" #~ msgstr "Ustvari novo" #~ msgid "+ Create New" #~ msgstr "+ Ustvari nov" messaging-app-0.1+16.04.20160323/po/cy.po0000644000015600001650000002644212674565025020063 0ustar pbuserpbgroup00000000000000# Welsh translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-30 15:34+0000\n" "Last-Translator: Owen Llywelyn \n" "Language-Team: Welsh \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Galwad %1 awr" msgstr[1] "Galwad %1 awr" msgstr[2] "Galwad %1 awr" msgstr[3] "Galwad %1 awr" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Galwad %1 munud" msgstr[1] "Galwad %1 munud" msgstr[2] "Galwad %1 munud" msgstr[3] "Galwad %1 munud" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Galwad %1 eiliad" msgstr[1] "Galwad %1 eiliad" msgstr[2] "Galwad %1 eiliad" msgstr[3] "Galwad %1 eiliad" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Derbyniwyd" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Ychwanegu" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Ychwanegu derbynnydd" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Y cyfan" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Atodiadau: %1 cyswllt" msgstr[1] "Atodiadau: %1 cyswllt" msgstr[2] "Atodiadau: %1 cyswllt" msgstr[3] "Atodiadau: %1 cyswllt" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Atodiad: %1 ffeil" msgstr[1] "Atodiadau: %1 ffeil" msgstr[2] "Atodiadau: %1 ffeil" msgstr[3] "Atodiadau: %1 ffeil" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Atodiad: %1 delwedd" msgstr[1] "Atodiadau: %1 delwedd" msgstr[2] "Atodiadau: %1 delwedd" msgstr[3] "Atodiadau: %1 delwedd" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Atodiad: %1 fideo" msgstr[1] "Atodiadau: %1 fideo" msgstr[2] "Atodiadau: %1 fideo" msgstr[3] "Atodiadau: %1 fideo" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Dim cefnogaeth i'r atodiad sain" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Galw" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Diddymu" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Newid pob cysylltiad Negeseuon i %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Cau" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Ysgrifennwch neges newydd drwy drawio i fyny o waelod y sgrîn" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Cyswllt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copïo" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Dileu" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Wedi dileu" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Trosglwyddwyd" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Peidiwch â gofyn eto" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Golygu" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Galluogi sgwrs MMS ar y cyd" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Methwyd" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Methwyd!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Ffefrynnau" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Dim cefnogaeth i'r math o ffeil" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "O" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Iawn" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grŵp" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grŵp (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Rhagolwg Delwedd" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Gwybodaeth" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Hwyrach" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Gwybodaeth neges" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Negeseuon" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Negeseuon;SMS;MMS;Negeseuon Testun;Testun" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Negesu" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Ap Negeseuon" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Ap Negeseuon" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Data neges ar goll" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Fi fy hun" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Neges Newydd" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Na" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Heb ddewis cerdyn SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Dim rhwydwaith" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Iawn" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Aros" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Datglowch eich cerdyn SIM er mwyn galw neu anfon neges. Gallwch ddatgloi'r " "cerdyn SIM o'r Dangosydd Rhwydwaith ar dop y sgrîn neu drwy fynd i Gosodiadau System > Diogelwch & " "Preifatrwydd." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Darllen" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Derbyniwyd" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Tynnu" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Ailgynnig" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Cerdyn SIM ar glo" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Cadw" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Chwilio" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Chwilio..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Dewiswch SIM diofyn ar gyfer anfon negeseuon. Gallwch newid hwn eto yn Gosodiadau System." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Anfon" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Anfonwyd" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Gosodiadau" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Rhannu" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Statws" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Trawiwch i ddileu" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Trawiwch i ddangos gweithredoedd" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Newid i SIM diofyn:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Methiant Dros Dro" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Copïwyd y neges destun i'r clipfwrdd" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Does dim rhwydwaith ar %1 ar hyn o bryd" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Does dim rhwydwaith ar hyn o bryd" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "I" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "I:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Heddiw" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Math" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Anhysbys" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Cyswllt anhysbys" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Rhagolwg Fideo" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Dim cefnogaeth i'r atodiad fideo" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Croeso i Ap Negeseuon Ubuntu" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Ysgrifennu neges..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Iawn" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ddoe" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Mae angen dewis cerdyn SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Wedi newid i %1 @ %2" messaging-app-0.1+16.04.20160323/po/it.po0000644000015600001650000002606112674565025020061 0ustar pbuserpbgroup00000000000000# Italian translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-08 11:30+0000\n" "Last-Translator: Timucin \n" "Language-Team: Italian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 ora" msgstr[1] "%1 ore" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minuto" msgstr[1] "%1 minuti" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 secondo" msgstr[1] "%1 secondi" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Accettato" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Aggiungi" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Aggiungi destinatario" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Tutto" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Allegato: %1 contatto" msgstr[1] "Allegati: %1 contatti" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Allegato: %1 file" msgstr[1] "Allegati: %1 file" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Allegata: %1 immagine" msgstr[1] "Allegate: %1 immagini" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Allegato: %1 video" msgstr[1] "Allegati: %1 video" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Allegati audio non supportati" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Chiama" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Annulla" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Cambiare tutte le associazioni di messaggi a %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Chiudi" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Componi un nuovo messaggio scorrendo dal basso verso l'alto dello schermo." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contatto" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copia" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Elimina" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Eliminato" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Consegnato" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Non chiedere di nuovo" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Modifica" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Abilita MMS di gruppo" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Non riuscito" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Non riuscito." #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Preferiti" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Tipo di file non supportato" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Da" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Fatto" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Gruppo" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Gruppo (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Anteprima immagine" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informazioni" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Più tardi" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Info sul messaggio" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Messaggi" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messaggi;SMS;MMS;Messaggio di testo;Testo" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Messaggi" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "App Messaggi" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Applicazione per messaggistica" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Dati del messaggio mancanti" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Me stesso" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nuovo messaggio" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "No" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nessuna SIM selezionata" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Nessuna rete" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "OK" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "In sospeso" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Sbloccare la scheda SIM per inviare chiamate o messaggi. La SIM può essere " "sbloccata attraverso l'indicatore di rete situato nella parte superiore " "dello schermo o visitando Impostazioni > " "Sicurezza e privacy." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Leggi" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Ricevuto" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Rimuovi" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Riprova" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Scheda SIM bloccata" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Salva" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Cerca" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Cerca..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Selezionare una SIM predefinita per tutti i messaggi in uscita. È possibile " "modificale questa scelta nelle Impostazioni." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Invia" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Inviato" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Impostazioni" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Condividi" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Stato" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Scorrere per eliminare" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Scorrere per mostrare azioni" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Passa alla SIM predefinita:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Momentaneamente non riuscito" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Messaggio copiato negli appunti" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Attualmente non è disponibile alcuna rete per %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Attualmente non è disponibile alcuna rete." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "A" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "A:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Oggi" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipo" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Sconosciuto" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contatto sconosciuto" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Anteprima video" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Allegati video non supportati" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Benvenuti nella app di messaggi di Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Scrivi un messaggio..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Sì" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ieri" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "È necessario selezionare una scheda SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Passati a %1 @ %2" #~ msgid "Create new" #~ msgstr "Crea nuovo" #~ msgid "+ Create New" #~ msgstr "+ Crea nuovo" messaging-app-0.1+16.04.20160323/po/gd.po0000644000015600001650000003035712674565025020042 0ustar pbuserpbgroup00000000000000# Gaelic; Scottish translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # GunChleoc , 2014, 2015. msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-09-03 13:18+0000\n" "Last-Translator: GunChleoc \n" "Language-Team: Fòram na Gàidhlig\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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" "Language: gd\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Gairm %1 uair a thìde" msgstr[1] "Gairm %1 uair a thìde" msgstr[2] "Gairm %1 uairean a thìde" msgstr[3] "Gairm %1 uair a thìde" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Gairm %1 mhionaid" msgstr[1] "Gairm %1 mhionaid" msgstr[2] "Gairm %1 mionaidean" msgstr[3] "Gairm %1 mionaid" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Gairm %1 diog" msgstr[1] "Gairm %1 dhiog" msgstr[2] "Gairm %1 diogan" msgstr[3] "Gairm %1 diog" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Air a ghabhail ris" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Cuir ris" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Cuir faightear ris" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Na h-uile" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Ceanglachan: %1 neach-aithne" msgstr[1] "Ceanglachain: %1 luchd-aithne" msgstr[2] "Ceanglachain: %1 luchd-aithne" msgstr[3] "Ceanglachain: %1 luchd-aithne" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Ceanglachan: %1 fhaidhle" msgstr[1] "Ceanglachain: %1 fhaidhle" msgstr[2] "Ceanglachain: %1 faidhlichean" msgstr[3] "Ceanglachain: %1 faidhle" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Ceanglachan: %1 dealbh" msgstr[1] "Ceanglachain: %1 dhealbh" msgstr[2] "Ceanglachain: %1 dealbhan" msgstr[3] "Ceanglachain: %1 dealbh" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Ceanglachan: %1 video" msgstr[1] "Ceanglachain: %1 video" msgstr[2] "Ceanglachain: %1 videothan" msgstr[3] "Ceanglachain: %1 video" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Cha chuirear taic ri ceanglachain fuaime" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Gairm" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Sguir dheth" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" "A bheil thu airson gach co-cheangal nan teachdaireachd atharrachadh gu %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Dùin" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Grad-shlaighd suas o bhonn na sgrìn gus teachdaireachd ùr a sgrìobhadh." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Neach-aithne" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Dèan lethbhreac" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Sguab às" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Air a sguabadh às" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Air a lìbhrigeadh" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Na faighnich dhìom a-rithist" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Deasaich" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Cuir cabadaich buidhinn MMS an comas" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Dh'fhàillig e" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Dh'fhàillig leis!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Annsachdan" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Cha chuirear taic ris an t-seòrsa faidhle" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "O" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Tha mi agaibh" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Buidheann" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Buidheann (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Ro-shealladh air dealbh" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Fiosrachadh" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Às a dhèidh seo" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Fiosrachadh na teachdaireachd" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Teachdaireachdan" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" "Messages;SMS;MMS;Text Messages;Text;Teachdaireachdan;Teacsa;Teacsaichean" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Teachdaireachdan" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplacaid nan teachdaireachdan" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplacaid nan teachdaireachdan" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Tha dàta na teachdaireachd a dhìth" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Mi fhìn" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Teachdaireachd ùr" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Chan eil" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Cha deach cairt SIM a thaghadh" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Chan eil lìonra ann" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ceart ma-thà" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Ri dhèiligeadh" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Thoir a' ghlas far na cairt SIM agad airson fòn no teachdaireachd a chur. 'S " "urrainn dhut a' ghlas a thoirt far na cairte SIM o thaisbeanair an lìonraidh " "aig barr na sgrìn no le bhith a' tadhal air Roghainnean an t-siostaim ⁊ prìobhaideachd." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Air a leughadh" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Air a faighinn" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Thoir air falbh" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Feuch ris a-rithist" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Tha a' chairt SIM glaiste" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Sàbhail" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Lorg" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Lorg..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Tagh SIM tùsail airson gach teachdaireachd a-mach. 'S urrainn dhut an " "roghainn agad atharrachadh ann an Roghainnean an " "t-Siostaim uair sam bith." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Cuir" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Air a chur" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Roghainnean" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Co-roinn" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Staid" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Grad-shlaighd airson a sguabadh às" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Grad-shlaighd gus na gnìomhan a shealltainn" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Gearr leum gun SIM tùsail:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Dh'fhàillig leis gu sealach" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Chaidh lethbhreac dhen teachdaireachd a chur air an stòr-bhòrd" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Chan eil lìonra air %1 an-dràsta" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Chan eil lìonra ann an-dràsta." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Gu" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Gu:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "An-diugh" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Seòrsa" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Neo-aithnichte" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Neach neo-aithnichte" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Ro-shealladh air video" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Cha chuirear taic ri ceanglachain video" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Fàilte gu aplacaid teachdaireachdan Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Sgrìobh teachdaireachd..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Tha" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "An-dè" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Feumaidh tu cairt SIM a thaghadh" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Thòisich thu air %1 a chleachdadh %2" #~ msgid "Create new" #~ msgstr "Cruthaich tè ùr" #~ msgid "+ Create New" #~ msgstr "+ Cruthaich fear ùr" messaging-app-0.1+16.04.20160323/po/bg.po0000644000015600001650000002276112674565025020040 0ustar pbuserpbgroup00000000000000# Bulgarian translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-01-25 21:22+0000\n" "Last-Translator: Gangov \n" "Language-Team: Bulgarian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 часово повикване" msgstr[1] "%1 часово повикване" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 минутно повикване" msgstr[1] "%1 минутно повикване" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 секундно повикване" msgstr[1] "%1 секундно повикване" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Повикване" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Контакт" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Ново съобщение" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Днес" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Напише съобщение..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Вчера" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/km.po0000644000015600001650000003111512674565025020050 0ustar pbuserpbgroup00000000000000# Khmer translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-09-01 09:22+0000\n" "Last-Translator: Sophea Sok \n" "Language-Team: Khmer \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "ការ​ហៅ %1 ម៉ោង" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "ការ​ហៅ %1 នាទី" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "ការ​ហៅ %1 វិនាទី" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "ព្រម​ទទួល" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "បន្ថែម​" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "បន្ថែម​អ្នក​ទទួល" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "ទាំងអស់" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "ឯកសារ​ភ្ជាប់៖ ទំនាក់ទំនង %1" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "ឯកសារ​ភ្ជាប់៖ ឯកសារ %1" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "ឯកសារ​ភ្ជាប់៖ រូបភាព %1" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "ឯកសារ​ភ្ជាប់៖ វីដេអូ %1" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "មិនគាំទ្រឯកសារភ្ជាប់អូឌីយ៉ូ" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "ហៅ" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "បោះ​បង់" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "ប្តូរការភ្ជាប់ការផ្ញើសារទៅ %1 ឬ?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "បិទ" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "តែង​សារ​ថ្មី​ដោយ​រុញ​ឡើង​ពី​បាត​អេក្រង់។" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "ទំនាក់ទំនង" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "​ចម្លង" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "លុប" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "បាន​លុប" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "បាន​ប្រគល់" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "កុំ​សួរ​ម្ដងទៀត" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "បាន​បរាជ័យ" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "បរាជ័យ!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "និយម" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "មិនគាំទ្រប្រភេទឯកសារ" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "ពី" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "ក្រុម" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "ក្រុម (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "មើល​រូបភាព​ជា​មុន" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "ព័ត៌មាន" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "ពេលក្រោយ" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "សារ MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "ព័ត៌មាន​សារ" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "សំបុត្រ" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "ការ​ផ្ញើ​សារ" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "កម្មវិធី​ផ្ញើ​សារ" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "បាត់​ទិន្នន័យ​សារ" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "ខ្លួនខ្ញុំ" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "សារ​ថ្មី" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "ទេ" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "មិន​បាន​ជ្រើស​ស៊ីម​កាត" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "មិន​មាន​បណ្ដាញ" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "យល់ព្រម" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "កំពុង​រង់ចាំ" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "សូមដោះសោស៊ីមកាតរបស់អ្នក ដើម្បីហៅឬផ្ញើសារ ។ អ្នកអាចដោះសោរស៊ីមកាតរបស់អ្នក ពី " "បណ្តាញសូចនាករ នៅកំពូលនៃអេក្រង់ឬដោយទស្សនា ការកំណត់ប្រព័ន្ធ > សន្តិសុខ & ភាពឯកជន ។" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "អាន" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "បាន​ទទួល" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "លុបចេញ" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "ព្យាយាម​ម្ដងទៀត" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "ស៊ី​ម​កាត​ត្រូវ​បាន​ចាក់សោ" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "សារ SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "រក្សា​​ទុក​​" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "ស្វែងរក" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "ស្វែងរក..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "ជ្រើស​ស៊ីម​លំនាំដើម​សម្រាប់​សារ​ចេញ​ទាំងអស់។ " "អ្នក​អាច​ប្ដូរ​ជម្រើស​បាន​នៅ​ក្នុង ការ​កំណត់​ប្រព័ន្ធ ។" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "ផ្ញើ" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "បានផ្ញើ" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "ចែក​រំលែក" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "ស្ថានភាព" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "ប្ដូរ​ទៅ​ស៊ីម​លំនាំដើម៖" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "បាន​បរាជ័យ​ជា​បណ្ដោះអាសន្ន" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "បច្ចុប្បន្ន​មិន​មាន​សេវា​នៅ​លើ %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "បច្ចុប្បន្ន​មិន​មាន​សេវា។" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "ជួន​ចំពោះ" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "​ទៅ ៖" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "ថ្ងៃ​នេះ" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "ប្រភេទ" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "មិន​ស្គាល់" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "មិន​ស្គាល់​ទំនាក់ទំនង" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "មើល​វីដេអូ​ជា​មុន" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "សរសេរ​សារ..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "បាទ/ចាស" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "ម្សិល​មិញ" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "អ្នក​ត្រូវ​ជ្រើស​ស៊ីម​កាត" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" #~ msgid "Create new" #~ msgstr "បង្កើត​ថ្មី" messaging-app-0.1+16.04.20160323/po/el.po0000644000015600001650000003144512674565025020047 0ustar pbuserpbgroup00000000000000# Greek translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-16 09:21+0000\n" "Last-Translator: Simos Xenitellis \n" "Language-Team: Greek \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "κλήση %1 ώρας" msgstr[1] "%1 ώρες κλήση" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "κλήση %1 λεπτού" msgstr[1] "%1 λεπτά κλήση" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "κλήση %1 δευτερολέπτου" msgstr[1] "%1 δευτερόλεπτα κλήση" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Αποδέχθη" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Προσθήκη" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Προσθήκη παραλήπτη" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Όλα" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Συνημμένη: %1 επαφή" msgstr[1] "Συνημμένες: %1 επαφές" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Συνημμένο: %1 αρχείο" msgstr[1] "Συνημμένα: %1 αρχεία" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Συνημμένη: %1 εικόνα" msgstr[1] "Συνημμένες: %1 εικόνες" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Συνημμένο: %1 βίντεο" msgstr[1] "Συνημμένα: %1 βίντεο" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Το επισυναπτόμενο αρχείο ήχου δεν υποστηρίζεται" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Κλήση" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Ακύρωση" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Αλλαγή όλων των συσχετίσεων των Μηνυμάτων σε %1;" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Κλείσιμο" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Δημιουργία ενός νέου μηνύματος σέρνοντας προς τα πάνω από τη βάση της οθόνης." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Επαφή" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Αντιγραφή" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Διαγραφή" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Διαγεγραμμένα" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Παραδόθηκε" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Να μην ερωτηθώ ξανά" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Επεξεργασία" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Ενεργοποίηση συνομιλία ομάδας ΜΜS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Απέτυχε" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Απέτυχε!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Αγαπημένα" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Το είδος αρχείου δεν υποστηρίζεται" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Από" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Ελήφθη" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Ομάδα" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Ομάδα (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Προεπισκόπηση εικόνας" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Πληροφορίες" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Αργότερα" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Πληροφορίες μηνύματος" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Μηνύματα" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Μηνύματα;SMS;MMS;Μηνύματα κειμένου;Κείμενο" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Μηνύματα" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Εφαρμογή Μηνύματα" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Εφαρμογή μηνυμάτων" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Χαμένα δεδομένα μηνύματος" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Εγώ" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Νέο μήνυμα" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Όχι" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Δεν επιλέχτηκε κάρτα SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Απουσία δικτύου" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Εντάξει" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Σε αναμονή" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Παρακαλώ ξεκλείδωστε τη SIM κάρτα σας για να καλέσετε ή να στείλετε μήνυμα. " "Μπορείτε να ξεκλείδωσετε τη SIM κάρτα σας από την Ένδειξη δικτύου στο πάνω " "μέρος της οθόνης ή με το να επισκεφτείτε τις Ρυθμίσεις συστήματος > Ασφάλεια & " "ιδιωτικότητα." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Ανεγνώσθη" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Παρελήφθη" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Αφαίρεση" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Επανάληψη" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Η κάρτα SIM είναι κλειδωμένη" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Αποθήκευση" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Αναζήτηση" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Αναζήτηση..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Επιλέξτε μια προεπιλεγμένη SIM για όλα τα εξερχόμενα μηνύματα. Μπορείτε " "πάντα να αλλάξετε την επιλογή σας στις Ρυθμίσεις " "συστήματος." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Αποστολή" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Απεσταλμένα" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Ρυθμίσεις" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Κοινοποίηση" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Κατάσταση" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Σύρετε για διαγραφή" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Σύρετε για να εμφανίσετε ενέργειες" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Αλλαγή στην προεπιλεγμένη SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Προσωρινά απέτυχε" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Το μήνυμα κειμένου έχει αντιγραφεί στο πρόχειρο" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Προς το παρόν δεν υπάρχει δίκτυο στο %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Προς το παρόν δεν υπάρχει δίκτυο." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Προς" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Προς:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Σήμερα" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Τύπος" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Άγνωστο" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Άγνωστη επαφή" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Προεπισκόπηση βίντεο" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Το επισυναπτόμενο αρχείο βίντεο δεν υποστηρίζεται" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Καλώς ήρθατε στην εφαρμογή συνομιλίας του Ubuntu σας." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Γράψτε ένα μήνυμα..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ναι" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Χθες" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Πρέπει να επιλέξετε μια κάρτα SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Έγινε αλλαγή σε %1 @ %2" #~ msgid "+ Create New" #~ msgstr "+ Δημιουργία νέου" messaging-app-0.1+16.04.20160323/po/sr.po0000644000015600001650000003126112674565025020067 0ustar pbuserpbgroup00000000000000# Serbian translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2016-03-09 22:24+0000\n" "Last-Translator: Bojan Bogdanović \n" "Language-Team: Serbian \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: 2016-03-10 05:57+0000\n" "X-Generator: Launchpad (build 17936)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Позив од %1 сат" msgstr[1] "Позив од %1 сата" msgstr[2] "Позив од %1 сати" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Позив од %1 минут" msgstr[1] "Позив од %1 минута" msgstr[2] "Позив од %1 минута" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Позив од %1 секунде" msgstr[1] "Позив од %1 секунде" msgstr[2] "Позив од %1 секунди" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Прихваћено" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Додај" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Додај примаоца" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Све" #: ../src/qml/ThreadDelegate.qml:91 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Прилог: %1 потсетница" msgstr[1] "Прилози: %1 потсетнице" msgstr[2] "Прилози: %1 потсетница" #: ../src/qml/ThreadDelegate.qml:97 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Прилог: %1 датотека" msgstr[1] "Прилози: %1 датотеке" msgstr[2] "Прилози: %1 датотека" #: ../src/qml/ThreadDelegate.qml:85 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Прилог: %1 слика" msgstr[1] "Прилози: %1 слике" msgstr[2] "Прилози: %1 слика" #: ../src/qml/ThreadDelegate.qml:88 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Прилог: %1 видео" msgstr[1] "Прилози: %1 видеа" msgstr[2] "Прилози: %1 видеа" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Звучни прилог није подржан" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Позови" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Откажи" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Пребаците све поруке телефона на %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:946 msgid "Close" msgstr "Затвори" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Састави нову поруку повлачењем на горе са дна екрана." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Контакт" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:185 msgid "Copy" msgstr "Копирај" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:107 msgid "Delete" msgstr "Обриши" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Обрисано" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Испоручено" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Не питај поново" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Уреди" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Омогући ММС групно ћаскање" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Неуспешно" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Неуспешно!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Омиљени" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Врста датотеке није подржана" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Шаље" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Важи" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Група" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Група (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Преглед слике" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:177 msgid "Info" msgstr "Инфо" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Касније" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "ММС" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Подаци о поруци" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Поруке" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "поруке;СМС;ММС;текстуалне поруке;текст" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Дописивање" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Програм за поруке" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Програм за поруке" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Недостају подаци поруке" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Ја" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Нова порука" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Не" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Није изабрана СИМ картица" #: ../src/qml/Messages.qml:942 msgid "No network" msgstr "Нема мреже" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "У реду" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "На чекању" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Откључајте вашу СИМ картицу да бисте могли да позивате или да шаљете поруке. " "Можете да откључате СИМ картицу из Показатеља мреже на врху екрана или из " "изборника Подешавања система > Безбедност " "& Приватност." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Прочитана" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Примљена" #: ../src/qml/ComposeBar.qml:130 msgid "Remove" msgstr "Уклони" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:181 msgid "Retry" msgstr "Покушај поново" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "СИМ картица је закључана" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "СМС" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Сачувај" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Тражи" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Потражи..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Изаберите подразумевану СИМ картицу за слање порука. Свој избор увек можете " "променити у Подешавањима система." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Пошаљи" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Послата" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Подешавања" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Дели" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Стање" #: ../src/qml/SwipeItemDemo.qml:256 msgid "Swipe to delete" msgstr "Превуците да обришете" #: ../src/qml/SwipeItemDemo.qml:206 msgid "Swipe to reveal actions" msgstr "Превуците да видите радње" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Пређи на подразумевану СИМ картицу:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Привремени неуспех" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Текстуална порука је умножена у оставу" #: ../src/qml/Messages.qml:943 #, qt-format msgid "There is currently no network on %1" msgstr "Тренутно нема мреже на %1" #: ../src/qml/Messages.qml:943 msgid "There is currently no network." msgstr "Тренутно нема мреже." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Прима" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Прима:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Данас" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Тип" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Непознато" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:44 msgid "Unknown contact" msgstr "Непозната особа" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Преглед видеа" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Видео прилог није подржан" #: ../src/qml/SwipeItemDemo.qml:161 msgid "Welcome to your Ubuntu messaging app." msgstr "Добро дошли у Убунтуов програм за поруке." #: ../src/qml/ComposeBar.qml:391 msgid "Write a message..." msgstr "Напиши поруку..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Да" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Јуче" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Морате изабрати СИМ картицу" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Пребачени сте на %1 @ %2" #~ msgid "Create new" #~ msgstr "Започни ново" #~ msgid "+ Create New" #~ msgstr "+ Направи нову" messaging-app-0.1+16.04.20160323/po/lo.po0000644000015600001650000002253112674565025020055 0ustar pbuserpbgroup00000000000000# Lao translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2013-10-03 03:38+0000\n" "Last-Translator: Anousak \n" "Language-Team: Lao \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 ຊົ່ວໂມງ ໂທ" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 ນາທີໂທ" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 ວິນາທີໂທ" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "ໂທ" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "ສາຍພົວພັນ" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "ຂໍ້ຄວາມໃໝ່" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "ວັນນີ້" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "ຊຽນຂໍ້ຄວາມ..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "ມື້ວານນີ້" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/ms.po0000644000015600001650000002570712674565025020072 0ustar pbuserpbgroup00000000000000# Malay translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-01-17 09:30+0000\n" "Last-Translator: abuyop \n" "Language-Team: Malay \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Panggilan %1 jam" msgstr[1] "Panggilan %1 jam" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Panggilan %1 minit" msgstr[1] "Panggilan %1 minit" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Panggilan %1 saat" msgstr[1] "Panggilan %1 saat" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Diterima" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Tambah" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Tambah penerima" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Semua" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Lampiran: %1 kenalan" msgstr[1] "Lampiran: %1 kenalan" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Lampiran: %1 fail" msgstr[1] "Lampiran: %1 fail" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Lampiran: %1 imej" msgstr[1] "Lampiran: %1 imej" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Lampiran: %1 video" msgstr[1] "Lampiran: %1 video" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Lampiran audio tidak disokong" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Panggilan" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Batal" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Ubah semua perkaitan Pemesejan kepada %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Tutup" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Gubah mesej baharu dengan meleret ke atas bermula dari bahagian bawah skrin" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kenalan" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Salin" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Padam" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Dipadam" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Dihantar" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Jangan tanya lagi" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Sunting" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Benarkan sembang kumpulan MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Gagal" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Gagal!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Kegemaran" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Jenis fail tidak disokong" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Daripada" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Faham" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Kumpulan" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Kumpulan (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Pratonton Imej" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Maklumat" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Kemudian" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Maklumat mesej" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mesej" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Mesej;SMS;MMS;Mesej Teks;Teks" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Pemesejan" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Apl Pemesejan" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplikasi pemesejan" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Data mesej hilang" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Diri Saya" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Mesej Baharu" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Tidak" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Tiada kad SIM dipilih" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Tiada rangkaian" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Tertangguh" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Sila buka kad SIM anda untuk membuat panggilan atau hantar mesej. Anda boleh " "buka kad SIM anda dari Penunjuk Rangkaian di bahagian atas skrin atau " "melawat Tetapan Sistem > Keselamatan & " "Kerahsiaan." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Baca" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Diterima" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Buang" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Cuba Lagi" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Kad SIM dikunci" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Simpan" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Gelintar" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Gelintar..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Pilih SIM lalai untuk semua mesej keluar. Anda boleh ubah pilihan anda di " "dalam Tetapan Sistem." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Hantar" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Hantar" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Tetapan" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Kongsi" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Leret untuk padam" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Leret untuk dedahkan tindakan" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Tukar ke SIM lalai:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Gagal Buat Sementara" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Mesej teks disalin ke clipboard" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Buat masa ini tiada rangkaian pada %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Buat masa ini tiada rangkaian." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Kepada" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Kepada:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hari ini" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Jenis" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Tidak Diketahui" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Kenalan tidak diketahui" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Pratonton Video" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Lampiran video tidak disokong" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Selamat datang ke apl pemesejan Ubuntu anda." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Tulis satu mesej..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ya" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Semalam" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Anda perlu pilih satu kad SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Anda tukarkan ke %1 @ %2" #~ msgid "Create new" #~ msgstr "Cipta baharu" #~ msgid "+ Create New" #~ msgstr "+ Cipta Baharu" messaging-app-0.1+16.04.20160323/po/da.po0000644000015600001650000002572412674565025020036 0ustar pbuserpbgroup00000000000000# Danish translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # # Ask Hjorth Larsen , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-09-18 21:36+0000\n" "Last-Translator: Folmer Fredslund \n" "Language-Team: Danish \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 times opkald" msgstr[1] "%1 timers opkald" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minuts opkald" msgstr[1] "%1 minutters opkald" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekunds opkald" msgstr[1] "%1 sekunders opkald" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Accepteret" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Tilføj" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Tilføj modtager" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Alle" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Vedhæftet: %1 kontakt" msgstr[1] "Vedhæftet: %1 kontakter" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Vedhæftet: %1 fil" msgstr[1] "Vedhæftet: %1 filer" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Vedhæftet: %1 billede" msgstr[1] "Vedhæftet: %1 billeder" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Vedhæftet: %1 video" msgstr[1] "Vedhæftet: %1 videoer" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Lydvedhæftning ikke understøttet" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Opkald" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Annullér" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Tilknyt alle beskeder til %1" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Luk" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Skriv en ny besked ved at swipe op fra bunden af skærmen" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopiér" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Slet" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Slettet" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Sendt" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Spørg ikke igen" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Redigér" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Aktiver MMS-gruppechat" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Mislykkedes" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Fejl!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Foretrukne" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Filtype ikke understøttet" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Afsender" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Forstået" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Gruppe" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Gruppe (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Billedforhåndsvisning" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Senere" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Besked information" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Beskeder" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Beskeder;SMS;MMS;Tekst beskeder;Tekst" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Beskeder" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Beskedprogram" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Program til modtagelse af beskeder" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Mangler besked data" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Jeg" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Ny besked" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nej" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Der er ikke valgt SIM-kort" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Intet netværk" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "I kø" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Lås dit SIM-kort op for at foretage opkald eller sende en besked. Du kan " "låse dit SIM-kort op fra netværksindikatoren, i toppen af skærmen, eller ved " "at gå til Systemindstillinger > Sikkerhed " "& Privatliv." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Læst" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Modtaget" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Fjern" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Forsøg igen" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM-kortet er låst" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Gem" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Søg" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Søg..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Vælg et standard SIM til alle udgående beskeder. Du kan altid ændre dit valg " "i System indstillinger" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Send" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Sendt" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Indstillinger" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Del" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Stryg for at slette" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Stryg for at vise handlinger" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Skift til standard-simkort:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Midlertidig fejl" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Besked kopieret til udklipsholder" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Der er i øjeblikket intet netværk på %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Der er i øjeblikket intet netværk." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Til" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Til:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "I dag" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Type" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Ukendt" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Ukendt kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Videoforhåndsvisning" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Videovedhæftning ikke understøttet" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Velkommen til dit Ubuntu beskedprogram." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Skriv en besked..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ja" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "I går" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Du skal vælge et SIM-kort" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Du skiftede til %1 @ %2" #~ msgid "+ Create New" #~ msgstr "+ Opret ny" messaging-app-0.1+16.04.20160323/po/eu.po0000644000015600001650000002612412674565025020056 0ustar pbuserpbgroup00000000000000# Basque translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-17 13:50+0000\n" "Last-Translator: Ibai Oihanguren Sala \n" "Language-Team: Basque \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "ordu %1eko deia" msgstr[1] "%1 orduko deia" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "minutu %1eko deia" msgstr[1] "%1 minutuko deia" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "segundo %1eko deia" msgstr[1] "%1 segundoko deia" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Onartuta" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Gehitu" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Gehitu hartzailea" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Guztiak" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Eranskina: kontaktu %1" msgstr[1] "Eranskinak: %1 kontaktu" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Eranskina: fitxategi %1" msgstr[1] "Eranskinak: %1 fitxategi" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Eranskina: irudi %1" msgstr[1] "Eranskinak: %1 irudi" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Eranskina: bideo %1" msgstr[1] "Eranskinak: %1 bideo" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audio-eranskina ez dago onartua" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Deitu" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Utzi" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Aldatu mezularitzako asoziazio guztiak %1(e)ra?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Itxi" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Idatzi mezu berri bat hatza pantailaren behealdetik gorantz pasaz." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontaktua" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopiatu" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Ezabatu" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Ezabatuta" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Bidalita" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Ez galdetu berriro" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Editatu" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Gaitu taldeko MMS txata" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Huts egin du" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Hutseginda!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Gogokoak" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Fitxategi mota ez dago onartuta" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Nork" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Ulertuta" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Taldea" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Taldea (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Irudiaren aurrebista" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informazioa" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Geroago" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMSa" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Mezuaren informazioa" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mezuak" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Mezuak;SMSak;MMSak;Testu-mezuak;Testua" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mezularitza" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Mezularitza aplikazioa" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Mezularitza aplikazioa" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Mezuaren datuak faltan" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Ni" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Mezu berria" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ez" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Ez da SIM txartelik hautatu" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Sarerik ez" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ados" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Burutzeke" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Desblokeatu SIM txartela deitzeko edo mezu bat bidaltzeko. SIM txartela " "desblokeatzeko Sare-adierazlea erabil dezakezu, pantailaren goialdean, edo " "bestela Sistemaren ezarpenak > Segurtasuna " "eta pribatutasuna bisitatu." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Irakurrita" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Jasota" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Kendu" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Saiatu berriz" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM txartela blokeatuta dago" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMSa" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Gorde" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Bilatu" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Bilatu..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Hautatu irteerako mezu guztientzako SIM lehenetsia. Edonoiz alda dezakezu " "aukera hau Sistemaren ezarpenetatik." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Bidali" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Noiz" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Ezarpenak" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Partekatu" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Egoera" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Pasa hatza ezabatzeko" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Pasa hatza ekintzak erakusteko" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Aldatu SIM lehenetsira:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Behin behinean huts egin du" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Testu-mezua arbelera kopiatu da" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Une honetan ez dago sarerik %1(e)n" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Une honetan ez dago sarerik." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Nori" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Nori:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Gaur" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Mota" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Ezezaguna" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Kontaktu ezezaguna" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Bideoaren aurrebista" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Bideo-eranskina ez dago onartuta" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Ongi etorri Ubunturen mezularitza-aplikaziora." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Idatzi mezua..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Bai" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Atzo" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "SIM txartel bat hautatu behar duzu" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "%1 txartelera aldatu duzu %2(e)an" #~ msgid "Create new" #~ msgstr "Sortu berria" #~ msgid "+ Create New" #~ msgstr "+ Sortu berria" messaging-app-0.1+16.04.20160323/po/tr.po0000644000015600001650000002541112674565025020070 0ustar pbuserpbgroup00000000000000# Turkish translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-03-22 15:49+0000\n" "Last-Translator: Yunus İşleyen \n" "Language-Team: Turkish \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 saat arama" msgstr[1] "%1 saat arama" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 dakika arama" msgstr[1] "%1 dakika arama" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 saniye arama" msgstr[1] "%1 saniye arama" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Kabul Edildi" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Ekle" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Alıcı ekle" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Hepsi" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Ek: %1 kişi" msgstr[1] "Ek: %1 kişi" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Ek: %1 dosya" msgstr[1] "Ek: %1 dosya" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Ek: %1 resim" msgstr[1] "Ek: %1 resim" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Ek: %1 video" msgstr[1] "Ek: %1 video" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Ses eklentisi desteklenmemektedir." #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Ara" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "İptal" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Tüm mesaj ilişkilendirmeleri %1 mi olsun?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Kapat" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Ekranın aşağısından yukarı kaydırarak yeni bir ileti hazırlayın." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kişi" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopyala" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Sil" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Silindi" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Gönderildi" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Bir daha sorma" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Başarısız" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Başarısız!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoriler" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Dosya tipi desteklenmemektedir." #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Gönderen" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grup" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grup (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Resim Önizlemesi" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Bilgi" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Sonra" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "İleti bilgisi" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mesajlar" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "İletiler;SMS;MMS;Metin İletileri;Metin" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mesajlaşma" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Mesajlaşma Uygulaması" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Mesajlaşma uygulaması" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Eksik mesaj verisi" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Kendim" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Yeni İleti" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Hayır" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "SIM Kart seçili değil" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Şebeke Yok" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Tamam" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Bekliyor" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Lütfen arama yapmak veya mesaj göndermek için SIM kartınızın kilidini açın. " "SIM kartınızın kilidini ekranın üstündeki Ağ Göstergesinden veya Sistem Ayarları > Güvenlik & Gizlilik 'i " "ziyaret ederek açabilirsiniz." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Oku" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Alındı" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Sil" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Yeniden Dene" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM Kart kilitli" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Kaydet" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Ara" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Ara..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Giden mesajlar için varsayılan bir SIM seçiniz. Sistem Ayarları'ndan her zaman seçiminizi " "değiştirebilirsiniz." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Gönder" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Gönderildi" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Paylaş" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Durum" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Varsayılan SIM'e geçiş yap:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Geçici olarak başarısız" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Metin Mesajı panoya kopyalandı." #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "%1 operatöründe şu an şebeke yok" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Şu an şebeke yok." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Kime" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Kime:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Bugün" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tür" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Bilinmeyen" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Bilinmeyen kişi" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Video Önizlemesi" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video eklentisi desteklenmemektedir." #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Bir ileti yazın..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Evet" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Dün" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Bir SIM kart seçmeniz gerekmektedir." #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "%2'de %1'e geçtiniz" messaging-app-0.1+16.04.20160323/po/hr.po0000644000015600001650000002625012674565025020056 0ustar pbuserpbgroup00000000000000# Croatian translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-08-03 10:12+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Croatian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 sat poziva" msgstr[1] "%1 sata poziva" msgstr[2] "%1 sati poziva" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minuta poziva" msgstr[1] "%1 minute poziva" msgstr[2] "%1 minuta poziva" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekunda poziva" msgstr[1] "%1 sekunde poziva" msgstr[2] "%1 sekundi poziva" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Prihvaćeno" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Dodaj" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Dodaj primatelja" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Svi" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Privitak: %1 kontakt" msgstr[1] "Privitak: %1 kontakta" msgstr[2] "Privitak: %1 kontakta" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Privitak: %1 datoteka" msgstr[1] "Privitak: %1 datoteke" msgstr[2] "Privitak: %1 datoteka" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Privitak: %1 slika" msgstr[1] "Privitak: %1 slike" msgstr[2] "Privitak: %1 slika" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Privitak: %1 video snimka" msgstr[1] "Privitak: %1 video snimke" msgstr[2] "Privitak: %1 video snimaka" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Zvučni privitak nije dopušten" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Poziv" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Odustani" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Promijeni sva pridruženja poruka na %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Zatvori" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Sastavite novu poruku povlačenjem od vrha zaslona." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopiraj" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Obriši" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Obrisano" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Dostavljeno" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Ne pitaj više" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Uredi" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Omogući MMS grupno čavrljanje" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Neuspjelo" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Neuspjelo!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Omiljeni" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Vrsta datoteke nije podržana" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Od" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Shvaćam" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupa" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "(%1) grupa" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Pregled slike" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informacije" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Kasnije" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informacije poruke" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Poruke" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Poruke;SMS;MMS;Tekstovne poruke;Tekst" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Slanje poruka" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplikacija za poruke" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplikacija za poruke" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Nedostaje sadržaj poruke" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Sebe" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nova poruka" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ne" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nema odabrane SIM kartice" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Nema mreže" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "U redu" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Na čekanju" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Otključajte vašu SIM karticu za biranje poziva ili slanje poruka. Možete " "otkljčati svoju SIM karticu s indikatora mreže na vrhu zaslona ili posjetom " "Postavke sustava > Sigurnost i Privatnost." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Pročitaj" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Primljeno" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Ukloni" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Ponovno pokušaj" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM kartica zaključana" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Spremi" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Pretraži" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Pretraga..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Odaberite SIM karticu za odlazne poruke. Uvijek možete promijeniti svoj " "odabir u Postavkama sustava." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Pošalji" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Postavke" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Podijeli" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Stanje" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Pomakni za brisanje" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Pomakni za ponavljanje radnje" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Prebaci na zadan SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Privremeno nedostupno" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Poruka je kopirana u međuspremnik" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Trenutno nema mreže na %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Trenutno nema mreže." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Za" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Za:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Danas" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Vrsta" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Nepoznato" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Nepoznat kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Pregled videa" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video prilog nije podržan" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Dobrodošli u vašu Ubuntu aplikaciju poruka." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Napišite poruku..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Da" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Jučer" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Morate odabrati SIM karticu" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Prebacili ste se na %1 @ %2" messaging-app-0.1+16.04.20160323/po/is.po0000644000015600001650000002374712674565025020070 0ustar pbuserpbgroup00000000000000# translation of po_messaging-app-is.po to icelandic # Icelandic translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # # FIRST AUTHOR , 2014. # Sveinn í Felli , 2014. msgid "" msgstr "" "Project-Id-Version: po_messaging-app-is\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-09-21 11:33+0000\n" "Last-Translator: Sveinn í Felli \n" "Language-Team: Icelandic \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" "Language: is\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 klukkustundar símtal" msgstr[1] "%1 klukkustunda símtal" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 mínútu símtal" msgstr[1] "%1 mínútna símtal" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekúndu símtal" msgstr[1] "%1 sekúndna símtal" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Samþykkt" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Bæta við" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Bæta við viðtakanda" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Allt" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Viðhengi: %1 tengiliður" msgstr[1] "Viðhengi: %1 tengiliðir" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Viðhengi: %1 skrá" msgstr[1] "Viðhengi: %1 skrár" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Viðhengi: %1 mynd" msgstr[1] "Viðhengi: %1 myndir" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Viðhengi: %1 myndskeið" msgstr[1] "Viðhengi: %1 myndskeið" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Hringja" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Hætta við" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Loka" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Tengiliður" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Afrita" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Eyða" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Eytt" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Ekki spyrja aftur" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Mistókst" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Mistókst!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Eftirlæti" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Frá" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Hópur" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Hópur (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Forskoðun myndar" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Upplýsingar" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Seinna" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Skilaboð" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Sjálf/ur" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Ný skilaboð" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ekkert" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Vista" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Deila" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Í dag" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Forskoðun myndskeiðs" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Skrifa skilaboð..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Í gær" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" #~ msgid "+ Create New" #~ msgstr "+ Búa til nýjan" messaging-app-0.1+16.04.20160323/po/en_AU.po0000644000015600001650000002561312674565025020436 0ustar pbuserpbgroup00000000000000# English (Australia) translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-09-20 00:58+0000\n" "Last-Translator: Jared Norris \n" "Language-Team: English (Australia) \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 hour call" msgstr[1] "%1 hours call" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minute call" msgstr[1] "%1 minutes call" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 second call" msgstr[1] "%1 seconds call" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Accepted" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Add" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Add recipient" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "All" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Attachment: %1 contact" msgstr[1] "Attachments: %1 contacts" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Attachment: %1 file" msgstr[1] "Attachments: %1 files" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Attachment: %1 image" msgstr[1] "Attachments: %1 images" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Attachment: %1 video" msgstr[1] "Attachments: %1 videos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Audio attachment not supported" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Call" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancel" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Change all Messaging associations to %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Close" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Compose a new message by swiping up from the bottom of the screen." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contact" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copy" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Delete" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Deleted" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Delivered" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Don't ask again" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Edit" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Enable MMS group chat" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Failed" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Failed!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favourites" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "File type not supported" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "From" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Got it" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Group" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Group (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Image Preview" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Later" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Message info" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Messages" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messages;SMS;MMS;Text Messages;Text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Messaging" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Messaging App" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Messaging application" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Missing message data" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Myself" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "New Message" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "No" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "No SIM card selected" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "No network" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pending" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Read" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Received" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Remove" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Retry" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM Card is locked" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Save" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Search" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Search..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Send" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Sent" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Settings" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Share" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Swipe to delete" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Swipe to reveal actions" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Switch to default SIM:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Temporarily Failed" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Text message copied to clipboard" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "There is currently no network on %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "There is currently no network." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "To" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "To:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Today" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Type" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Unknown" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Unknown contact" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Video Preview" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Video attachment not supported" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Welcome to your Ubuntu messaging app." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Write a message..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Yes" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Yesterday" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "You need to select a SIM card" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "You switched to %1 @ %2" #~ msgid "Create new" #~ msgstr "Create new" #~ msgid "+ Create New" #~ msgstr "+ Create New" messaging-app-0.1+16.04.20160323/po/eo.po0000644000015600001650000002242012674565025020043 0ustar pbuserpbgroup00000000000000# Esperanto translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-12-26 12:53+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Esperanto \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "" msgstr[1] "" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Akceptita" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Aldoni" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Aldoni ricevonton" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Telefoni" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Nuligi" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Fermi" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakto" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopii" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Forigi" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Forigita" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Redakti" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/uk.po0000644000015600001650000003273112674565025020065 0ustar pbuserpbgroup00000000000000# Ukrainian translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-08 11:07+0000\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1-годинний дзвінок" msgstr[1] "%1-годинний дзвінок" msgstr[2] "%1-годинний дзвінок" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1-хвилинний дзвінок" msgstr[1] "%1-хвилинний дзвінок" msgstr[2] "%1-хвилинний дзвінок" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1-секундний дзвінок" msgstr[1] "%1-секундний дзвінок" msgstr[2] "%1-секундний дзвінок" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Прийнято" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Додати" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Додати отримувача" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Усі" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Долучення: %1 запис контакту" msgstr[1] "Долучення: %1 записи контактів" msgstr[2] "Долучення: %1 записів контактів" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Долучення: %1 файл" msgstr[1] "Долучення: %1 файли" msgstr[2] "Долучення: %1 файлів" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Долучення: %1 зображення" msgstr[1] "Долучення: %1 зображення" msgstr[2] "Долучення: %1 зображень" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Долучення: %1 відео" msgstr[1] "Долучення: %1 відео" msgstr[2] "Долучення: %1 відео" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Підтримки долучення звукових файлів не передбачено" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Подзвонити" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Скасувати" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Пов’язати увесь обмін повідомленнями з %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Закрити" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Створіть нове повідомлення рухом пальця з нижньої частини екрана." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Контакт" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Копіювати" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Вилучити" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Вилучено" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Доставлено" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Більше не питати" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Змінити" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Увімкнути групове спілкування MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Помилка" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Невдача!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Вибрані" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Підтримки цього типу файлів не передбачено" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Відправник" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Виконано" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Група" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Група (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Перегляд зображення" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Відомості" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Пізніше" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Дані повідомлення" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Повідомлення" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" "Messages;SMS;MMS;Text " "Messages;Text;повідомлення;смс;есемес;ммс;емемес;текстові повідомлення;текст" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Обмін повідомленнями" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Програма для обміну повідомленнями" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Програма для обміну повідомленнями" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Немає даних повідомлення" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Я" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Нове повідомлення" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ні" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Не вибрано SIM-картки" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Немає мережі" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Гаразд" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "В очікуванні" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Будь ласка, розблокуйте вашу SIM-картку, щоб мати змогу дзвонити або " "надсилати повідомлення. Розблокувати картку можна за допомогою індикатора " "мережі у верхній частині екрана або за допомогою сторінки Системні параметра > Безпека & " "Конфіденційність." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Прочитане" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Отримано" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Вилучити" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Повторити" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM-картку заблоковано" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Зберегти" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Пошук" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Шукати…" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Виберіть типову SIM-картку для усіх вихідних повідомлень. Ваш вибір можна " "будь-коли змінити за допомогою Системних " "параметрів." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Надіслати" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Надіслані" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Параметри" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Поділитися" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Стан" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Проведіть для вилучення" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Проведіть, щоб побачити пункти дій" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Перемкнутися на типову SIM-картку:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Тимчасова помилка" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Текстове повідомлення скопійовано до буфера" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Зараз на %1 немає доступу до мережі" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Зараз немає доступу до мережі." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Отримувач" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Кому:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Сьогодні" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Тип" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Невідомий" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Невідомий контакт" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Перегляд відео" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Підтримки долучення відеофайлів не передбачено" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Вітаємо у програмі для роботи з повідомленнями Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Створення повідомлення…" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Так" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Вчора" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Вам слід вибрати SIM-картку" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Ви перемкнулися на %1 о %2" #~ msgid "Create new" #~ msgstr "Створити" #~ msgid "+ Create New" #~ msgstr "+ Створити" messaging-app-0.1+16.04.20160323/po/fi.po0000644000015600001650000002614512674565025020046 0ustar pbuserpbgroup00000000000000# Finnish translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-02 07:54+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 tunnin puhelu" msgstr[1] "%1 tunnin puhelu" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minuutin puhelu" msgstr[1] "%1 minuutin puhelu" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 sekunnin puhelu" msgstr[1] "%1 sekunnin puhelu" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Hyväksytty" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Lisää" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Lisää vastaanottaja" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Kaikki" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Liite: %1 yhteystieto" msgstr[1] "Liitteet: %1 yhteystietoa" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Liite: %1 tiedosto" msgstr[1] "Liitteet: %1 tiedostoa" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Liite: %1 kuva" msgstr[1] "Liitteet: %1 kuvaa" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Liite: %1 video" msgstr[1] "Liitteet: %1 videota" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Ääniliitteet eivät ole tuettuja" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Puhelu" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Peru" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Muutetaanko kaikki viestintäyhteydet SIM-korttiin/tiliin %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Sulje" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Luo uusi viesti pyyhkäisemällä näytön alaosasta ylöspäin." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Yhteystieto" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopioi" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Poista" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Poistettu" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Toimitettu" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Älä kysy uudestaan" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Muokkaa" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Ota käyttöön MMS-viestien ryhmäkeskustelu" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Epäonnistui" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Virhe!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Suosikit" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Tiedostotyyppi ei ole tuettu" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Lähettäjä" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Selvä" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Ryhmä" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Ryhmä (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Kuvan esikatselu" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Tiedot" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Myöhemmin" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Viestin tiedot" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Viestit" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" "Messages;SMS;MMS;Text " "Messages;Text;Viestit;tekstiviestit;tekstarit;multimediaviestit" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Viestit" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Viestisovellus" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Viestisovellus" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Viestidata puuttuu" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Minä" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Uusi viesti" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Ei" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "SIM-korttia ei havaittu" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Ei verkkoa" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "OK" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Odottaa" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Avaa SIM-kortin lukitus soittaaksesi tai lähettääksesi viestejä. Voit avata " "lukituksen verkkoilmaisimesta näytön yläosasta tai menemällä Järjestelmän asetukset > Turvallisuus ja " "yksityisyys." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Luettu" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Vastaanotettu" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Poista" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Yritä uudelleen" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM-kortti on lukittu" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "Tekstiviesti" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Tallenna" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Etsi" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Etsi…" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Valitse oletus-SIM kaikille lähteville viesteille. Voi muuttaa asetusta Järjestelmän asetuksissa." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Lähetä" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Lähetetyt" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Asetukset" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Jaa" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Tila" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Vedä poistaaksesi" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Vedä paljastaaksesi toiminnot" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Vaihda oletus-SIM-korttiin:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Epäonnistui väliaikaisesti" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Tekstiviesti kopioitu leikepöydälle" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Ei verkkoa juuri nyt - %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Ei verkkoa juuri nyt." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Vastaanottaja" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Vastaanottajat:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Tänään" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tyyppi" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Tuntematon" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Tuntematon yhteystieto" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Videon esikatselu" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Videoliitteet eivät ole tuettuja" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Tervetuloa Ubuntun viestisovellukseen." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Kirjoita viesti..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Kyllä" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Eilen" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Valitse SIM-kortti" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Vaihdoit SIM-korttiin %1 %2" #~ msgid "Create new" #~ msgstr "Luo uusi" #~ msgid "+ Create New" #~ msgstr "+ Luo uusi" messaging-app-0.1+16.04.20160323/po/ru.po0000644000015600001650000003223612674565025020074 0ustar pbuserpbgroup00000000000000# Russian translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-08 11:12+0000\n" "Last-Translator: ☠Jay ZDLin☠ \n" "Language-Team: Russian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 час вызовов" msgstr[1] "%1 часа вызовов" msgstr[2] "%1 часов вызовов" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 минута вызовов" msgstr[1] "%1 минуты вызовов" msgstr[2] "%1 минут вызовов" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 секунда вызовов" msgstr[1] "%1 секунды вызовов" msgstr[2] "%1 секунд вызовов" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Принято" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Добавить" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Добавить получателя" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Все" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Приложение: %1 контакт" msgstr[1] "Приложение: %1 контакта" msgstr[2] "Приложение: %1 контактов" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Приложение: %1 файл" msgstr[1] "Приложение: %1 файла" msgstr[2] "Приложение: %1 файлов" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Приложение: %1 изображение" msgstr[1] "Приложение: %1 изображения" msgstr[2] "Приложение: %1 изображений" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Приложение: %1 видео" msgstr[1] "Приложение: %1 видео" msgstr[2] "Приложение: %1 видео" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Вложенный аудиофайл не поддерживается" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Вызов" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Отмена" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Привязать все сообщения к %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Закрыть" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Чтобы написать новое сообщение, смахните вверх от нижнего края экрана." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Контакт" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Копировать" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Удалить" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Удалено" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Доставлено" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Больше не спрашивать" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Правка" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Включить групповой MMS-чат" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Не удалось" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Не удалось!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Избранное" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Неподдерживаемый тип файла" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "От" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Готово" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Группа" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Группа (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Предпросмотр изображения" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Информация" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Не сейчас" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Информация о сообщении" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Сообщения" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Сообщения;SMS;MMS;Текстовые сообщения;Текст" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Обмен сообщениями" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Приложение для обмена сообщениями" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Приложение, позволяющее обмениваться сообщениями" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Отсутствуют данные о сообщении" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Я" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Создать сообщение" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Нет" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "SIM-карта не выбрана" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Сеть отсутствует" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "ОК" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "В ожидании" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Для совершения звонков и отправки сообщений разблокируйте SIM-карту. " "Разблокировать SIM-карту можно через индикатор сети вверху экрана или через " "Параметры системы > Защита и приватность." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Прочитать" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Получено" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Удалить" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Повторить" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM-карта заблокирована" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "СМС" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Сохранить" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Найти" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Поиск..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Выберите СИМ-карту, используемую по умолчанию для всех исходящих сообщений. " "Вы в любое время можете изменить свой выбор в Настройках системы." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Отправить" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Отправлено" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Настройки" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Поделиться" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Статус" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Смахните для удаления" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Смахните для выбора действия" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Переключиться на SIM-карту по умолчанию:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Временно не удаётся" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Сообщение скопировано в буфер обмена" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "В настоящий момент отсутствует доступ к сети %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "В настоящий момент сеть недоступна." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Кому" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Кому:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Сегодня" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Тип" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Неизвестно" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Неизвестный контакт" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Предпросмотр видео" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Вложенный видеофайл не поддерживается" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Ваше приложение для обмена сообщениями в Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Новое сообщение..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Да" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Вчера" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Необходимо выбрать SIM-карту" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Вы переключились на %1 @ %2" #~ msgid "Create new" #~ msgstr "Создать" #~ msgid "+ Create New" #~ msgstr "+ Создать новый" messaging-app-0.1+16.04.20160323/po/ro.po0000644000015600001650000002716012674565025020066 0ustar pbuserpbgroup00000000000000# Romanian translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-19 18:13+0000\n" "Last-Translator: Meriuță Cornel \n" "Language-Team: Romanian \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 % 100 > 19) || ((n % 100 " "== 0) && (n != 0))) ? 2: 1));\n" "X-Launchpad-Export-Date: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Convorbirea a durat %1 oră" msgstr[1] "Convorbirea a durat %1 ore" msgstr[2] "Convorbirea a durat %1 de ore" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Convorbirea a durat %1 minut" msgstr[1] "Convorbirea a durat %1 minute" msgstr[2] "Convorbirea a durat %1 de minute" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Convorbirea a durat %1 secundă" msgstr[1] "Convorbirea a durat %1 secunde" msgstr[2] "Convorbirea a durat %1 de secunde" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Acceptat" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Adaugă" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Adaugă recipient" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Tot" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Atașament: %1 contact" msgstr[1] "Atașamente: %1 contacte" msgstr[2] "Atașamente: %1 de contacte" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Atașamente: %1 fișier" msgstr[1] "Atașamente: %1 fișiere" msgstr[2] "Atașamente: %1 de fișiere" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Atașament: %1 fotografie" msgstr[1] "Atașament: %1 fotografii" msgstr[2] "Atașament: %1 de fotografii" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Atașament: %1 clip video" msgstr[1] "Atașament: %1 clipuri video" msgstr[2] "Atașament: %1 de clipuri video" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Atașament audio nesuportat" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Apel" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Anulează" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Modificați toate mesajele asociate pe %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Închide" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Compuneți un mesaj nou prin glisare pornind din josul ecranului." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contact" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copiază" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Șterge" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Șters" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Livrat" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Nu întreba din nou" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Editaţi" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Activați chat MMS în grup" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Eșec" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Eșuat!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favorite" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Tip de fișier nesuportat" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "De la" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Am înțeles" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grup" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grup (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Previzualizare imagine" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informații" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Mai târziu" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informații mesaj" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mesaje" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Mesaje;SMS;MMS;Mesaje text;Text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mesagerie" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplicație pentru mesagerie" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplicație pentru mesagerie" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Lipsă date mesaj" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Eu" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Mesaj nou" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nu" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nu a fost selectat un card SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Fără rețea" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "În așteptare" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Deblocați cardul SIM pentru a efectua un apel saupentru a trimite un mesaj. " "Puteți debloca cardul SIM din indicatorul de rețea din partea de sus a " "ecranului sau vizitând Configurări sistem > " "Securitate & Confidențialitate." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Citit" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Primit" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Șterge" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Încercați din nou" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Cardul SIM este blocat" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Salvează" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Căutare" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Căutare...." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Selectați un SIM implicit pentru trimitere de mesaje. Puteți modifica " "întotdeauna alegerea în Configurări de " "sistem." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Trimite" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Trimis" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Configurări" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Partajare" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Stare" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Glisați pentru a șterge" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Glisați pentru a descoperi acțiuni" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Schimbați la cardul SIM implicit:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Eșec temporar" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Textul mesajului a fost copiat in clipboard" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "În prezent nu există rețea pe %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Nu există rețea." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Către" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Către:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Astăzi" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tip" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Necunoscut" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contact necunoscut" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Previzualizare video" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Atașament video nesuportat" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Bine ați venit în aplicația dumneavoastră de mesagerie Ubuntu" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Scrieți un mesaj..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Da" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ieri" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Trebuie să selectați un card SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Ați schimbat la %1 @ %2" #~ msgid "Create new" #~ msgstr "Creează nou" #~ msgid "+ Create New" #~ msgstr "+Creare contact nou" messaging-app-0.1+16.04.20160323/po/te.po0000644000015600001650000002305612674565025020056 0ustar pbuserpbgroup00000000000000# Telugu translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-07-19 10:20+0000\n" "Last-Translator: Praveen Illa \n" "Language-Team: Telugu \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "" msgstr[1] "" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "" msgstr[1] "" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "జతచేయి" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "రద్దుచేయి" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "పరిచయం" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "నకలుతీయు" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "విఫలమైంది" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "బొమ్మ మునుజూపు" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "కొత్త సందేశం" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "భద్రపరుచు" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "పంచుకోండి" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "నేడు" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "వీడియో మునుజూపు" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "ఒక సందేశాన్ని వ్రాయండి…" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "నిన్న" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/he.po0000644000015600001650000002320212674565025020033 0ustar pbuserpbgroup00000000000000# Hebrew translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-10-01 20:54+0000\n" "Last-Translator: Yaron \n" "Language-Team: Hebrew \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "שיחה של שעה %1" msgstr[1] "שיחה של %1 שעות" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "שיחה של דקה %1" msgstr[1] "שיחה של %1 דקות" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "שיחה של שנייה %1" msgstr[1] "שיחה של %1 שניות" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "הוספה" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "הוספת נמען" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "הכול" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "להתקשר" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "ביטול" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "סגירה" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "איש קשר" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "העתקה" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "נכשלה" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "תצוגה מקדימה של תמונה" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "הודעה חדשה" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "שמירה" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "שיתוף" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "היום" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "תצוגה מקדימה של סרטון" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "כתיבת הודעה…" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "אתמול" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" #~ msgid "+ Create New" #~ msgstr "+ Create New" messaging-app-0.1+16.04.20160323/po/am.po0000644000015600001650000003044312674565025020041 0ustar pbuserpbgroup00000000000000# Amharic translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-16 13:41+0000\n" "Last-Translator: samson \n" "Language-Team: Amharic \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 hour call" msgstr[1] "%1 hours call" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 ደቂቃ ጥሪ" msgstr[1] "%1 ደቂቃዎች ጥሪ" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 ሰከንድ ጥሪ" msgstr[1] "%1 ሰከንዶች ጥሪ" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "ተቀብያለሁ" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "መጨመሪያ" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "ተቀባይ መጨመሪያ" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "ሁሉንም" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "ማያያዣ: %1 ግንኙነት" msgstr[1] "ማያያዣዎች: %1 ግንኙነቶች" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "ማያያዣ: %1 ፋይል" msgstr[1] "ማያያዣዎች: %1 ፋይሎች" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "ማያያዣ: %1 ምስል" msgstr[1] "ማያያዣዎች: %1 ምስሎች" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "ማያያዣ: %1 ቪዲዮ" msgstr[1] "ማያያዣዎች: %1 ቪዲዮዎች" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "ድምፅ ማያያዝ አይቻልም" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "ጥሪ" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "መሰረዣ" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "ሁሉንም የተዛመዱ መልእክቶች መቀየሪያ ወደ %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "መዝጊያ" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "አዲስ መልእክት ማዘጋጃ በ መመልከቻው ከ ታች በኩል በ መጥረግ" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "ግንኙነት" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "ኮፒ" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "ማጥፊያ" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "የጠፋ" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "ተልኳል" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "በድጋሚ አትጠይቀኝ" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "ማረሚያ" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "በርካታ መገናኛ የ ቡድን ውይይት ማስቻያ" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "ወድቋል" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "ወድቋል!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "የምወዳቸው" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "ይህ አይነት ፋይል የተደገፈ አይደለም" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "ከ" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "አገኘሁት" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "ቡድን" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "ቡድን (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "የ ምስል ቅድመ እይታ" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "መረጃ" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "በኋላ" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "ኤም ኤም ኤስ" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "የ መልእክት መረጃ" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "መልእክቶች" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "መልእክቶች: ኤስ ኤም ኤስ: ኤም ኤም ኤስ: የ ጽሁፍ መልእክቶች: ጽሁፍ" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "መልእክቶች" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "የ መልእክቶች መተግበሪያ" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "የ መልእክቶች መተግበሪያ" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "የ መልእክት ዳታ አልተገኘም" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "እኔ ራሴ" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "አዲስ መልእክት" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "አይ" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "ምንም የ ሲም ካርድ አልተመረጠም" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "ኔትዎርክ አልተገኘም" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "እሺ" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "ያልተወሰነ" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "እባክዎን የ ሲም ካርዱን ይክፈቱ: ጥሪ ለማድረግ ወይንም መልእክቶች ለመላክ: ሲም ካርድ መክፈት ይችላሉ ከ ኔትዎርክ " "መጠቆሚያ በ መመልከቻው ከ ላይ በኩል ወይንም በመጎብ ኘት System " "Settings > Security & Privacy." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "ያንብቡ" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "ተቀብለዋል" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "ማስወገጃ" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "እንደገና ይሞክሩ" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "ሲም ካርድ አሁን ተቆልፏል" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "ኤስ ኤም ኤስ" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "ማስቀመጫ" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "መፈለጊያ" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "መፈለጊያ..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "ወደ ውጪ ለሚላኩ ጥሪዎች ነባር ሲም ይምረጡ: ምርጫዎትን በፈለጉ ጊዜ መቀየር ይችላሉ ከ ስርአት ማሰናጃዎች." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "መላኪያ" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "ተልኳል" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "ማሰናጃዎች" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "ማካፈያ" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "ሁኔታው" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "ለማጥፋት ይጥረጉ" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "ተግባሮቹን ለማየት ይጥረጉ" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "መቀየሪያ ወደ ነባር ሲም:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "ለጊዜው ወድቋል" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "የ ጽሁፍ መልእክት ወደ ቁራጭ ሰሌዳ ኮፒ ተደርጓል" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "አሁን ምንም ኔትዎርክ አልተገኘም በ %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "አሁን ምንም ኔትዎርክ አልተገኘም" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "ለ" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "ለ:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "ዛሬ" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "አይነት" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "ያልታወቀ" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "ያልታወቀ ግንኙነት" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "የ ቪዲዮ ቅድመ እይታ" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "ቪዲዮ ማያያዝ አይቻልም" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "እንኳን ደህና መጡ ወደ እርስዎ የ ኡቡንቱ መልእክት መተግበሪያ" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "መልእክት መጻፊያ..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "አዎ" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "ትናንትና" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "የ ሲም ካርድ መምረጥ አለብዎት" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "ቀይረዋል ወደ %1 @ %2" #~ msgid "Create new" #~ msgstr "አዲስ መፍጠሪያ" #~ msgid "+ Create New" #~ msgstr "+ አዲስ መፍጠሪያ" messaging-app-0.1+16.04.20160323/po/es.po0000644000015600001650000002624312674565025020056 0ustar pbuserpbgroup00000000000000# Spanish translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-13 05:57+0000\n" "Last-Translator: Paco Molinero \n" "Language-Team: Spanish \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Llamada de %1 hora" msgstr[1] "Llamada de %1 horas" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Llamada de %1 minuto" msgstr[1] "Llamada de %1 minutos" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Llamada de %1 segundo" msgstr[1] "Llamada de %1 segundos" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Aceptado" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Añadir" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Añadir destinatario" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Todo" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Adjunto: %1 contacto" msgstr[1] "Adjuntos: %1 contactos" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Adjunto: %1 archivo" msgstr[1] "Adjuntos: %1 archivos" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Adjunto: %1 imagen" msgstr[1] "Adjuntos: %1 imágenes" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Adjunto: %1 vídeo" msgstr[1] "Adjuntos: %1 vídeos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "No se admiten audios adjuntos" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Llamar" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Cancelar" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "¿Cambiar todas las asociaciones de mensajes a %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Cerrar" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Redacte un mensaje nuevo deslizando hacia arriba desde la parte inferior de " "la pantalla." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contacto" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copiar" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Eliminar" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Eliminado" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Entregado" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "No volver a preguntar" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Editar" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Activar chats de grupo en MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Falló" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "¡Falló!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoritos" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Tipo de archivo no admitido" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Remitente" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "De acuerdo" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupo" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupo (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Imagen previa" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Información" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Luego" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Información del mensaje" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mensajes" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Mensajes;SMS;MMS;Mensajes de texto;Texto" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mensajería" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplicación Mensajería" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplicación Mensajería" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Datos del mensaje no disponibles" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Yo" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Mensaje nuevo" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "No" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "No se seleccionó ninguna SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Sin servicio" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Aceptar" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pendientes" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Desbloquee la tarjeta SIM para llamar o enviar un mensaje. Puede hacerlo " "desde el indicador de red en la parte superior de la pantalla o visitando Configuración del sistema > Seguridad y " "privacidad." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Leídos" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Recibidos" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Quitar" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Reintentar" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "La tarjeta SIM está bloqueada" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Guardar" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Buscar" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Buscar…" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Elija la tarjeta SIM predeterminada para todos los mensajes que envíe. Podrá " "cambiar la opción en Configuración del " "sistema." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Enviar" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Enviado" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Configuración" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Compartir" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Estado" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Deslice para eliminar" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Deslice para mostrar acciones" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Cambiar a la SIM predeterminada:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Falló temporalmente" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Mensaje copiado en el portapapeles" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Actualmente sin servicio en %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "No hay servicio actualmente." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Para" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "A:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Hoy" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipo" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Desconocido" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contacto desconocido" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Previsualizar vídeo" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "No se admiten vídeos adjuntos" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Esta es la aplicación de mensajería de Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Escriba el mensaje…" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Sí" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ayer" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Debe seleccionar una tarjeta SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Ha cambiado a %1 el %2" #~ msgid "Create new" #~ msgstr "Crear nuevo" #~ msgid "+ Create New" #~ msgstr "+ Crear nuevo" messaging-app-0.1+16.04.20160323/po/ug.po0000644000015600001650000003043612674565025020061 0ustar pbuserpbgroup00000000000000# Uyghur translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # Gheyret Kenji , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-10-26 05:21+0000\n" "Last-Translator: Eltikin \n" "Language-Team: Uyghur Computer Science Association \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 سائەتلىك سۆزلىشىش" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 مىنۇتلۇق سۆزلىشىش" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 سېكۇنتلۇق سۆزلىشىش" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "قوشۇلغان" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "قوش" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "تاپشۇرۇۋالغۇچى قوش" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "ھەممىسى" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "قوشۇلما: %1 ئالاقەداش" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "قوشۇلما: %1 ھۆججەت" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "قوشۇلما: %1 سۈرەت" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "قوشۇلما: %1 سىن" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "ئاۋاز چاستۇتسىنى قىستۇرۇشنى قوللىمايدۇ" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "چاقىر" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "ئەمەلدىن قالدۇر" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "بارلىق %1 مۇناسىۋەتلىك ئۇچۇرلارنى ئۆزگەرتسۇنمۇ؟" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "ياپ" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "يېڭى خەت يېزىش ئۈچۈن ئېكراننىڭ ئاستىدىن ئۈستىگە قارىتىپ تەز سىيرىسىڭىز " "بولىدۇ." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "ئالاقەداش" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "كۆچۈر" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "ئۆچۈر" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "ئۆچۈرۈلدى" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "ئەۋەتىلدى" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "قايتا سورىما" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "تەھرىرلەش" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "كۆپ ۋاستلىك توپتا پاراڭلىشنىنى قوزغىتىش" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "مەغلۇپ بولدى" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "مەغلۇپ بولدى!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "يىغقۇچ" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "ھۆججەت تىپىنى قوللىمايدۇ" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "يوللىغۇچى" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "بىلدىم" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "گۇرۇپپا" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "گۇرۇپپا (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "سۈرەتنى ئالدىن كۆزەت" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "ئۇچۇر" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "كېيىن" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "ئۇچۇر تەپسىلاتى" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "ئۇچۇرلار" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "ئۇچۇر;SMS;MMS;تېكىست;تېكىست ئۇچۇرى" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "ئۇچۇر يوللاۋاتىدۇ" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "ئۇچۇر ئېپى" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "ئۇچۇر پروگراممىسى" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "ئۇچۇرنىڭ مەزمۇنى يوقالغان" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "ئۆزۈم" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "يېڭى ئۇچۇر" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "ياق" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "ھېچ بىر SIM كارتىسى تاللانمىغان" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "تور يوق" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "تامام" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "كۈتۈۋاتىدۇ" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "تېلېفون قىلىش ۋە ئۇچۇر ئەۋەتىش ئۈچۈن سىم كارتىڭىزنى قۇلۇپسىزلاڭ. سىم كارتىنى " "قۇلۇپلاش ئۈچۈن، ئېكراننىڭ ئەڭ ئۇستىدىكى «تور كۆرسەتكۈچى» ياكى سىستېما تەڭشىكى > بىخەتەرلىك & شەخسىيەت " "گە بېرىڭ." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "ئوقۇ" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "تاپشۇرۇۋالغىنى" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "چىقىرىۋەت" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "قايتا سىنا" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM قۇلۇپلانغان" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "ساقلا" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "ئىزدە" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "ئىزدە…" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "بارلىق ئۇچۇرلارنى ئەۋەتىشتە ئىشلىتىلىدىغان كۆڭۈلدىكى SIM نى تاللايدۇ. بۇنى " "سىستېما تەڭشىكى دە ھەرقاچان ئۆزگەرتكىلى " "بولىدۇ." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "يوللا" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "ئەۋەتكەنلىرى" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "تەڭشەكلەر" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "ھەمبەھىر" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "ھالىتى" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "پاكىز ئۈچۈرۋىتىش" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "سېرلىش مەشغۇلاتنى كۆرستىش" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "كۆڭۈلدىكى SIM غا ئالماشسۇن:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "ھازىرچە مەغلۇپ بولدى" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "ئۇچۇر چاپلاش تاختىسىغا كۈچۈرۈلدى" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "ھازىر %1 دا تور يوق" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "ھازىر تور يوق." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "تاپشۇرۇپ ئالغۇچى" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "خەت تاپشۇرۇۋالغۇچى:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "بۈگۈن" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "تىپى" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "نامەلۇم" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "نامەلۇم ئالاقەداش" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "سىننى ئالدىن كۆزىتىش" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "كۈرۈنمە چاستۇتا قىستۇرۇشنى قوللىمايدۇ" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "خۇش كەپسىز بۇ ئۇبۇنتۇنىڭ ئۇچۇرلىشىش دېتالى" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "ئۇچۇر يېزىش" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "ھەئە" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "تۈنۈگۈن" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "سىز SIM كارتىسىدىن بىرنى تاللىشىڭىز زۆرۈر" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "سىز %1 غا سائەت %2 دە ئالماشتىڭىز" #~ msgid "+ Create New" #~ msgstr "+ يېڭىدىن قۇر" #~ msgid "Create new" #~ msgstr "يېڭىدىن قۇر" messaging-app-0.1+16.04.20160323/po/CMakeLists.txt0000644000015600001650000000374012674565025021644 0ustar pbuserpbgroup00000000000000project(messaging-app-translations) # for dh_translations to extract the domain # (regarding syntax consistency, see http://pad.lv/1181187) set (GETTEXT_PACKAGE "messaging-app") include(FindGettext) set(DOMAIN messaging-app) set(POT_FILE ${DOMAIN}.pot) set(DESKTOP_FILE ${DOMAIN}.desktop) file(GLOB PO_FILES *.po) file(GLOB_RECURSE I18N_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src/*.qml ${CMAKE_SOURCE_DIR}/src/*.js ${CMAKE_SOURCE_DIR}/src/*.cpp ) list(SORT I18N_SRCS) file(RELATIVE_PATH DESKTOP_FILE_IN_IN ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src/${DESKTOP_FILE}.in.in) foreach(PO_FILE ${PO_FILES}) get_filename_component(LANG ${PO_FILE} NAME_WE) gettext_process_po_files(${LANG} ALL PO_FILES ${PO_FILE}) set(INSTALL_DIR ${CMAKE_INSTALL_LOCALEDIR}/${LANG}/LC_MESSAGES) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.gmo DESTINATION ${INSTALL_DIR} RENAME ${DOMAIN}.mo) endforeach(PO_FILE) find_program(XGETTEXT_EXECUTABLE xgettext) if(XGETTEXT_EXECUTABLE) add_custom_target(${POT_FILE} COMMENT "Generating translation template" COMMAND ${INTLTOOL_EXTRACT} --update --type=gettext/ini --srcdir=${CMAKE_CURRENT_SOURCE_DIR} ${DESKTOP_FILE_IN_IN} COMMAND ${XGETTEXT_EXECUTABLE} --c++ --qt --add-comments=TRANSLATORS --keyword=tr --keyword=tr:1,2 --keyword=N_ -s -p ${CMAKE_CURRENT_SOURCE_DIR} -o ${POT_FILE} -D ${CMAKE_CURRENT_SOURCE_DIR} ${I18N_SRCS} -D ${CMAKE_CURRENT_BINARY_DIR} ${DESKTOP_FILE_IN_IN}.h ) add_custom_target(translations COMMENT "Updating translation files" ) add_dependencies(translations ${POT_FILE}) foreach(PO_FILE ${PO_FILES}) add_custom_command(TARGET translations COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} ${PO_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${POT_FILE} -o ${PO_FILE} ) endforeach(PO_FILE) endif() messaging-app-0.1+16.04.20160323/po/fr.po0000644000015600001650000002665612674565025020066 0ustar pbuserpbgroup00000000000000# French translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-06-02 18:42+0000\n" "Last-Translator: Sebastien Bacher \n" "Language-Team: French \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 heure d'appel" msgstr[1] "%1 heures d'appel" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minute d'appel" msgstr[1] "%1 minutes d'appel" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 seconde d'appel" msgstr[1] "%1 secondes d'appel" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Accepté" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Ajouter" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Ajouter un destinataire" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Tous" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Pièce jointe : %1 contact" msgstr[1] "Pièces jointes : %1 contacts" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Pièce jointe : %1 fichier" msgstr[1] "Pièces jointes : %1 fichiers" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Pièce jointe : %1 image" msgstr[1] "Pièces jointes : %1 images" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Pièce jointe : %1 vidéo" msgstr[1] "Pièces jointes : %1 vidéos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Pièce jointe audio non prise en charge" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Appeler" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Annuler" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Changer toutes les associations de messages vers %1 ?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Fermer" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Composer un nouveau message par un glissement vers le haut depuis le bord " "inférieur de l'écran." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contacter" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copier" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Supprimer" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Supprimé" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Envoyé" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Ne plus demander" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Modifier" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Activer les MMS pour la messagerie en groupe" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Échec" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Échec !" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Préférés" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Type de fichier non pris en charge" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "De" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Compris" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Groupe" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Groupe (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Aperçu de l'image" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Informations" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Plus tard" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Informations du message" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Messages" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messages;SMS;MMS;Messages texte;Texto" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Messages" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Application de messagerie" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Application de messagerie" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Données de message manquantes" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Moi-même" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Nouveau message" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Non" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Aucune carte SIM selectionnée" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Aucun réseau" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Valider" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "En attente" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Veuillez déverrouiller votre carte SIM pour téléphoner ou envoyer un " "message. Vous pouvez déverrouiller votre carte SIM à partir de l'indicateur " "de réseau en haut de l'écran ou en allant dans Paramètres système > Sécurité et vie privée" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Lire" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Reçu" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Retirer" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Réessayer" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "Carte SIM bloquée" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Enregistrer" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Rechercher" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Recherche…" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Sélectionnez une carte SIM par défaut pour tous les messages sortants. Vous " "pourrez toujours modifier votre choix ultérieurement dans les Paramètres système." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Envoyer" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Envoyé" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Paramètres" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Partager" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "État" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Faites glisser pour supprimer" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Faites glisser pour dévoiler des actions" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Basculer sur la carte SIM par défaut :" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Échec provisoire" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Texte copié dans le presse-papier" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Il n'y a actuellement aucun réseau sur %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Il n'y a actuellement aucun réseau." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "À" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "À :" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Aujourd'hui" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Type" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Inconnu" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contact inconnu" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Aperçu de la vidéo" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Pièce jointe vidéo non prise en charge" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Bienvenue dans votre application de messagerie sur Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Rédiger un message..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Oui" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Hier" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Vous devez selectionner une carte SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Vous avez basculé sur %1 à %2" #~ msgid "Create new" #~ msgstr "Créer un nouveau" #~ msgid "+ Create New" #~ msgstr "+ Créer un nouveau" messaging-app-0.1+16.04.20160323/po/ja.po0000644000015600001650000002610012674565025020031 0ustar pbuserpbgroup00000000000000# Japanese translation for messaging-app # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2014-10-10 13:49+0000\n" "Last-Translator: Mitsuya Shibata \n" "Language-Team: Japanese \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1と他%2人" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1時間の通話" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1分の通話" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1秒の通話" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "受理済み" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "追加" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "メンバーを追加" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "すべて" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "添付:%1件の連絡先" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "添付:%1個のファイル" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "添付:%1個の画像" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "添付:%1個の動画" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "発信" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "キャンセル" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "すべてのメッセージを%1経由に変更しますか?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "閉じる" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "新規メッセージを作成するには画面の下から上へスワイプ" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "連絡先" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "コピー" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "削除" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "削除済み" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "配送済み" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "再び表示しない" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "編集" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "失敗しました" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "失敗!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "お気に入り" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "送信者" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "グループ" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "グループ (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "画像のプレビュー" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "詳細" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "後で" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "メッセージの詳細" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "メッセージ" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Messages;SMS;MMS;Text Messages;Text;メッセージ;テキスト;チャット" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "メッセージング" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "メッセージアプリ" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "メッセージアプリ" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "メッセージデータがありません" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "自分" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "新しいメッセージ" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "いいえ" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "SIMカードが選択されていません" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "ネットワークなし" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "OK" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "保留中" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "電話したりメッセージを送信するにはSIMカードのロックを解除してください。画面上部にあるネットワークインジケーター、または システム設定 > システム設定とプライバシー からSIMカードのロックを解除できます。" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "読む" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "受信済み" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "削除" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "再試行" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIMカードはロックされています" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "保存" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "検索" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "検索..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "すべてのメッセージ送信で利用する標準のSIMを選択してください。システム設定でいつでも変更できます。" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "送信" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "送信しました" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "設定" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "共有" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "状態" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "デフォルトのSIMに切り替える:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "一時的な失敗" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "%1には現在ネットワークがありません" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "現在ネットワークがありません" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "宛先" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "宛先:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "今日" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "種類" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "不明" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "不明な連絡先" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "動画のプレビュー" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "メッセージを書く..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "はい" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "昨日" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "SIMカードを選択する必要があります" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "%1 を %2 に切り替えました" #~ msgid "+ Create New" #~ msgstr "+ 新規作成" #~ msgid "Create new" #~ msgstr "新規作成" messaging-app-0.1+16.04.20160323/po/zh_HK.po0000644000015600001650000002240312674565025020444 0ustar pbuserpbgroup00000000000000# Chinese (Hong Kong) translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2013-10-20 04:29+0000\n" "Last-Translator: Walter Cheuk \n" "Language-Team: Chinese (Hong Kong) \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "通話 %1 小時" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "通話 %1 分鐘" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "通話 %1 秒" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "" msgstr[1] "" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "" msgstr[1] "" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "通話" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "聯絡人" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "新訊息" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "今天" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "寫訊息..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "昨天" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/de.po0000644000015600001650000002635212674565025020040 0ustar pbuserpbgroup00000000000000# German translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-07-20 21:02+0000\n" "Last-Translator: Phillip Sz \n" "Language-Team: German \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Anfrufdauer %1 Stunde" msgstr[1] "Anfrufdauer %1 Stunden" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Anfrufdauer %1 Minute" msgstr[1] "Anfrufdauer %1 Minuten" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Anfrufdauer %1 Sekunde" msgstr[1] "Anfrufdauer %1 Sekunden" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Genehmigt" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Hinzufügen" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Empfänger hinzufügen" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Alle" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Anhang: %1 Kontakt" msgstr[1] "Anhänge: %1 Kontakte" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Anhang: %1 Datei" msgstr[1] "Anhänge: %1 Dateien" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Anhang: %1 Bild" msgstr[1] "Anhänge: %1 Bilder" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Anhang: %1 Video" msgstr[1] "Anhänge: %1 Videos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Tonanhang wird nicht unterstützt" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Anruf" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Abbrechen" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Alle Nachrichten zu %1 zuordnen?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Schließen" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Vom unteren Bildschirmrand nach oben wischen, um eine neue Nachricht zu " "erstellen." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Kontakt" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Kopieren" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Löschen" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Gelöscht" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Zugestellt" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Nicht erneut fragen" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Bearbeiten" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "MMS-Gruppenchats aktivieren" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Fehlgeschlagen" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Fehlgeschlagen!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoriten" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Dateityp wird nicht unterstützt" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Von" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Verstanden" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Gruppe" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Gruppe (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Bildvorschau" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Später" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Nachrichteninfo" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Nachrichten" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Nachrichten;SMS;MMS;Textnachrichten;Text" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Nachrichten" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Nachrichtenanwendung" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Nachrichtenanwendung" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Nachrichtendaten fehlen" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Ich" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Neue Nachricht" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Nein" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Keine SIM-Karte ausgewählt" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Kein Netz" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Ok" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "In Arbeit" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Bitte entsperren Sie Ihre SIM-Karte, um einen Anruf zu tätigen oder eine " "Nachricht zu senden. Sie können Ihre SIM-Karte von der Netzwerkanzeige am " "oberen Bildschirmrand oder durch Öffnen von Systemeinstellungen > Sicherheit & " "Datenschutz entsperren." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Lesen" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Empfangen" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Entfernen" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Erneut versuchen" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM-Karte ist gesperrt" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Speichern" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Suchen" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Suchen …" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Standard-SIM-Karte für alle ausgehenden Nachrichten festlegen. Diese kann " "jederzeit in den Systemeinstellungen " "geändert werden." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Senden" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Gesendet" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Einstellungen" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Freigeben" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Status" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Wischen zum Löschen" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Wischen um Aktionen zu zeigen" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Zur Standard-SIM wechseln:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Vorübergehend gescheitert" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Textnachricht in die Zwischenablage kopiert" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Es ist zurzeit kein Netz auf %1 verfügbar" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Es ist zurzeit kein Netz verfügbar." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "An" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "An:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Heute" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Typ" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Unbekannt" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Unbekannter Kontakt" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Videovorschau" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Videoanhang wird nicht unterstützt" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Willkommen bei Ihrer Ubuntu-Nachrichtenanwendung." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Eine Nachricht schreiben …" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Ja" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Gestern" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Sie müssen eine SIM-Karte auswählen" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Sie haben zu %1 gewechselt um %2" #~ msgid "Create new" #~ msgstr "Neu erstellen" #~ msgid "+ Create New" #~ msgstr "+ Neuer Kontakt" messaging-app-0.1+16.04.20160323/po/be.po0000644000015600001650000003231612674565025020033 0ustar pbuserpbgroup00000000000000# Belarusian translation for messaging-app # Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2015. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-10-05 20:16+0000\n" "Last-Translator: XiveZ \n" "Language-Team: Belarusian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 гадзіна размовы" msgstr[1] "%1 гадзіны размовы" msgstr[2] "%1 гадзінаў размовы" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 хвіліна размовы" msgstr[1] "%1 хвіліны размовы" msgstr[2] "%1 хвілінаўразмовы" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 секунда размовы" msgstr[1] "%1 секунды размовы" msgstr[2] "%1 секундаў размовы" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Прыняць" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Дадаць" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Дадаць атрымальніка" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Усе" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Дададзены: %1 кантакт" msgstr[1] "Дададзеныя: %1 кантакты" msgstr[2] "Дададзена: %1 кантактаў" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Дададзены: %1 файл" msgstr[1] "Дададзены: %1 файлы" msgstr[2] "Дададзена: %1 файлаў" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Дададзеная: %1 выява" msgstr[1] "Дададзеныя: %1 выявы" msgstr[2] "Дададзена: %1 выяваў" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Дададзенае: %1 відэа" msgstr[1] "Дададзеныя: %1 відэа" msgstr[2] "Дададзена: %1 відэа" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Падтрымкі дадання гукавых файлаў не прадугледжана" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Патэлефанаваць" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Скасаваць" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "Звязаць увесь абмен паведамленнямі з %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Закрыць" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "Стварыце новае паведамленне рухам пальца з ніжняй частцы экрана." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Кантакт" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Капіяваць" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Выдаліць" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Выдалена" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Дастаўлена" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Больш не пытацца" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Рэдагаваць" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Включить групповой MMS-чат" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Памылка" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Няўдача!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Улюбёнае" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Падтрымкі гэтага тыпу файлаў не прадугледжана" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "Ад" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Выканана" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Група" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Група (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Перадпрагляд выявы" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Звесткі" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Пазней" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Дадзеныя паведамленні" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Паведамленні" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Паведамленні;SMS;MMS;Тэкставыя паведамленні;Тэкст" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Абмен паведамленнямі" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Праграма для абмену паведамленнямі" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Праграма для абмену паведамленнямі" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Няма дадзеных паведамлення" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Я" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Новае паведамленне" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Не" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Не выбраная SIM-картка" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Няма сеткі" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Добра" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "У чаканні" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Калі ласка, разблакуйце вашую SIM-картку, каб мець магчымасць тэлефанаваць " "ці адпраўляць паведамленні. Разблакаваць картку можна з дапамогай індыкатара " "сеткі ў верхняй частцы экрана або з дапамогай старонкі Сістэмныя параметры > Бяспека & " "Прыватнасць." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Прачытанае" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Атрымана" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Выдаліць" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Паўтарыць" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM-картка заблакаваная" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Захаваць" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Шукаць" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Шукаць..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Выберыце тыповую SIM-карту для ўсіх выходных паведамленняў. Ваш выбар можна " "ў любы момант змяніць з дапамогай Сістэмных " "параметраў ." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Даслаць" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Дасланыя" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Налады" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Падзяліцца" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Стан" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Правядзіце для выдалення" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Правядзіце, каб убачыць пункты дзеянняў" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Пераключыцца на тыповую SIM-картку:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Часовая памылка" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Тэкставае паведамленне скапіяванае ў буфер" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Зараз на %1 няма доступу да сеткі" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Зараз няма доступу да сеткі." #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Атрымальнік" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Каму:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Сёння" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Тып" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Невядомы" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Невядомы кантакт" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Прагляд відэа" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Падтрымкі далучэння відэафайлаў не прадугледжана" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Сардэчна запрашаем у дадатак для абмену паведамленнямі Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Стварэнне паведамлення..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Так" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Учора" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Вам варта абраць SIM-картку" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Вы перамкнуліся з %1 на %2" messaging-app-0.1+16.04.20160323/po/zh_CN.po0000644000015600001650000002501312674565025020442 0ustar pbuserpbgroup00000000000000# Chinese (Simplified) translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-08-11 03:31+0000\n" "Last-Translator: Ian Li \n" "Language-Team: Chinese (Simplified) \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: 2016-03-01 05:51+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 小时通话" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 分钟通话" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 秒通话" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "已接受" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "添加" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "添加收件人" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "全部" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "附件: %1 个联系人" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "附件: %1 个文件" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "附件: %1 张图片" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "附件: %1 段视频" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "不支持音频附件" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "拨号" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "取消" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "将所有短信与 %1 关联?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "关闭" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "从屏幕底部向上滑动来撰写一条新信息" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "联系人" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "复制" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "删除" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "已删除" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "已发送" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "不再询问" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "编辑" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "启用彩信群组聊天" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "失败" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "失败!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "常用" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "文件格式不支持" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "来自" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "知道了" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "群组" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "群组 (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "图片预览" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "详情" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "稍后" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "短信详情" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "短信" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "短信;彩信;文字短信;信息;" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "信息" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "短信应用" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "短信应用程序" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "丢失短信数据" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "我自己" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "新信息" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "否" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "未选择SIM卡" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "无网络" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "确定" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "待处理" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "请解锁您的 SIM 卡以收发信息。您可以在顶部的网络指示器,或通过系统设置 > " "安全和隐私 页面来解锁您的 SIM 卡。" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "已读" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "已接收" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "移除" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "重试" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM 卡被锁定" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "短信" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "保存" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "搜索" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "搜索..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "选择一个用于外发短信的默认SIM卡。您可以在系统设置中随时改变你的选择。" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "发送" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "已发送" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "设置" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "分享" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "状态" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "滑动删除" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "滑动显示操作" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "切换到默认 SIM 卡:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "暂时失败" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "短信已复制到剪切板" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "%1 目前无网络" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "目前无网络" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "收件人" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "收件人:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "今天" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "类型" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "未知" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "未知联系人" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "视频预览" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "视频附件不支持" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "欢迎来到您的 Ubuntu 短信应用。" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "编写新信息..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "是" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "昨天" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "您需要选择SIM卡" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "你在 %2 切换至 %1" #~ msgid "+ Create New" #~ msgstr "+ 新增" messaging-app-0.1+16.04.20160323/po/aa.po0000644000015600001650000002367012674565025020031 0ustar pbuserpbgroup00000000000000# Afar translation for messaging-app # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2016-02-16 13:20+0000\n" "Last-Translator: Charif AYFARAH \n" "Language-Team: Afar \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "%1 saaqatih seeco" msgstr[1] "%1 saaqatih seeco" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "%1 minitih seeco" msgstr[1] "%1 minitih seeco" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "%1 nammayyeh seeco" msgstr[1] "%1 nammayyeh seeco" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Oggoleh" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Osis" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Hirge edde osis" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Inkih" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Xakabuh: %1 axxoowu" msgstr[1] "Xakabitteh: %1 axxoowu" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Xakabuh: %1 kiba" msgstr[1] "Xakabitteh: %1 kiba" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Xakabuh: %1 muuci" msgstr[1] "Xakabitteh: %1 muuci" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Xakabuh: %1 viidiyo" msgstr[1] "Xakabitteh: %1 viidiyo" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Obbâ xakabu ma quuka" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Seeco" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Bayis" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Alif" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Axxoowu" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Korraaqis" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Dug" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Duugumteh" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Kaadu m'esserin" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Faku" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Makkinna" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Makkinna!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Assakoot" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "A qaynatih kiba ma quuka" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "-ik" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Geeh" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Horta" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Horta (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Muucik afammabla" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Xaagu" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Sarra" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Xaagi farmo" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Farmooma" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Farmooma;SMS;MMS;Kawsenti Farmooma; Kawsenta" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Farrim" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Farrim Abna" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Farrim abnisso" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Innih" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Qusba Farmo" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Maleey" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Dooren SIM karti mayan" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Retta matan" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Hayya" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Kawis" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Hirged" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Kal" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Qagis" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "SIM Karti Koflimed" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Taagis" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Goranto" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Gorris..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Rub" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Rub" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Massosu" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Kurut" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Caddabna" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Dugtuh uysuttuc" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Fan" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "Akah:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Asaaku" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Qaynata" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Iginnoh" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "" #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Yeey" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Kimaala" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "" messaging-app-0.1+16.04.20160323/po/ast.po0000644000015600001650000002617312674565025020240 0ustar pbuserpbgroup00000000000000# Asturian translation for messaging-app # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the messaging-app package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: messaging-app\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-07-15 10:55-0300\n" "PO-Revision-Date: 2015-11-02 17:52+0000\n" "Last-Translator: enolp \n" "Language-Team: Asturian \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: 2016-03-01 05:50+0000\n" "X-Generator: Launchpad (build 17925)\n" #. TRANSLATORS: %1 is the first recipient the message is sent to, %2 is the count of remaining recipients #: ../src/qml/ThreadDelegate.qml:52 #, qt-format msgid "%1 + %2" msgstr "%1 + %2" #: ../src/qml/dateUtils.js:65 #, qt-format msgid "%1 hour call" msgid_plural "%1 hours call" msgstr[0] "Llamada de %1 hora" msgstr[1] "Llamada de %1 hores" #: ../src/qml/dateUtils.js:67 #, qt-format msgid "%1 minute call" msgid_plural "%1 minutes call" msgstr[0] "Llamada de %1 minutu" msgstr[1] "Llamada de %1 minutos" #: ../src/qml/dateUtils.js:69 #, qt-format msgid "%1 second call" msgid_plural "%1 seconds call" msgstr[0] "Llamada de %1 segundu" msgstr[1] "Llamada de %1 segundos" #: ../src/qml/MessagingBottomEdge.qml:17 msgid "+" msgstr "+" #: ../src/qml/MessageInfoDialog.qml:60 msgid "Accepted" msgstr "Aceutáu" #: ../src/qml/Messages.qml:618 msgid "Add" msgstr "Amestar" #: ../src/qml/NewRecipientPage.qml:55 msgid "Add recipient" msgstr "Amestar destinatariu" #: ../src/qml/NewRecipientPage.qml:77 msgid "All" msgstr "Too" #: ../src/qml/ThreadDelegate.qml:87 #, qt-format msgid "Attachment: %1 contact" msgid_plural "Attachments: %1 contacts" msgstr[0] "Axuntu: %1 contautu" msgstr[1] "Axuntos: %1 contautos" #: ../src/qml/ThreadDelegate.qml:93 #, qt-format msgid "Attachment: %1 file" msgid_plural "Attachments: %1 files" msgstr[0] "Axuntu: %1 ficheru" msgstr[1] "Axuntos: %1 ficheros" #: ../src/qml/ThreadDelegate.qml:81 #, qt-format msgid "Attachment: %1 image" msgid_plural "Attachments: %1 images" msgstr[0] "Axuntu: %1 imaxe" msgstr[1] "Axuntos: %1 imáxenes" #: ../src/qml/ThreadDelegate.qml:84 #, qt-format msgid "Attachment: %1 video" msgid_plural "Attachments: %1 videos" msgstr[0] "Axuntu: %1 videu" msgstr[1] "Axuntos: %1 vídeos" #: ../src/qml/MMS/MMSDefault.qml:28 msgid "Audio attachment not supported" msgstr "Nun tán sofitaos los axuntos d'audiu" #: ../src/qml/Messages.qml:607 ../src/qml/Messages.qml:690 msgid "Call" msgstr "Llamar" #: ../src/qml/MainPage.qml:129 ../src/qml/Messages.qml:442 #: ../src/qml/Messages.qml:456 ../src/qml/MessagingContactEditorPage.qml:34 #: ../src/qml/NewRecipientPage.qml:131 msgid "Cancel" msgstr "Encaboxar" #. TRANSLATORS: %1 refers to the SIM card name or account name #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:29 #, qt-format msgid "Change all Messaging associations to %1?" msgstr "¿Camudar toles asociaciones de mensaxes a %1?" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:47 #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:30 #: ../src/qml/MessageInfoDialog.qml:133 ../src/qml/Messages.qml:939 msgid "Close" msgstr "Zarrar" #: ../src/qml/EmptyState.qml:32 msgid "Compose a new message by swiping up from the bottom of the screen." msgstr "" "Redauta un mensaxe nuevu eslizando hacia arriba dende la parte inferior de " "la pantalla." #: ../src/qml/AttachmentPanel.qml:155 ../src/qml/Messages.qml:701 msgid "Contact" msgstr "Contautu" #: ../src/qml/MessagesListView.qml:93 ../src/qml/SwipeItemDemo.qml:186 msgid "Copy" msgstr "Copiar" #: ../src/qml/MessageDelegateFactory.qml:44 ../src/qml/ThreadDelegate.qml:103 msgid "Delete" msgstr "Desaniciar" #: ../src/qml/MessageInfoDialog.qml:64 msgid "Deleted" msgstr "Desaniciáu" #: ../src/qml/MessageInfoDialog.qml:54 msgid "Delivered" msgstr "Entregáu" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:64 msgid "Don't ask again" msgstr "Nun entrugar más" #: ../src/qml/MessagingContactViewPage.qml:72 msgid "Edit" msgstr "Editar" #: ../src/qml/SettingsPage.qml:29 msgid "Enable MMS group chat" msgstr "Habilitar charra de grupu MMS" #: ../src/qml/MessageInfoDialog.qml:58 msgid "Failed" msgstr "Falló" #: ../src/qml/MessageDelegateFactory.qml:146 msgid "Failed!" msgstr "Falló!" #: ../src/qml/NewRecipientPage.qml:77 msgid "Favorites" msgstr "Favoritos" #: ../src/qml/MMS/MMSDefault.qml:33 msgid "File type not supported" msgstr "Nun ta sofitada la triba de ficheru" #: ../src/qml/MessageInfoDialog.qml:97 msgid "From" msgstr "De" #: ../src/qml/SwipeItemDemo.qml:78 msgid "Got it" msgstr "Enteráu" #: ../src/qml/MessageInfoDialog.qml:84 msgid "Group" msgstr "Grupu" #. TRANSLATORS: %1 refers to the number of participants in a group chat #: ../src/qml/Messages.qml:592 #, qt-format msgid "Group (%1)" msgstr "Grupu (%1)" #: ../src/qml/MMS/PreviewerImage.qml:37 msgid "Image Preview" msgstr "Vista previa d'imaxe" #: ../src/qml/MessagesListView.qml:68 ../src/qml/SwipeItemDemo.qml:178 msgid "Info" msgstr "Info" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:80 msgid "Later" msgstr "Dempués" #: ../src/qml/MessagesListView.qml:71 msgid "MMS" msgstr "MMS" #: ../src/qml/MessageInfoDialog.qml:90 msgid "Message info" msgstr "Info del mensaxe" #: ../src/qml/MainPage.qml:68 msgid "Messages" msgstr "Mensaxes" #: ../src/messaging-app.desktop.in.in.h:4 msgid "Messages;SMS;MMS;Text Messages;Text" msgstr "Mensaxes;SMS;MMS;Mensaxes de testu;Testu" #: ../src/messaging-app.desktop.in.in.h:1 msgid "Messaging" msgstr "Mensaxería" #: ../src/messaging-app.desktop.in.in.h:2 msgid "Messaging App" msgstr "Aplicación Mensaxería" #: ../src/messagingapplication.cpp:201 ../src/messaging-app.desktop.in.in.h:3 msgid "Messaging application" msgstr "Aplicación de mensaxería" #: ../src/qml/MMSDelegate.qml:220 msgid "Missing message data" msgstr "Datos del mensaxe non disponibles" #: ../src/qml/MessageInfoDialog.qml:82 ../src/qml/MessageInfoDialog.qml:99 msgid "Myself" msgstr "Yo" #: ../src/qml/Messages.qml:475 msgid "New Message" msgstr "Mensaxe nuevu" #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:39 msgid "No" msgstr "Non" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:26 msgid "No SIM card selected" msgstr "Nun s'esbilló nenguna tarxeta SIM" #: ../src/qml/Messages.qml:935 msgid "No network" msgstr "Ensin rede" #: ../src/qml/Dialogs/FileSizeWarningDialog.qml:45 #: ../src/qml/Dialogs/NoMicrophonePermission.qml:49 #: ../src/qml/Dialogs/SimLockedDialog.qml:49 msgid "Ok" msgstr "Aceutar" #: ../src/qml/MessageInfoDialog.qml:66 msgid "Pending" msgstr "Pendiente" #: ../src/qml/Dialogs/SimLockedDialog.qml:37 msgid "" "Please unlock your SIM card to call or send a message. You can unlock your " "SIM card from the Network Indicator at the top of the screen or by visiting " "System Settings > Security & Privacy." msgstr "" "Desbloquia la tarxeta SIM pa llamar o unviar un mensaxe. Pues facelo dende " "l'indicador de rede na parte superior de la pantalla o visitando Axustes del sistema > Seguridá & " "Privacidá." #: ../src/qml/MessageInfoDialog.qml:62 ../src/qml/MessageInfoDialog.qml:124 msgid "Read" msgstr "Lleíos" #: ../src/qml/MessageInfoDialog.qml:70 ../src/qml/MessageInfoDialog.qml:119 msgid "Received" msgstr "Recibío" #: ../src/qml/ComposeBar.qml:131 msgid "Remove" msgstr "Desaniciar" #: ../src/qml/MessagesListView.qml:86 ../src/qml/SwipeItemDemo.qml:182 msgid "Retry" msgstr "Reintentar" #: ../src/qml/Dialogs/SimLockedDialog.qml:26 msgid "SIM Card is locked" msgstr "La tarxeta SIM ta bloquiada" #: ../src/qml/MessagesListView.qml:71 msgid "SMS" msgstr "SMS" #: ../src/qml/MMS/Previewer.qml:73 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:88 #: ../src/qml/MessagingContactEditorPage.qml:46 msgid "Save" msgstr "Guardar" #: ../src/qml/NewRecipientPage.qml:104 msgid "Search" msgstr "Guetar" #: ../src/qml/MainPage.qml:52 ../src/qml/NewRecipientPage.qml:93 msgid "Search..." msgstr "Guetar..." #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:58 msgid "" "Select a default SIM for all outgoing messages. You can always alter your " "choice in System Settings." msgstr "" "Escueyi la tarxeta SIM predeterminada pa tolos mensaxes qu'unvies. Vas poder " "camudar la opción n'Axustes del sistema." #: ../src/qml/Messages.qml:987 msgid "Send" msgstr "Unviar" #: ../src/qml/MessageInfoDialog.qml:114 msgid "Sent" msgstr "Unviaos" #: ../src/qml/MainPage.qml:96 ../src/qml/SettingsPage.qml:26 msgid "Settings" msgstr "Preferencies" #: ../src/qml/MMS/Previewer.qml:80 #: ../src/qml/MMS/PreviewerMultipleContacts.qml:96 #: ../src/qml/MessagingContactViewPage.qml:61 msgid "Share" msgstr "Compartir" #: ../src/qml/MessageInfoDialog.qml:129 msgid "Status" msgstr "Estáu" #: ../src/qml/SwipeItemDemo.qml:257 msgid "Swipe to delete" msgstr "Esliza pa borrar" #: ../src/qml/SwipeItemDemo.qml:207 msgid "Swipe to reveal actions" msgstr "Esliza p'amosar aiciones" #: ../src/qml/Dialogs/NoDefaultSIMCardDialog.qml:27 msgid "Switch to default SIM:" msgstr "Cambiar a SIM por defeutu:" #: ../src/qml/MessageInfoDialog.qml:56 msgid "Temporarily Failed" msgstr "Fallu temporal" #: ../src/qml/MMSDelegate.qml:84 ../src/qml/SMSDelegate.qml:42 msgid "Text message copied to clipboard" msgstr "Mensaxe de testu copiáu al cartafueyu" #: ../src/qml/Messages.qml:936 #, qt-format msgid "There is currently no network on %1" msgstr "Agora mesmo nun hai rede en %1" #: ../src/qml/Messages.qml:936 msgid "There is currently no network." msgstr "Agora mesmo nun hai rede" #: ../src/qml/MessageInfoDialog.qml:103 msgid "To" msgstr "Pa" #: ../src/qml/MultiRecipientInput.qml:148 msgid "To:" msgstr "A:" #: ../src/qml/dateUtils.js:44 msgid "Today" msgstr "Güei" #: ../src/qml/MessageInfoDialog.qml:93 msgid "Type" msgstr "Tipu" #: ../src/qml/MessageInfoDialog.qml:72 ../src/qml/MessageInfoDialog.qml:75 msgid "Unknown" msgstr "Desconocíu" #: ../src/qml/MMS/MMSContact.qml:48 ../src/qml/ThumbnailContact.qml:45 msgid "Unknown contact" msgstr "Contautu desconocíu" #: ../src/qml/MMS/PreviewerVideo.qml:32 msgid "Video Preview" msgstr "Vista previa del videu" #: ../src/qml/MMS/MMSDefault.qml:31 msgid "Video attachment not supported" msgstr "Nun tán sofitaos los axuntos de video" #: ../src/qml/SwipeItemDemo.qml:162 msgid "Welcome to your Ubuntu messaging app." msgstr "Bienllegáu a la to aplicación de mensaxería d'Ubuntu." #: ../src/qml/ComposeBar.qml:394 msgid "Write a message..." msgstr "Escribi un mensaxe..." #: ../src/qml/Dialogs/SetDefaultSIMCardDialog.qml:48 msgid "Yes" msgstr "Sí" #: ../src/qml/dateUtils.js:46 msgid "Yesterday" msgstr "Ayeri" #: ../src/qml/Dialogs/NoSIMCardSelectedDialog.qml:27 msgid "You need to select a SIM card" msgstr "Tienes d'escoyer una tarxeta SIM" #. TRANSLATORS: %1 is the SIM card name and %2 is the timestamp #: ../src/qml/AccountSectionDelegate.qml:77 #, qt-format msgid "You switched to %1 @ %2" msgstr "Cambiasti a %1 @ %2" #~ msgid "Create new" #~ msgstr "Crear nuevu" #~ msgid "+ Create New" #~ msgstr "+ Crear nuevu" messaging-app-0.1+16.04.20160323/config.h.in0000644000015600001650000000374112674565025020512 0ustar pbuserpbgroup00000000000000/* * Copyright (C) 2012-2013 Canonical, Ltd. * * Authors: * Olivier Tilloy * * This file is part of messaging-app. * * messaging-app 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. * * messaging-app 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 . */ // Qt #include #include #include #include #include #define I18N_DIRECTORY "@CMAKE_INSTALL_PREFIX@/share/locale" #define UNITY8_QML_PATH "@UNITY8_QML_PATH@" inline bool isRunningInstalled() { static bool installed = (QCoreApplication::applicationDirPath() == QDir(("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath()); return installed; } inline QString messagingAppDirectory() { if (isRunningInstalled()) { return QString("@CMAKE_INSTALL_PREFIX@/@MESSAGING_APP_DIR@/"); } else { return QString("@CMAKE_SOURCE_DIR@/src/qml/"); } } inline QString ubuntuPhonePluginPath() { if (isRunningInstalled()) { return QString::null; } else { return QString("@CMAKE_SOURCE_DIR@/"); } } inline bool isMessagingApplicationInstance() { return QCoreApplication::applicationName() == "MessagingApp"; } inline bool isMessagingApplicationRunning() { QDBusReply reply = QDBusConnection::sessionBus().interface()->isServiceRegistered("com.canonical.MessagingApp"); if (reply.isValid()) { return reply.value(); } return false; } messaging-app-0.1+16.04.20160323/COPYING.GPL-30000644000015600001650000010451312674565025020302 0ustar pbuserpbgroup00000000000000 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 . messaging-app-0.1+16.04.20160323/CMakeLists.txt0000644000015600001650000000443512674565025021230 0ustar pbuserpbgroup00000000000000project(messaging-app) cmake_minimum_required(VERSION 2.8) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) # Standard install paths include(GNUInstallDirs) find_program(INTLTOOL_MERGE intltool-merge) find_program(INTLTOOL_EXTRACT intltool-extract) # Check for include files include(CheckIncludeFileCXX) include(CheckIncludeFile) include(EnableCoverageReport) ##################################################################### # Enable code coverage calculation with gcov/gcovr/lcov # Usage: # * Switch build type to coverage (use ccmake or cmake-gui) # * Invoke make, make test, make coverage # * Find html report in subdir coveragereport # * Find xml report feasible for jenkins in coverage.xml ##################################################################### IF(CMAKE_BUILD_TYPE MATCHES [cC][oO][vV][eE][rR][aA][gG][eE]) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftest-coverage -fprofile-arcs" ) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftest-coverage -fprofile-arcs" ) SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -coverage" ) SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -coverage" ) ENABLE_COVERAGE_REPORT(TARGETS ${MESSAGING_APP}) ENDIF(CMAKE_BUILD_TYPE MATCHES [cC][oO][vV][eE][rR][aA][gG][eE]) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG") set(MESSAGING_APP_DIR ${CMAKE_INSTALL_DATADIR}/messaging-app) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) find_package(Qt5DBus) find_package(Qt5Qml) find_package(Qt5Quick) find_package(Qt5Test) find_package(Qt5Versit) include(qt5) find_package(PkgConfig REQUIRED) pkg_check_modules(NOTIFY REQUIRED libnotify) #find unity8 qml libraries set(UNITY8_QML_PATH /usr/lib/${CMAKE_C_LIBRARY_ARCHITECTURE}/unity8/qml/) find_path(LIB_UNITY_QML_EXISTS NAMES libUnity-qml.so HINTS "${UNITY8_QML_PATH}" NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH ) if(!LIB_UNITY_QML_EXISTS) MESSAGE(FATAL_ERROR "unity8 private package not-found") endif() add_definitions(-DQT_NO_KEYWORDS) configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) enable_testing() add_subdirectory(po) add_subdirectory(src) add_subdirectory(tests)