<?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">"Drukwaglys"</string>
    <string name="more_options_button" msgid="2243228396432556771">"Meer opsies"</string>
    <string name="label_destination" msgid="9132510997381599275">"Bestemming"</string>
    <string name="label_copies" msgid="3634531042822968308">"Afskrifte"</string>
    <string name="label_copies_summary" msgid="3861966063536529540">"Afskrifte:"</string>
    <string name="label_paper_size" msgid="908654383827777759">"Papiergrootte"</string>
    <string name="label_paper_size_summary" msgid="5668204981332138168">"Papiergrootte:"</string>
    <string name="label_color" msgid="1108690305218188969">"Kleur"</string>
    <string name="label_duplex" msgid="5370037254347072243">"Tweesydig"</string>
    <string name="label_orientation" msgid="2853142581990496477">"Oriëntasie"</string>
    <string name="label_pages" msgid="7768589729282182230">"Bladsye"</string>
    <string name="template_all_pages" msgid="3322235982020148762">"Al <xliff:g id="PAGE_COUNT">%1$s</xliff:g>"</string>
    <string name="template_page_range" msgid="428638530038286328">"Omvang van <xliff:g id="PAGE_COUNT">%1$s</xliff:g>"</string>
    <string name="pages_range_example" msgid="8558694453556945172">"bv. 1—5,8,11—13"</string>
    <string name="print_preview" msgid="8010217796057763343">"Drukvoorskou"</string>
    <string name="install_for_print_preview" msgid="6366303997385509332">"Installeer PDF-bekyker vir voorskou"</string>
    <string name="printing_app_crashed" msgid="854477616686566398">"Drukkerprogram het omgeval"</string>
    <string name="generating_print_job" msgid="3119608742651698916">"Genereer uitdruktaak"</string>
    <string name="save_as_pdf" msgid="5718454119847596853">"Stoor as PDF"</string>
    <string name="all_printers" msgid="5018829726861876202">"Alle drukkers…"</string>
    <string name="print_dialog" msgid="32628687461331979">"Drukdialoog"</string>
    <string name="current_page_template" msgid="1386638343571771292">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g> /<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
    <string name="page_description_template" msgid="6831239682256197161">"Bladsy <xliff:g id="CURRENT_PAGE">%1$d</xliff:g> van <xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
    <string name="summary_template" msgid="8899734908625669193">"Opsomming, kopieë <xliff:g id="COPIES">%1$s</xliff:g>, papiergrootte <xliff:g id="PAPER_SIZE">%2$s</xliff:g>"</string>
    <string name="expand_handle" msgid="7282974448109280522">"Vou handvatsel uit"</string>
    <string name="collapse_handle" msgid="6886637989442507451">"Vou handvatsel in"</string>
    <string name="print_button" msgid="645164566271246268">"Druk"</string>
    <string name="savetopdf_button" msgid="2976186791686924743">"Stoor na PDF"</string>
    <string name="print_options_expanded" msgid="6944679157471691859">"Drukopsies uitgevou"</string>
    <string name="print_options_collapsed" msgid="7455930445670414332">"Drukopsies ingevou"</string>
    <string name="search" msgid="5421724265322228497">"Deursoek"</string>
    <string name="all_printers_label" msgid="3178848870161526399">"Alle drukkers"</string>
    <string name="add_print_service_label" msgid="5356702546188981940">"Voeg diens by"</string>
    <string name="print_search_box_shown_utterance" msgid="7967404953901376090">"Soekkassie vertoon"</string>
    <string name="print_search_box_hidden_utterance" msgid="5727755169343113351">"Soekkassie weggesteek"</string>
    <string name="print_add_printer" msgid="1088656468360653455">"Voeg drukker by"</string>
    <string name="print_select_printer" msgid="7388760939873368698">"Kies drukker"</string>
    <string name="print_forget_printer" msgid="5035287497291910766">"Vergeet drukker"</string>
  <plurals name="print_search_result_count_utterance">
    <item quantity="one" msgid="4484953260685964252">"<xliff:g id="COUNT">%1$s</xliff:g> drukker gekry"</item>
    <item quantity="other" msgid="6533817036607128241">"<xliff:g id="COUNT">%1$s</xliff:g> drukkers gekry"</item>
  </plurals>
    <string name="choose_print_service" msgid="3740309762324459694">"Kies drukdiens"</string>
    <string name="print_searching_for_printers" msgid="6550424555079932867">"Soek tans vir drukkers"</string>
    <string name="print_no_printers" msgid="4869403323900054866">"Geen drukkers gekry nie"</string>
    <string name="printing_notification_title_template" msgid="295903957762447362">"Druk tans <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
    <string name="cancelling_notification_title_template" msgid="1821759594704703197">"Kanselleer tans <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
    <string name="failed_notification_title_template" msgid="2256217208186530973">"Drukkerfout by <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string>
    <string name="blocked_notification_title_template" msgid="1175435827331588646">"Drukker het <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> geblokkeer"</string>
  <plurals name="composite_notification_title_template">
    <item quantity="one" msgid="5866624638054847057">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>-uitdruktaak"</item>
    <item quantity="other" msgid="8746611264734222865">"<xliff:g id="PRINT_JOB_NAME">%1$d</xliff:g>-uitdruktake"</item>
  </plurals>
    <string name="cancel" msgid="4373674107267141885">"Kanselleer"</string>
    <string name="restart" msgid="2472034227037808749">"Herbegin"</string>
    <string name="no_connection_to_printer" msgid="2159246915977282728">"Geen verbinding met drukker nie"</string>
    <string name="reason_unknown" msgid="5507940196503246139">"onbekend"</string>
    <string name="printer_unavailable" msgid="2434170617003315690">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> – nie beskikbaar nie"</string>
  <string-array name="color_mode_labels">
    <item msgid="7602948745415174937">"Swart en wit"</item>
    <item msgid="2762241247228983754">"Kleur"</item>
  </string-array>
  <string-array name="duplex_mode_labels">
    <item msgid="3882302912790928315">"Geen"</item>
    <item msgid="7296563835355641719">"Lang rand"</item>
    <item msgid="79513688117503758">"Kort rand"</item>
  </string-array>
  <string-array name="orientation_labels">
    <item msgid="4061931020926489228">"Portret"</item>
    <item msgid="3199660090246166812">"Landskap"</item>
  </string-array>
    <string name="print_write_error_message" msgid="5787642615179572543">"Kon nie na lêer skryf nie"</string>
    <string name="print_error_default_message" msgid="8602678405502922346">"Jammer, dit het nie gewerk nie. Probeer weer."</string>
    <string name="print_error_retry" msgid="1426421728784259538">"Herprobeer"</string>
    <string name="print_error_printer_unavailable" msgid="8985614415253203381">"Hierdie drukker is nie op die oomblik beskikbaar nie."</string>
    <string name="print_preparing_preview" msgid="3939930735671364712">"Berei tans voorskou voor …"</string>
</resources>
