<?xml version="1.0" encoding="utf-8"?>
<!--
     Copyright (C) 2017 The LineageOS Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="verification_failed_notification">Verifieringen misslyckades</string>
    <string name="verifying_download_notification">Verifierar uppdateringen</string>
    <string name="downloading_notification">Laddar ner</string>
    <string name="download_paused_notification">Nedladdning pausad</string>
    <string name="download_paused_error_notification">Nedladdningsfel</string>
    <string name="download_completed_notification">Nedladdning slutförd</string>
    <string name="download_starting_notification">Påbörjar nedladdning</string>
    <string name="new_updates_found_title">Nya uppdateringar</string>
    <string name="text_download_speed">%1$s, %2$s/s</string>
    <string name="resume_button">Återuppta</string>
    <string name="installing_update">Installerar uppdateringspaketet</string>
    <string name="installing_update_error">Installationsfel</string>
    <string name="installing_update_finished">Uppdateringen har installerats</string>
    <string name="dialog_battery_low_title">Låg batterinivå</string>
    <string name="reboot">Starta om</string>
    <string name="menu_refresh">Uppdatera</string>
    <string name="menu_auto_updates_check">Sök efter uppdateringar automatiskt</string>
    <string name="menu_auto_updates_check_interval_daily">En gång om dagen</string>
    <string name="menu_auto_updates_check_interval_weekly">En gång i veckan</string>
    <string name="menu_auto_updates_check_interval_monthly">En gång i månaden</string>
    <string name="menu_auto_updates_check_interval_never">Aldrig</string>
    <string name="menu_delete_update">Ta bort</string>
    <string name="menu_copy_url">Kopiera webbadress</string>
    <string name="menu_show_changelog">Visa ändringslogg</string>
    <string name="snack_updates_found">Nya uppdateringar hittades</string>
    <string name="snack_no_updates_found">Inga nya uppdateringar hittades</string>
    <string name="snack_download_verified">Nedladdningen är slutförd.</string>
    <string name="header_title_text">LineageOS\n%1$s</string>
    <string name="header_android_version">Android <xliff:g id="version" example="7.1.2">%1$s</xliff:g></string>
    <string name="header_last_updates_check">Senaste kontrollen utfördes: <xliff:g id="date" example="1 January 1970">%1$s</xliff:g> (<xliff:g id="time" example="01:23">%2$s</xliff:g>)</string>
    <string name="list_build_version">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g></string>
    <string name="list_build_version_date">LineageOS <xliff:g id="version" example="14.1">%1$s</xliff:g> – <xliff:g id="date" example="July 11, 2017">%2$s</xliff:g></string>
    <string name="list_download_progress_new"><xliff:g id="filesize_without_unit" example="12.2">%1$s</xliff:g> av <xliff:g id="filesize_without_unit" example="310 MB">%2$s</xliff:g> • <xliff:g id="percentage" example="56">%3$s</xliff:g></string>
    <string name="list_verifying_update">Verifierar uppdateringen</string>
    <string name="action_download">Ladda ner</string>
    <string name="action_pause">Pausa</string>
    <string name="action_resume">Återuppta</string>
    <string name="action_install">Installera</string>
    <string name="action_info">Info</string>
    <string name="action_delete">Radera</string>
    <string name="action_cancel">Avbryt</string>
    <string name="confirm_delete_dialog_title">Ta bort fil</string>
    <string name="label_download_url">Nedladdningsadress</string>
    <string name="toast_download_url_copied">Webbadressen har kopierats</string>
    <string name="notification_export_fail">Exporteringsfel</string>
    <string name="update_on_mobile_data_title">Varning</string>
    <string name="checkbox_mobile_data_warning">Visa inte igen</string>
    <string name="export_channel_title">Export slutförd</string>
    <string name="new_updates_channel_title">Nya uppdateringar</string>
    <string name="ongoing_channel_title">Pågående nedladdningar</string>
</resources>
