<!--
  Copyright (C) 2022 The LeafOS 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>
    <string name="app_name">Wallpapers</string>
    <string name="category_default">LeafOS wallpapers</string>
    <string name="leaf_default">LeafOS</string>
    <string name="aosp_default">AOSP</string>
</resources>
