Getting a Nearest Equivalent Language

In this example, the system language is ELangCanadianEnglish and there is no exact match of the resource file on the system. The application calls BaflUtils::NearestLanguageFileV2() to get the closest match. There are three available resource files:

  • c:\FileMenu.rsc is the language-neutral resource file.

  • c:\FileMenu.r01 is for ELangEnglish.

  • c:\FileMenu.r10 is for ELangAmerican.


  1. In the application, define a string with the neutral-language resource file name.

    _LIT(KRscFilename, "C:\\FileMenu.rsc"); 

  2. Create a session with the File Server to search the file system for available resource files.
    RFs fileServerSession;
    CleanupClosePushL(fileServerSession);
    User::LeaveIfError(fileServerSession.Connect());

  3. Construct a buffer to save a resource file name. The buffer takes the neutral-language resource file name as a input parameter to BaflUtils::NearestLanguageFileV2(). It will be updated with a new value after the call.
    TBuf<256> filename;
    filename.Copy(KRscFilename);

  4. Define a TLanguage as a return parameter for the nearest equivalent language.
    TLanguage lang=ELangNone;

  5. Get the nearest language.
    BaflUtils::NearestLanguageFileV2(fileServerSession, filename, lang);
    ...

  6. Close the session with the File Server.
    CleanupStack::PopAndDestroy (&fileServerSession);

The filename parameter is updated as "c:\\FileMenu.r10" which is the closest resource file for ELangCanadianEnglish. The lang parameter is returned as ELangAmerican (value 10) which is the nearest equivalent language.