//   Copyright (C) 2016 and later: Unicode, Inc. and others.
//   License & terms of use: http://www.unicode.org/copyright.html
//
//   Copyright (C) 2000-2003, International Business Machines
//   Corporation and others.  All Rights Reserved.

en {
     errorcodes {
                     "No error",
                     "Illegal argument passed",
                     "Missing resource",
                     "Format is invalid",
                     "File access error",
                     "Internal program error",
                     "Message parse error",
                     "Memory allocation error",
                     "Index out of bounds error",
                     "Parse error",
                     "Invalid char found",
                     "Truncated char found",
                     "Illegal char found",
                     "Invalid table format",
                     "Invalid table file",
                     "Buffer overflow error",
                     "Unsupported error",
                     "Resource type mismatch",
                     "Illegal escape sequence",
                     "Unsupported escape sequence"
                     }
      helpTopics {
          udata           { "This is udata help topic" }
          resourcebundles { "This is resource bundle help topic" }
          collation       { "This is collation help topic" }
          breakit         { "This is break iterator help topic" }
          translit        { "This is transliteration help topic" }
          unicode         { "This is unicode help topic" }
          format          { "This is format help topic" }
      }

      helpKeywords {
          udata           { "udata" }
          resourcebundles { "resources" }
          collation       { "collation" }
          breakit         { "breakit" }
          translit        { "transliteration" }
          unicode         { "unicode" }
          format          { "format" }
      }
}
