<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.
-->
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd">
    <property key="EmplLeaveReasonType.description.CASUAL">
        <value xml:lang="en">Casual</value>
        <value xml:lang="fr">Convenance</value>
        <value xml:lang="ja">私事</value>
        <value xml:lang="vi">Tình cờ</value>
        <value xml:lang="zh">临时</value>
        <value xml:lang="zh-TW">臨時</value>
    </property>
    <property key="EmplLeaveReasonType.description.MEDICAL">
        <value xml:lang="en">Medical</value>
        <value xml:lang="fr">Maladie</value>
        <value xml:lang="ja">疾病</value>
        <value xml:lang="vi">Y tế</value>
        <value xml:lang="zh">疾病</value>
        <value xml:lang="zh-TW">疾病</value>
    </property>
    <property key="EmplLeaveType.description.INLAND_EARNED">
        <value xml:lang="en">Inland earned</value>
        <value xml:lang="fr">Congé payé</value>
        <value xml:lang="ja">国内取得</value>
        <value xml:lang="vi">Thu nhập quốc nội</value>
        <value xml:lang="zh">国内收入</value>
        <value xml:lang="zh-TW">國內收入</value>
    </property>
    <property key="EmplLeaveType.description.LOSS_OF_PAY">
        <value xml:lang="en">Loss of pay</value>
        <value xml:lang="fr">Sans solde</value>
        <value xml:lang="ja">無給</value>
        <value xml:lang="vi">Mất thanh toán</value>
        <value xml:lang="zh">无薪</value>
        <value xml:lang="zh-TW">無薪</value>
    </property>
    <property key="EmplLeaveType.description.RESTRICTED_HOLIDAY">
        <value xml:lang="en">Restricted holiday</value>
        <value xml:lang="fr">Jour férié</value>
        <value xml:lang="ja">制限日</value>
        <value xml:lang="vi">Kỳ nghỉ hạn chế</value>
        <value xml:lang="zh">受限的假期</value>
        <value xml:lang="zh-TW">受限的假期</value>
    </property>
    <property key="EmplLeaveType.description.SPECIAL_DAY_OFF">
        <value xml:lang="en">Special day off</value>
        <value xml:lang="fr">Congé</value>
        <value xml:lang="ja">特別休暇</value>
        <value xml:lang="vi">Ngày nghỉ đặc biệt</value>
        <value xml:lang="zh">特殊休假</value>
        <value xml:lang="zh-TW">特殊休假</value>
    </property>
</resource>
