﻿// -*- Coding: utf-8; -*-  [all uconv resource files]
// Copyright (c) 2000-2003 IBM, Inc. and Others.
// $Revision: 1.4 $
//
// 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 ] "
    "[ --add-signature ] [ --remove-signature ] "
    "[ -o, --output file ] "
    "[ 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" 
          "          --add-signature               add a U+FEFF Unicode signature character (BOM)\n"
          "          --remove-signature            remove a U+FEFF Unicode signature character (BOM)\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

  problemCvtToU   { "Conversion to Unicode from codepage failed at input byte position {0}. Bytes: {1} Error: {2}\n" } // 0: position, 1: bytes, 2: err
  problemCvtFromU { "Conversion from Unicode to codepage failed at input byte position {0}. Unicode: {1} Error: {2}\n"} // 0: position, 1: Unicode, 2: err
  problemCvtFromUOut { "Conversion from Unicode to codepage failed at output byte position {0}. Unicode: {1} Error: {2}\n"} // 0: position, 1: Unicode, 2: 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" }
}

