<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2013 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="4469836075319831821">"Print Spooler"</string>
    <string name="more_options_button" msgid="2243228396432556771">"Citas opcijas"</string>
    <string name="label_destination" msgid="9132510997381599275">"Galamērķis"</string>
    <string name="label_copies" msgid="3634531042822968308">"Eksemplāri"</string>
    <string name="label_copies_summary" msgid="3861966063536529540">"Eksemplāri:"</string>
    <string name="label_paper_size" msgid="908654383827777759">"Papīra izmērs"</string>
    <string name="label_paper_size_summary" msgid="5668204981332138168">"Papīra izmērs:"</string>
    <string name="label_color" msgid="1108690305218188969">"Krāsa"</string>
    <string name="label_orientation" msgid="2853142581990496477">"Virziens"</string>
    <string name="label_pages" msgid="7768589729282182230">"Lapas"</string>
    <string name="template_all_pages" msgid="3322235982020148762">"Visas <xliff:g id="PAGE_COUNT">%1$s</xliff:g>"</string>
    <string name="template_page_range" msgid="428638530038286328">"Diapazons: <xliff:g id="PAGE_COUNT">%1$s</xliff:g>"</string>
    <string name="pages_range_example" msgid="8558694453556945172">"piem., 1–5,8,11–13"</string>
    <string name="print_preview" msgid="8010217796057763343">"Drukas priekšskatījums"</string>
    <string name="install_for_print_preview" msgid="6366303997385509332">"Instalēt PDF skatītāju priekšskatīšanai"</string>
    <string name="printing_app_crashed" msgid="854477616686566398">"Drukas lietotne avarēja"</string>
    <string name="generating_print_job" msgid="3119608742651698916">"Ģenerē drukas darbu…"</string>
    <string name="save_as_pdf" msgid="5718454119847596853">"Saglabāt kā PDF"</string>
    <string name="all_printers" msgid="5018829726861876202">"Visi printeri…"</string>
    <string name="print_dialog" msgid="32628687461331979">"Drukāšanas dialoglodziņš"</string>
    <string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. no <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
    <string name="page_description_template" msgid="6831239682256197161">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>. lapa no <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
    <string name="summary_template" msgid="8899734908625669193">"Kopsavilkums, kopiju skaits: <xliff:g id="COPIES">%1$s</xliff:g>, papīra izmērs: <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
    <string name="expand_handle" msgid="7282974448109280522">"Izvēršanas turis"</string>
    <string name="collapse_handle" msgid="6886637989442507451">"Sakļaušanas turis"</string>
    <string name="print_button" msgid="645164566271246268">"Drukāt"</string>
    <string name="savetopdf_button" msgid="2976186791686924743">"Saglabāt kā PDF failu"</string>
    <string name="print_options_expanded" msgid="6944679157471691859">"Drukāšanas opcijas ir izvērstas."</string>
    <string name="print_options_collapsed" msgid="7455930445670414332">"Drukāšanas opcijas ir sakļautas."</string>
    <string name="search" msgid="5421724265322228497">"Meklēt"</string>
    <string name="all_printers_label" msgid="3178848870161526399">"Visi printeri"</string>
    <string name="add_print_service_label" msgid="5356702546188981940">"Pievienot pakalpojumu"</string>
    <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Meklēšanas lodziņš ir redzams."</string>
    <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Meklēšanas lodziņš ir paslēpts."</string>
    <string name="print_add_printer" msgid="1088656468360653455">"Pievienot printeri"</string>
    <string name="print_select_printer" msgid="7388760939873368698">"Atlasīt printeri"</string>
    <string name="print_forget_printer" msgid="5035287497291910766">"Neatcerēties printeri"</string>
  <plurals name="print_search_result_count_utterance">
    <item quantity="one" msgid="4484953260685964252">"Atrasts <xliff:g id="COUNT">%1$s</xliff:g> printeris"</item>
    <item quantity="other" msgid="6533817036607128241">"Atrasti <xliff:g id="COUNT">%1$s</xliff:g> printeri"</item>
  </plurals>
    <string name="choose_print_service" msgid="3740309762324459694">"Izvēlieties drukāšanas pakalpojumu"</string>
    <string name="print_searching_for_printers" msgid="6550424555079932867">"Printeru meklēšana"</string>
    <string name="print_no_printers" msgid="4869403323900054866">"Netika atrasts neviens printeris."</string>
    <string name="printing_notification_title_template" msgid="295903957762447362">"Notiek darba <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> drukāšana…"</string>
    <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Pārtrauc drukas darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>…"</string>
    <string name="failed_notification_title_template" msgid="2256217208186530973">"Printera kļūda ar darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
    <string name="blocked_notification_title_template" msgid="1175435827331588646">"Printeris bloķēja darbu <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
  <plurals name="composite_notification_title_template">
    <item quantity="one" msgid="5866624638054847057">"Drukas darbs <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
    <item quantity="other" msgid="8746611264734222865">"Drukas darbi <xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>"</item>
  </plurals>
    <string name="cancel" msgid="4373674107267141885">"Atcelt"</string>
    <string name="restart" msgid="2472034227037808749">"Restartēt"</string>
    <string name="no_connection_to_printer" msgid="2159246915977282728">"Nav savienojuma ar printeri"</string>
    <string name="reason_unknown" msgid="5507940196503246139">"nezināms"</string>
    <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> — nav pieejams"</string>
  <string-array name="color_mode_labels">
    <item msgid="7602948745415174937">"Melnbalts"</item>
    <item msgid="2762241247228983754">"Krāsa"</item>
  </string-array>
  <string-array name="orientation_labels">
    <item msgid="4061931020926489228">"Portrets"</item>
    <item msgid="3199660090246166812">"Ainava"</item>
  </string-array>
    <string name="print_write_error_message" msgid="5787642615179572543">"Nevarēja ierakstīt failā."</string>
    <string name="print_error_default_message" msgid="8602678405502922346">"Diemžēl tas neizdevās. Mēģiniet vēlreiz."</string>
    <string name="print_error_retry" msgid="1426421728784259538">"Mēģināt vēlreiz"</string>
    <string name="print_error_printer_unavailable" msgid="8985614415253203381">"Šis printeris šobrīd nav pieejams."</string>
    <string name="print_preparing_preview" msgid="3939930735671364712">"Notiek priekšskatījuma sagatavošana..."</string>
</resources>
