// /** @file
// English module that provides Unicode Collation supports.
//
// This driver installs Unicode ISO 639-2 Collation and
// RFC 4646 Unicode Collation 2 protocols based on feature flags
// PcdUnicodeCollationSupport & PcdUnicodeCollation2Support respectively.
// It allows code running in the boot services environment to perform lexical
// comparison functions on Unicode strings for English languages.
//
// Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "Provides Unicode Collation support"

#string STR_MODULE_DESCRIPTION          #language en-US "This driver installs Unicode ISO 639-2 Collation and RFC 4646 Unicode Collation 2 protocols based on feature flags PcdUnicodeCollationSupport & PcdUnicodeCollation2Support respectively. It allows code running in the boot services environment to perform lexical comparison functions on Unicode strings for English languages."

