#
# Copyright 2009 Google Inc.
# 
# 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.
# 

# The default message to use for the message.
treeCount=.لديك {0} شجر

# The message to use for the plural form "zero".
treeCount[none]=ليس لديك أي أشجا.

# The message to use for the plural form "one".
treeCount[one]=لديك شجرة واحدة.

# The message to use for the plural form "two".
treeCount[two]=لديك شجرتا.

# The message to use for the plural form "few" (last two digits are 03-10).
treeCount[few]=لديك {0} أشجا.

# The message to use for the plural form "many" (last two digits are 11-99).
treeCount[many]=لديك {0} شجر.

