<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2010 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="photoeditor_name" msgid="4738587346771969697">"Studio Foto"</string>
    <string name="loading_failure" msgid="7890360277163832130">"Tidak dapat memuatkan foto"</string>
    <string name="saving_failure" msgid="8229491575433743974">"Tidak dapat menyimpan foto yang diedit"</string>
    <string name="photo_saved" msgid="6163006724627682202">"Foto diedit disimpan ke <xliff:g id="FOLDER_NAME">%s</xliff:g>"</string>
    <string name="discard_unsaved_photo" msgid="2353274490633681946">"Buang perubahan yang belum disimpan?"</string>
    <string name="yes" msgid="5402582493291792293">"Ya"</string>
    <string name="save" msgid="5516670392524294967">"SIMPAN"</string>
    <string name="autofix" msgid="1663414996270538748">"Auto-baiki"</string>
    <string name="crop" msgid="7598378507763334041">"Pangkas"</string>
    <string name="crossprocess" msgid="4173724489001742342">"Proses silang"</string>
    <string name="documentary" msgid="50396326708699797">"Dokumentari"</string>
    <string name="doodle" msgid="1686409894518940990">"Coretan"</string>
    <string name="duotone" msgid="8145893940788467106">"Dua tona"</string>
    <string name="facelift" msgid="6205748523156172637">"Muka Berseri-seri"</string>
    <string name="facetan" msgid="4412831806626044111">"Muka Sawo Matang"</string>
    <string name="filllight" msgid="2644989991700022526">"Cahaya Pemenuh"</string>
    <string name="fisheye" msgid="6037488646928998921">"Mata ikan"</string>
    <string name="flip" msgid="2357692401826287480">"Balikkan"</string>
    <string name="grain" msgid="7487585304579789098">"Ira Filem"</string>
    <string name="grayscale" msgid="7641563843060945228">"H &amp; P"</string>
    <string name="accessibility_black_and_white" msgid="1156382046161392389">"Hitam putih"</string>
    <string name="highlight" msgid="3902653944386623972">"Serlahan"</string>
    <string name="lomoish" msgid="1270032154357186736">"Lomo"</string>
    <string name="negative" msgid="1985508917342811252">"Negatif"</string>
    <string name="posterize" msgid="4139212359561383385">"Pemposteran"</string>
    <string name="redeye" msgid="4958448806369928239">"Mata Merah"</string>
    <string name="rotate" msgid="6607597269792373083">"Putar"</string>
    <string name="saturation" msgid="8621322012271169931">"Ketepuan"</string>
    <string name="sepia" msgid="7978093531824705601">"Sepia"</string>
    <string name="shadow" msgid="8235188588101973090">"Bayang-bayang"</string>
    <string name="sharpen" msgid="8449662378104403230">"Tajamkan"</string>
    <string name="straighten" msgid="5217801513491493491">"Luruskan"</string>
    <string name="temperature" msgid="1607987938521534517">"Cerah"</string>
    <string name="tint" msgid="154435943863418434">"Seri warna"</string>
    <string name="vignette" msgid="7648125924662648282">"Vignet"</string>
    <string name="crop_tooltip" msgid="8794037869706891710">"Seret penanda untuk memangkas foto"</string>
    <string name="doodle_tooltip" msgid="2902117272374362915">"Lukis pada foto untuk mencoret"</string>
    <string name="flip_tooltip" msgid="2700943256714731737">"Seret foto untuk menterbalikkannya"</string>
    <string name="redeye_tooltip" msgid="4183695928490874014">"Ketik pada mata merah untuk mengalih keluar"</string>
    <string name="rotate_tooltip" msgid="7008602969130734229">"Seret foto untuk memutarnya"</string>
    <string name="straighten_tooltip" msgid="4846317027139212339">"Seret foto untuk meluruskannya"</string>
    <string name="photoeditor_exposure" msgid="560535856805042987">"Kesan dedahan"</string>
    <string name="photoeditor_color" msgid="834210916165605468">"Kesan warna"</string>
    <string name="photoeditor_artistic" msgid="2810641816416597464">"Kesan artistik"</string>
    <string name="photoeditor_fix" msgid="6441595584425037477">"Baiki"</string>
    <string name="photoeditor_undo" msgid="4831462549862253564">"Buat asal"</string>
    <string name="photoeditor_redo" msgid="5999984591376273768">"Buat semula"</string>
</resources>
