# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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.

# Day names

weekday-0-long = 星期日
weekday-1-long = 星期一
weekday-2-long = 星期二
weekday-3-long = 星期三
weekday-4-long = 星期四
weekday-5-long = 星期五
weekday-6-long = 星期六

weekday-0-short = 周日
weekday-1-short = 周一
weekday-2-short = 周二
weekday-3-short = 周三
weekday-4-short = 周四
weekday-5-short = 周五
weekday-6-short = 周六

# Month names

month-0-long  = 1 月
month-1-long  = 2 月
month-2-long  = 3 月
month-3-long  = 4 月
month-4-long  = 5 月
month-5-long  = 6 月
month-6-long  = 7 月
month-7-long  = 8 月
month-8-long  = 9 月
month-9-long  = 10 月
month-10-long = 11 月
month-11-long = 12 月

month-0-genitive  = 一月
month-1-genitive  = 二月
month-2-genitive  = 三月
month-3-genitive  = 四月
month-4-genitive  = 五月
month-5-genitive  = 六月
month-6-genitive  = 七月
month-7-genitive  = 八月
month-8-genitive  = 九月
month-9-genitive  = 十月
month-10-genitive = 十一月
month-11-genitive = 十二月

month-0-short  = 1 月
month-1-short  = 2 月
month-2-short  = 3 月
month-3-short  = 4 月
month-4-short  = 5 月
month-5-short  = 6 月
month-6-short  = 7 月
month-7-short  = 8 月
month-8-short  = 9 月
month-9-short  = 10 月
month-10-short = 11 月
month-11-short = 12 月

# Relative time ("pretty dates"), normal/long variant

minutes-ago-long={[ plural(value) ]}
minutes-ago-long[zero]  = 刚才
minutes-ago-long[one]   = 1 分钟前
minutes-ago-long[two]   = {{ value }} 分钟前
minutes-ago-long[few]   = {{ value }} 分钟前
minutes-ago-long[many]  = {{ value }} 分钟前
minutes-ago-long[other] = {{ value }} 分钟前

hours-ago-long={[ plural(value) ]}
hours-ago-long[zero]  = 刚才
hours-ago-long[one]   = 1 小时前
hours-ago-long[two]   = {{ value }} 小时前
hours-ago-long[few]   = {{ value }} 小时前
hours-ago-long[many]  = {{ value }} 小时前
hours-ago-long[other] = {{ value }} 小时前

days-ago-long={[ plural(value) ]}
days-ago-long[zero]  = 今天
days-ago-long[one]   = 昨天
days-ago-long[two]   = {{value}} 天前
days-ago-long[few]   = {{value}} 天前
days-ago-long[many]  = {{value}} 天前
days-ago-long[other] = {{value}} 天前

weeks-ago-long={[ plural(value) ]}
weeks-ago-long[zero]  = 本周
weeks-ago-long[one]   = 上周
weeks-ago-long[two]   = {{value}} 周前
weeks-ago-long[few]   = {{value}} 周前
weeks-ago-long[many]  = {{value}} 周前
weeks-ago-long[other] = {{value}} 周前

months-ago-long={[ plural(value) ]}
months-ago-long[zero]  = 本月
months-ago-long[one]   = 上月
months-ago-long[two]   = {{value}} 个月前
months-ago-long[few]   = {{value}} 个月前
months-ago-long[many]  = {{value}} 个月前
months-ago-long[other] = {{value}} 个月前

years-ago-long={[ plural(value) ]}
years-ago-long[zero]  = 今年
years-ago-long[one]   = 去年
years-ago-long[two]   = {{value}} 年前
years-ago-long[few]   = {{value}} 年前
years-ago-long[many]  = {{value}} 年前
years-ago-long[other] = {{value}} 年前

minutes-until-long={[ plural(value) ]}
minutes-until-long[zero]  = 现在
minutes-until-long[one]   = 1 分钟内
minutes-until-long[two]   = 剩{{value}}分钟
minutes-until-long[few]   = 剩{{value}}分钟
minutes-until-long[many]  = 剩{{value}}分钟
minutes-until-long[other] = 剩{{value}}分钟

hours-until-long={[ plural(value) ]}
hours-until-long[zero]  = 现在
hours-until-long[one]   = 1 小时内
hours-until-long[two]   = 剩{{value}}小时
hours-until-long[few]   = 剩{{value}}小时
hours-until-long[many]  = 剩{{value}}小时
hours-until-long[other] = 剩{{value}}小时

days-until-long={[ plural(value) ]}
days-until-long[zero]  = 今天
days-until-long[one]   = 明天
days-until-long[two]   = 剩{{value}}天
days-until-long[few]   = 剩{{value}}天
days-until-long[many]  = 剩{{value}}天
days-until-long[other] = 剩{{value}}天

weeks-until-long={[ plural(value) ]}
weeks-until-long[zero]  = 本周
weeks-until-long[one]   = 下周
weeks-until-long[two]   = 剩{{value}}周
weeks-until-long[few]   = 剩{{value}}周
weeks-until-long[many]  = 剩{{value}}周
weeks-until-long[other] = 剩{{value}}周

months-until-long={[ plural(value) ]}
months-until-long[zero]  = 本月
months-until-long[one]   = 下月
months-until-long[two]   = 剩{{value}}个月
months-until-long[few]   = 剩{{value}}个月
months-until-long[many]  = 剩{{value}}个月
months-until-long[other] = 剩{{value}}个月

years-until-long={[ plural(value) ]}
years-until-long[zero]  = 今年
years-until-long[one]   = 明年
years-until-long[two]   = 剩{{value}}年
years-until-long[few]   = 剩{{value}}年
years-until-long[many]  = 剩{{value}}年
years-until-long[other] = 剩{{value}}年


# Relative time ("pretty dates"), short variant
# LOCALIZATION NOTE: the time unit should be as short as possible,
# and the whole string should not exceed a length of ~10 latin characters.
# LOCALIZATION NOTE: the prime (’) can be used to represent minutes for most
# locales, but we use “m” instead for the English locale to prevent a possible
# confusion (35’ ago ≠ 35 feet ago).

minutes-ago-short={[ plural(value) ]}
minutes-ago-short[zero]  = 刚才
minutes-ago-short[other] = {{value}} 分钟前

hours-ago-short={[ plural(value) ]}
hours-ago-short[zero]  = 刚才
hours-ago-short[other] = {{value}}小时前

days-ago-short={[ plural(value) ]}
days-ago-short[zero]  = 今天
days-ago-short[other] = {{value}} 天前

minutes-until-short={[ plural(value) ]}
minutes-until-short[zero]  = 现在
minutes-until-short[other] = 剩{{value}}分钟

hours-until-short={[ plural(value) ]}
hours-until-short[zero]  = 现在
hours-until-short[other] = 剩{{value}}小时

days-until-short={[ plural(value) ]}
days-until-short[zero]  = 今天
days-until-short[other] = 剩{{value}}天

# Relative time ("pretty dates"), unexpected error

incorrectDate = （日期不正确）

# Date/Time format
# see http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html

dateTimeFormat_%c = %Y 年 %b %e 日 %a %H:%M:%S
dateTimeFormat_%x = %Y/%m/%d
dateTimeFormat_%X = %H:%M:%S

shortTimeFormat = %H:%M
shortDateTimeFormat = %x %H:%M

# Boolean to indicate if weekStarts on Monday (1) or Sunday (0).
weekStartsOnMonday = 0

# Localize “AM" and "PM" used in %p format for time
time_am = 上午
time_pm = 下午
