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.