<?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.
-->

<!--+
    | Indonesian message catalogue file for menu in Cocoon 2 i18n sample
    |
    | CVS $Id$
    +-->

<catalogue xml:lang="in">
    <message key="Apache Cocoon i18n Samples">Contoh Apache Cocoon i18n</message>
    <message key="Samples">Contoh</message>
    <message key="Introduction">Kata pengantar</message>
    <message key="Static (XML)">Statis (XML)</message>
    <message key="Dynamic (XSP)">Dynamis (XSP)</message>
    <message key="Sitemap source">Sitemap kode</message>    
    <message key="Locales">Lokal</message>
    <message key="Documentation">Dokumentasi</message>
    <message key="i18n transformer docs"><![CDATA[<I18ntransformer> docs]]></message>
    <message key="i18n transformer Javadoc"><![CDATA[<I18ntransformer> Javadoc]]></message>
    <message key="LocaleAction Javadoc"><![CDATA[<LocaleAction> Javadoc]]></message>
</catalogue>
