﻿// -*- Coding: utf-8; -*-  [all uconv resource files]
// Copyright (c) 2000 IBM, Inc. and Others.
// $Revision: 1.1 $
//
// Root translation file for uconv messages.
// So you want to translate this file??? Great!
// 1. copy it to a new name [ex: se.txt]
//
// 2. You might wish to comment out ALL lines, and then uncomment them
//    as you add translations. That way, you don't inadvertently mark
//    an untranslated English (or whatever) string as already
//    translated. The base translation might change!
// 
// 3. These files are in UTF-8 format (even though root uses only
//    ASCII)
//
// 4. Make note of the location of {0}, {1}, etc.. they are taken from
//    arguments to u_wmsg() in order..
//
// 5. Add se.txt to RESSRC= in resfiles.mk and to the project file on 
//    the Windows side.
//
// 6. Send it in to srl@jtcsv.com or ask on the ICU mailing list! thanks!

root
{
  // uconv errors

  lcUsageWord { "usage" }
  ucUsageWord { "Usage" }
  usage { "{0}: {1} [ -h, -?, --help ] [ -V, --version ] [ -s, --silent ] [ -v, --verbose ] [ -l, --list | --list-code code | --default-code | -L, --list-transliterators ] [ --canon ] [ -x transliteration ] [ --to-callback callback | -c ] [ --from-callback callback | -i ] [ --callback callback ] [ --fallback | --no-fallback ] [ -b, --block-size size ] [ -f, --from-code code ] [ -t, --to-code code ] [ file ... ] [ -o, --output file ]\n" }

  help {  "Options:  -h, --help                    print this message\n"
          "          -V, --version                 print the program version\n"
          "          -s, --silent                  suppress messages\n"
          "          -v, --verbose                 display progress information\n"
	      "          -l, --list                    list all available encodings\n"
	      "          --list-code code              list only the given encoding\n"
	      "          --default-code                list only the default encoding\n"
	      "          -L, --list-transliterators    list all available transliterators\n"
          "          --canon                       print list in cnvrtrs.txt(5) format\n"
	      "          -x transliteration            run everything through transliteration\n" 
	      "          --to-callback callback        use callback on destination encoding\n"
	      "          -c                            omit invalid characters from the output\n"
	      "          --from-callback callback      use callback on original encoding\n"
	      "          -i                            ignore invalid sequences in the input\n"
          "          --callback callback           use callback on both encodings\n"
	      "          -b, --block-size size         read size bytes blocks (default: 4096)\n"
	      "          --fallback                    use fallback mapping\n"
	      "          --no-fallback                 do not use fallback mapping\n"
	      "          -f, --from-code code          set the original encoding\n"
	      "          -t, --to-code code            set the destination encoding\n" 
          "          -o, --output file             write output to file\n"
	      "\n"
	      "Callbacks:"
  }

  cantGetNames   { "Couldn''t get available converter names.\n" } // 0: err
  cantGetTag   { "Couldn''t get standard tag name: {0}.\n" } // 0: err
  
  noSuchCodeset  { "Couldn''t find encoding: {0}.\n" } // 0: name of the encoding
  noFromCodeset  { "No original encoding set (use -f).\n" }
  noToCodeset    {  "No destination encoding set (use -t).\n" }

  badBlockSize	{ "Bad block size: {0}.\n" } // 0: size of the block

  cantSetInBinMode { "Couldn't set standard input to binary mode." }
  cantSetOutBinMode { "Couldn't set standard output to binary mode." }

  cantOpenFromCodeset { "Couldn''t open converter for original encoding {0}: {1}.\n" } // 0:set, 1: err
  cantOpenToCodeset { "Couldn''t open converteur for destination encoding {0}: {1}.\n" } // 0: set, 1: err

  cantCreateTranslit { "Couldn''t create transliteration \"{0}\": {1}.\n" } // 0: set, 1: err
  cantCreateTranslitParseErr { "Couldn''t create transliteration \"{0}\": {1}, line {2}, offset {3}.\n" } // 0: set, 1: err, 2: line, 3: offset

  cantSetCallback { "Couldn''t set transcoding callback: {0}.\n" } // 0: err

  unknownCallback { "Unknown callback: {0}.\n" } // 0: callback name

  cantOpenInputF  { "Couldn''t open input file {0}: {1}.\n" } // 0: file, 1: strerror [OS error string]
  cantCreateOutputF  { "Couldn''t create output file {0}: {1}.\n" } // 0: file, 1: strerror [OS error string]

  cantWrite       { "The converted text couldn't be written: {0}.\n" } // 0: OS error string
  cantRead        { "Error reading from input file: {0}.\n" } // 0: OS error string

  premEnd         { "Premature end of Unicode to destination encoding conversion at position {0}.\n" } // 0: position
  premEndInput    { "Premature end of input when converting from original encoding to Unicode at position {0}.\n" } // 0: position

  problemCvtToU   { "Conversion to Unicode from codepage failed at position {0}: {1}.\n" } // 0: position, 1: err
  problemCvtFromU { "Conversion from Unicode to codepage failed at position {0}: {1}.\n"} // 0: position, 1: err
  problemCvtFromUOut { "Conversion from Unicode to codepage failed at position {0} in output: {1}.\n"} // 0: position, 1: err

// ICU errors - used by u_wmsg_errorName()

  U_USING_FALLBACK_ERROR       { "Using fallback data" }
  U_USING_DEFAULT_ERROR        { "Using default data" }
  U_ZERO_ERROR                 { "No error has occured" }
  U_ILLEGAL_ARGUMENT_ERROR     { "Illegal argument" }
  U_MISSING_RESOURCE_ERROR     { "A resource was missing" }
  U_INVALID_FORMAT_ERROR       { "Invalid format" }
  U_FILE_ACCESS_ERROR          { "Problem accessing that file/object" }
  U_INTERNAL_PROGRAM_ERROR     { "Internal program error" }
  U_MESSAGE_PARSE_ERROR        { "Parse error on message format" }
  U_MEMORY_ALLOCATION_ERROR    { "Out of memory" }
  U_INDEX_OUTOFBOUNDS_ERROR    { "An index was out-of-bounds" }
  U_PARSE_ERROR                { "Parse error" }
  U_INVALID_CHAR_FOUND         { "Invalid character found" }
  U_TRUNCATED_CHAR_FOUND       { "Truncated character found" }
  U_ILLEGAL_CHAR_FOUND         { "Illegal character found" }
  U_INVALID_TABLE_FORMAT       { "Invalid table data format" }
  U_INVALID_TABLE_FILE         { "Invalid table data file" }
  U_BUFFER_OVERFLOW_ERROR      { "Buffer overflow" }
  U_UNSUPPORTED_ERROR          { "A feature was unsupported" }
  U_RESOURCE_TYPE_MISMATCH     { "Resource type mismatch" }
  U_ILLEGAL_ESCAPE_SEQUENCE    { "Illegal escape sequence found" }
  U_UNSUPPORTED_ESCAPE_SEQUENCE {"Unsupported escape sequence found" }
}

