################################################################################
##
##  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.
##
################################################################################
duplicateHierarchyOnAxes='{0}' appears on Axis '{1}' and on Axis '{2}'

nullMemberOnAxis=Attempt was made to add a null member to the Axis '{1}'

crossJoinSameHierarchyError= '{0}' found in both sets.

multipleHierarchies=Dimension contains multiple hierarchies. A hierarchy should be specified explicitly.

noMeasures=No measures have been specified for the cube

unionError=Sets do not have same dimensionality. Union cannot be performed.

invalidAggregator=Invalid aggregator value '{0}'. The possible values are 'SUM', 'AVG', 'MIN', 'MAX' and 'COUNT'.

invalidAttributeName=A attribute with the name '{0}' is not available on the dimension.

noAttributeForLevel=No attribute has been specified for a level in '{0}' hierarchy.

multipleHierarchiesNotSupported=Attempt to add multiple user defined hierarchies to the dimension '{0}'. Only a single user defined hierarchy is supported in this version.

zeroElementsOnAxis=No members found on Axis '{0}'.

finalizingMessage=Finalizing...Please wait.

progressMessage=Processing data Row: {0} of {1}

dimensionProcessingMessage=Processing dimension: {0}

queryError=Query Error

error=Generic Error