#
# Licensed Material - Property of IBM 
# (C) Copyright IBM Corp. 2002, 2003 - All Rights Reserved. 
# US Government Users Restricted Rights - Use, duplication or disclosure 
# restricted by GSA ADP Schedule Contract with IBM Corp. 
#
#  DISCLAIMER OF WARRANTIES.
#  The following [enclosed] code is sample code created by IBM
#  Corporation. This sample code is not part of any standard or IBM
#  product and is provided to you solely for the purpose of assisting
#  you in the development of your applications.  The code is provided
#  "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
#  NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
#  FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
#  THIS CODE.  THIS CODE MAY CONTAIN ERRORS.  IBM shall not be liable
#  for any damages arising out of your use of the sample code, even
#  if it has been advised of the possibility of such damages.
#

# This file is used to test the Properties Validator.
#

MISMATCHED_BRACES = This line has '{0}' mismatching braces.
MISMATCHED_BRACES_2 = This line has { a mismatching brace.
MISMATCHED_BRACES_3 = This line has } a mismatching brace.
MISMATCHED_BRACES_OKAY = This line has no '{' mismatching braces '}'.
MISMATCHED_BRACES_OKAY2 = This line also has no mismatching braces {0} '{' '}'.

TOO_MANY_ARGUMENTS = MessageFormat formats only 10 parameters {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}.
TOO_MANY_ARGUMENTS_2 = MessageFormat formats only 10 parameters {10}.

NEGATIVE_ARGUMENT = This line uses a negative {-1} argument.
B = okay
REDUNDANT_ARGUMENT = This line uses a redundant {0} {0} argument.
MISSED_PARM = This line uses {0} and {2} but not (1).
NEEDS_DOUBLE_APOS = This line uses a single apostrophe (') but should use two {0}.
NEEDS_SINGLE_APOS = This line uses a double apostrophe ('') but should use one.
A = okay
SYM
DUPLICATE_ID = This line uses a duplicate message id.
DUPLICATE_ID = This line also uses a duplicate message id.
DUPLICATE_PREFIX = AAAA0000W: This line uses a duplicate message prefix.
= jjj

DUPLICATE_PREFIX2 = AAAA0000W: This line also uses a duplicate message prefix.
Z_DUPLICATE = jjj
Z_DUPLICATE = mmm

# This is a comment
Z_DUPLICATE = nnn
C = okay
F = a \
b \
c
D = okay

CASE1 = ABCD0000E: Blah Blah Blah
CASE2 = ABCD0000E  Blah Blah Blah
CASE3 = ABCD0000E : Blah Blah Blah
CASE4 = ABCD0000E  Blah:Blah Blah
CASE5 = ABCD0000E :
CASE6 = Blah Blah Blah (i.e., no prefix)
CASE7 = ABCD0000E: Blah
CASE8 = ABCD0000E  Blah
CASE9 = ABCD0000E : Blah
CASE10 = ABCD0000E Blah
CASE11 = ABCD0000E
