* To get correct results you will have to distuinguish
* for example between UNIX and WIN and OS2 target systems.
*/
static char* getText( int nResource )
{
switch( nResource ) {
case ROT13_DESC:
switch( _nLanguage ) {
case LANGUAGE_GERMAN:
return( "ROT13 Algorithmus, jedes alphabetische Zeichen des Textes wird um 13 im Alphabet rotiert." );
case LANGUAGE_ENGLISH:
default:
return( "ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet");
}
break;
case ROT13_PAR1_NAME:
switch( _nLanguage ) {
case LANGUAGE_GERMAN:
return( "Text" );
case LANGUAGE_ENGLISH:
default:
return( "Text");
}
break;
case ROT13_PAR1_DESC:
switch( _nLanguage ) {
case LANGUAGE_GERMAN:
return( "Der Text der rotiert werden soll" );
case LANGUAGE_ENGLISH:
default:
return( "The text that is to be rotated");
}
break;
default:
break;
}
return("");
}
/**
* Get neutral language for specific language.
* This simplifies the getText switch cases and allows to handle
* previously unknown language derivates due to foreign installations.
* If you want to distinguish between some dialects change this function
* to return the desired nLang before doing the bit masking stuff.
* See xlang.h for defined LANGUAGE_*
*/
static USHORT GetNeutralLanguage( USHORT nLang )
{
USHORT nPrimLang;
/* ignore LANGUAGE_USER* */
if ( (nLang & 0x03FF) >= 0x0200 )
return nLang;
nLang &= 0x03FF;
nPrimLang = nLang | 0x0400;
switch ( nPrimLang )
{
case LANGUAGE_CHINESE_TRADITIONAL:
nLang = LANGUAGE_CHINESE;
break;
case LANGUAGE_ENGLISH_US:
nLang = LANGUAGE_ENGLISH;
break;
case LANGUAGE_NORWEGIAN_BOKMAL:
nLang = LANGUAGE_NORWEGIAN;
break;
case LANGUAGE_PORTUGUESE_BRAZILIAN:
nLang = LANGUAGE_PORTUGUESE;
break;
default:
nLang = nPrimLang;
break;
}
return nLang;
}
/**
* StarCalc calls this function to set a new current Language for the Addin
*
* @param *nLanguage
*
*/
void CALLTYPE SetLanguage( USHORT* nLanguage )
{
_nLanguage = GetNeutralLanguage( *nLanguage );
}
/**
* Tell StarCalc how many new functions this Addin provides.
*
* @param *nCount - returns the number of functions which are exported to StarCalc
*
*/
void CALLTYPE GetFunctionCount( USHORT *nCount )
{
*nCount = 1;
}
/**
* Provides neccessary data for each new function to StarCalc
*
* @param *nNo Input: Function number between 0 and nCount - 1
* @param *pFuncName Output: Functionname which should be called in the AddIn-DLL
* @param *nParamCount Output: Number of Parameter. Must be greater than 0, because there's always a return-Value. Maximum is 16.
* @param *peType Output: Pointer to arrray with exactly 16 variables of typ Paramtype. nParamCount Entries are set to the type of the corresponding Parameters.
* @param *pInternalName Output: Functionname as seen by the Spreadsheet user