/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/


#include <svtools/svtools.hrc>

#ifndef IMAGE_STDBTN_COLOR
#define IMAGE_STDBTN_COLOR Color { Red = 0xFFFF; Green = 0x0000; Blue = 0xFFFF; }
#endif


IMAGE RID_IMG_SCALABLEFONT
{
	ImageBitmap = Bitmap { File = "scalfont.bmp" ; };
	MaskColor = IMAGE_STDBTN_COLOR ;
};

IMAGE RID_IMG_SCALABLEFONT_HC
{
	ImageBitmap = Bitmap { File = "scalfont_h.bmp" ; };
	MaskColor = IMAGE_STDBTN_COLOR ;
};

IMAGE RID_IMG_PRINTERFONT
{
	ImageBitmap = Bitmap { File = "prnfont.bmp" ; };
	MaskColor = IMAGE_STDBTN_COLOR ;
};

IMAGE RID_IMG_PRINTERFONT_HC
{
	ImageBitmap = Bitmap { File = "prnfont_h.bmp" ; };
	MaskColor = IMAGE_STDBTN_COLOR ;
};

IMAGE RID_IMG_BITMAPFONT
{
	ImageBitmap = Bitmap { File = "bmpfont.bmp" ; };
	MaskColor = IMAGE_STDBTN_COLOR ;
};

IMAGE RID_IMG_BITMAPFONT_HC
{
	ImageBitmap = Bitmap { File = "bmpfont_h.bmp" ; };
	MaskColor = IMAGE_STDBTN_COLOR ;
};

String STR_SVT_AUTOMATIC_COLOR
{
	Text [ en-US ] = "Automatic";
};

/*
 * ressources for CollatorRessource / CollatorRessourceData resp.
 */

String STR_SVT_COLLATE_ALPHANUMERIC
{
	/* alphanumeric sorting algorithm */
	Text [ en-US ] = "Alphanumeric";
};

String STR_SVT_COLLATE_NORMAL
{
	/* default or normal sorting algorithm */
	Text [ en-US ] = "Normal";
};

String STR_SVT_COLLATE_CHARSET
{
	/* default or normal sorting algorithm */
	Text [ en-US ] = "Character set";
};

String STR_SVT_COLLATE_DICTIONARY
{
	/* german dictionary word order / sorting */
	Text [ en-US ] = "Dictionary";
};

String STR_SVT_COLLATE_PINYIN
{
	/* chinese sorting algorithm */
	Text [ en-US ] = "Pinyin";
};

String STR_SVT_COLLATE_STROKE
{
	/* chinese sorting algorithm */
	Text [ en-US ] = "Stroke";
};

String STR_SVT_COLLATE_RADICAL
{
	/* chinese sorting algorithm */
	Text [ en-US ] = "Radical";
};

String STR_SVT_COLLATE_UNICODE
{
	/* sorting according to the unicode code point of the character */
	Text [ en-US ] = "Unicode";
};

String STR_SVT_COLLATE_ZHUYIN
{
	/* chinese sorting algorithm */
	Text [ en-US ] = "Zhuyin";
};

String STR_SVT_COLLATE_PHONEBOOK
{
	/* phone book sorting algorithm. e.g. German */
	Text [ en-US ] = "Phone book";
};

String STR_SVT_COLLATE_PHONETIC_F
{
    Text [ en-US ] = "Phonetic (alphanumeric first)";
};

String STR_SVT_COLLATE_PHONETIC_L
{
    Text [ en-US ] = "Phonetic (alphanumeric last)";
};

String STR_SVT_INDEXENTRY_ALPHANUMERIC
{
	/* alphanumeric indexentry algorithm */
    Text [ en-US ] = "Alphanumeric";
};

String STR_SVT_INDEXENTRY_DICTIONARY
{
	/* korean dictionary indexentry algorithm */
    Text [ en-US ] = "Dictionary";
};

String STR_SVT_INDEXENTRY_PINYIN
{
	/* chinese sorting algorithm */
    Text [ en-US ] = "Pinyin";
};

String STR_SVT_INDEXENTRY_RADICAL
{
	/* chinese indexentry algorithm */
    Text [ en-US ] = "Radical";
};

String STR_SVT_INDEXENTRY_STROKE
{
	/* chinese indexentry algorithm */
    Text [ en-US ] = "Stroke";
};

String STR_SVT_INDEXENTRY_ZHUYIN
{
	/* chinese indexentry algorithm */
    Text [ en-US ] = "Zhuyin";
};

String STR_SVT_INDEXENTRY_PHONETIC_FS
{
    Text [ en-US ] = "Phonetic (alphanumeric first, grouped by syllables)";
};

String STR_SVT_INDEXENTRY_PHONETIC_FC
{
    Text [ en-US ] = "Phonetic (alphanumeric first, grouped by consonants)";
};

String STR_SVT_INDEXENTRY_PHONETIC_LS
{
    Text [ en-US ] = "Phonetic (alphanumeric last, grouped by syllables)";
};

String STR_SVT_INDEXENTRY_PHONETIC_LC
{
    Text [ en-US ] = "Phonetic (alphanumeric last, grouped by consonants)";
};





























