<?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">"Photo Studio"</string>
    <string name="loading_failure" msgid="7890360277163832130">"Couldn\'t load the photo"</string>
    <string name="saving_failure" msgid="8229491575433743974">"Couldn\'t save edited photo"</string>
    <string name="photo_saved" msgid="6163006724627682202">"Edited photo saved to <xliff:g id="FOLDER_NAME">%s</xliff:g>"</string>
    <string name="discard_unsaved_photo" msgid="2353274490633681946">"Discard unsaved changes?"</string>
    <string name="yes" msgid="5402582493291792293">"Yes"</string>
    <string name="save" msgid="5516670392524294967">"SAVE"</string>
    <string name="autofix" msgid="1663414996270538748">"Auto-fix"</string>
    <string name="crop" msgid="7598378507763334041">"Crop"</string>
    <string name="crossprocess" msgid="4173724489001742342">"Cross-Process"</string>
    <string name="documentary" msgid="50396326708699797">"Documentary"</string>
    <string name="doodle" msgid="1686409894518940990">"Doodle"</string>
    <string name="duotone" msgid="8145893940788467106">"Duo-tone"</string>
    <string name="facelift" msgid="6205748523156172637">"Face Glow"</string>
    <string name="facetan" msgid="4412831806626044111">"Face Tan"</string>
    <string name="filllight" msgid="2644989991700022526">"Fill Light"</string>
    <string name="fisheye" msgid="6037488646928998921">"Fisheye"</string>
    <string name="flip" msgid="2357692401826287480">"Flip"</string>
    <string name="grain" msgid="7487585304579789098">"Film Grain"</string>
    <string name="grayscale" msgid="7641563843060945228">"B&amp;W"</string>
    <string name="accessibility_black_and_white" msgid="1156382046161392389">"Black and white"</string>
    <string name="highlight" msgid="3902653944386623972">"Highlights"</string>
    <string name="lomoish" msgid="1270032154357186736">"Lomo"</string>
    <string name="negative" msgid="1985508917342811252">"Negative"</string>
    <string name="posterize" msgid="4139212359561383385">"Posterise"</string>
    <string name="redeye" msgid="4958448806369928239">"Red Eye"</string>
    <string name="rotate" msgid="6607597269792373083">"Rotate"</string>
    <string name="saturation" msgid="8621322012271169931">"Saturation"</string>
    <string name="sepia" msgid="7978093531824705601">"Sepia"</string>
    <string name="shadow" msgid="8235188588101973090">"Shadows"</string>
    <string name="sharpen" msgid="8449662378104403230">"Sharpen"</string>
    <string name="straighten" msgid="5217801513491493491">"Straighten"</string>
    <string name="temperature" msgid="1607987938521534517">"Warmth"</string>
    <string name="tint" msgid="154435943863418434">"Tint"</string>
    <string name="vignette" msgid="7648125924662648282">"Vignette"</string>
    <string name="crop_tooltip" msgid="8794037869706891710">"Drag markers to crop photo"</string>
    <string name="doodle_tooltip" msgid="2902117272374362915">"Draw on photo to doodle"</string>
    <string name="flip_tooltip" msgid="2700943256714731737">"Drag photo to flip it"</string>
    <string name="redeye_tooltip" msgid="4183695928490874014">"Tap on red eyes to remove them"</string>
    <string name="rotate_tooltip" msgid="7008602969130734229">"Drag photo to rotate it"</string>
    <string name="straighten_tooltip" msgid="4846317027139212339">"Drag photo to straighten it"</string>
    <string name="photoeditor_exposure" msgid="560535856805042987">"Exposure effects"</string>
    <string name="photoeditor_color" msgid="834210916165605468">"Colour effects"</string>
    <string name="photoeditor_artistic" msgid="2810641816416597464">"Artistic effects"</string>
    <string name="photoeditor_fix" msgid="6441595584425037477">"Fix up"</string>
    <string name="photoeditor_undo" msgid="4831462549862253564">"Undo"</string>
    <string name="photoeditor_redo" msgid="5999984591376273768">"Redo"</string>
</resources>
