<?xml version="1.0" encoding="UTF-8"?>
<!-- 
/*
 * Copyright (C) 2007 The Android Open Source 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:android="http://schemas.android.com/apk/res/android"
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="app_label" msgid="3706018265751197270">"Tili- ja synkronointiasetukset"</string>
    <string name="sync_settings" msgid="8707056705985552604">"Tili- ja synkronointiasetukset"</string>
    <string name="sync_too_many_deletes" msgid="1621369057980827097">"Poistoraja ylittynyt"</string>
    <string name="background_data" msgid="1103557117473896066">"Taustatiedot"</string>
    <string name="background_data_summary" msgid="9048259510387973822">"Sovellukset voivat synkronoida, lähettää ja vastaanottaa tietoja milloin tahansa"</string>
    <string name="background_data_dialog_title" msgid="6303755495467986079">"Huomio"</string>
    <string name="background_data_dialog_message" msgid="8417297954700022363">"Poistamalla taustatiedot käytöstä säästetään akun virtaa ja tiedonsiirron määrä vähenee. Jotkut sovellukset saattavat edelleen käyttää taustatietoihin tarvittavaa verkkoyhteyttä."</string>
    <string name="sync_automatically" msgid="4694735102757960100">"Automaattinen synkronointi"</string>
    <string name="sync_automatically_summary" msgid="4598895616781542745">"Sovellukset synkronoivat tiedot automaattisesti"</string>
    <string name="settings_backup" msgid="6114299464740014762">"Varmuuskopioi asetukset"</string>
    <string name="settings_backup_summary" msgid="1787552172618610178">"Varmuuskopioi asetukset"</string>
    <string name="sync_menu_sync_now" msgid="5796024841315572404">"Synkronoi nyt"</string>
    <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Peruuta synkronointi"</string>
    <string name="sync_one_time_sync" msgid="3274364877518422827">"Kosketa ja synkronoi nyt<xliff:g id="LAST_SYNC_TIME">
%1$s</xliff:g>"</string>
    <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
    <string name="sync_calendar" msgid="1796292773734071897">"Kalenteri"</string>
    <string name="sync_contacts" msgid="2035690905925565660">"Yhteystiedot"</string>
    <string name="sync_too_many_deletes_desc" msgid="699495654174066067">"Tilin <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g> synkronointityypissä <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g> on <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> poistettua kohdetta. Mitä tehdään?"</string>
    <string name="sync_really_delete" msgid="5456355204562588976">"Poista kohteet."</string>
    <string name="sync_undo_deletes" msgid="8695514459839593307">"Kumoa poistot."</string>
    <string name="sync_do_nothing" msgid="5798755982392201673">"Älä tee mitään."</string>
    <string name="sync_is_failing" msgid="5230237058552433773">"Synkronoinnissa on tällä hetkellä ongelmia. Palvelu palaa pian takaisin käyttöön."</string>
    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Tervetuloa käyttämään Google Sync -palvelua!"</font>" "\n"Se on Googlen tapa synkronoida tietoja, ja sen avulla voit käyttää yhteystietojasi, tapaamisiasi ynnä muuta mistä tahansa."</string>
    <string name="header_application_sync_settings" msgid="5263025067167527890">"Sovelluksen synkronointiasetukset"</string>
    <string name="header_manage_accounts" msgid="381956296995298770">"Hallinnoi tilejä"</string>
    <string name="header_general_sync_settings" msgid="1598537524696692308">"Yleiset synkronointiasetukset"</string>
    <string name="sync_enabled" msgid="913018877443997502">"Synkronointi on KÄYTÖSSÄ"</string>
    <string name="sync_disabled" msgid="185731301298967302">"Synkronointi on POIS KÄYTÖSTÄ"</string>
    <string name="sync_error" msgid="681431702824599812">"Synkronointivirhe"</string>
    <string name="add_account_label" msgid="2035321485672826779">"Lisää tili"</string>
    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Tiedot ja synkronointi"</string>
    <string name="preference_change_password_title" msgid="6468827554159468315">"Vaihda salasana"</string>
    <string name="header_account_settings" msgid="4950809499418403792">"Tilin asetukset"</string>
    <string name="remove_account_label" msgid="5624712684599197863">"Poista tili"</string>
    <string name="header_add_an_account" msgid="2198078922829535425">"Lisää tili"</string>
    <string name="finish_button_label" msgid="6121560986057356757">"Valmis"</string>
    <string name="really_remove_account_title" msgid="8808121039511188784">"Poista tili"</string>
    <string name="really_remove_account_message" msgid="3293445755620109578">"Haluatko varmasti poistaa tämän tilin? Samalla puhelimesta poistetaan myös kaikki tilin viestit, yhteystiedot ja muut tiedot. "\n"Haluatko jatkaa?"</string>
    <string name="remove_account_failed" msgid="8178924513521241001">"Osa sovelluksista tarvitsee tämän tilin käyttöönsä. Voit poistaa sen vain palauttamalla puhelimen tehdasasetukset (jolloin poistetaan kaikki henkilötietosi). Voit palauttaa puhelimen tehdasasetukset Asetukset-sovelluksen Tietosuoja-kohdassa."</string>
    <string name="provider_label" msgid="6191617139291321517">"Push-tilaukset"</string>
    <string name="sync_item_title" msgid="7984962124867021854">"Synkronoi <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Manuaalinen synkronointi epäonnistui"</string>
    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Tämän kohteen synkronointi on tällä hetkellä pois käytöstä. Voit muuttaa asetuksia ottamalla taustatiedot ja automaattisen synkronoinnin väliaikaisesti käyttöön."</string>
</resources>
