windows-nt/Source/XPSP1/NT/com/ole32/cs/backend/cslang.cxx
2020-09-26 16:20:57 +08:00

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;
}