96 lines
1.9 KiB
C++
96 lines
1.9 KiB
C++
|
//+--------------------------------------------------------------------
|
||
|
//
|
||
|
// Author: AdamEd
|
||
|
// Date: October 1998
|
||
|
//
|
||
|
// Implementation of language support
|
||
|
// in the Class Store interface module
|
||
|
//
|
||
|
//
|
||
|
//---------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
#include "cstore.hxx"
|
||
|
|
||
|
LANGID gSystemLangId;
|
||
|
|
||
|
|
||
|
//+--------------------------------------------------------------------
|
||
|
//
|
||
|
// InitializeLanguageSupport
|
||
|
//
|
||
|
// Routine Description:
|
||
|
//
|
||
|
// Called at dll init to initialize globals necessary for
|
||
|
// language support
|
||
|
//
|
||
|
// Arguments:
|
||
|
//
|
||
|
// None.
|
||
|
//
|
||
|
// Return Value:
|
||
|
//
|
||
|
// none
|
||
|
//---------------------------------------------------------------------
|
||
|
void InitializeLanguageSupport()
|
||
|
{
|
||
|
gSystemLangId = GetSystemDefaultLangID();
|
||
|
}
|
||
|
|
||
|
|
||
|
DWORD GetLanguagePriority(LANGID PackageLangId, DWORD dwActFlags)
|
||
|
{
|
||
|
//
|
||
|
// If the activation flags indicate that we should always
|
||
|
// match regardless of language, this package gets the highest
|
||
|
// precedence
|
||
|
//
|
||
|
if (dwActFlags & ACTFLG_IgnoreLanguage) {
|
||
|
return PRI_LANG_ALWAYSMATCH;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// The ignore language flag was not specified by the admin,
|
||
|
// so now we must examine the language id of the package to
|
||
|
// determine its desirability.
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// First, match against the system locale's language --
|
||
|
// exact matches get highest priority
|
||
|
//
|
||
|
if (gSystemLangId == PackageLangId)
|
||
|
{
|
||
|
return PRI_LANG_SYSTEMLOCALE;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Try English -- English should function on all systems
|
||
|
//
|
||
|
if (LANG_ENGLISH == PRIMARYLANGID(PackageLangId))
|
||
|
{
|
||
|
return PRI_LANG_ENGLISH;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// If we couldn't get better matches, accept language neutral
|
||
|
// packages as a last resort
|
||
|
//
|
||
|
if (LANG_NEUTRAL == PackageLangId) {
|
||
|
return PRI_LANG_NEUTRAL;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// We couldn't find a match -- return the smallest priority
|
||
|
//
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|