Is there any other setting necessary to use this feature, what is wrong here?

What I need is: if the user navigate to others page it keeps the selected language. Say on home page the user select to change language, then when user go to home/about-us it displays the content on the selected language, now it reset to the default language.

Also I would like to say this is the best multilingual package for Umbraco. Great stuff.

The language property must be declared in your translation document types, as is mentioned in the instructions (Polyglot_v2.0_Documentation.pdf for Umbraco 7, page 5 at the bottom "Most importantly...", or the corresponding part of the instructions Polyglot_v1.6_Documentation.pdf for Umbraco <= 6, both downloadable from the package's page, under Documentation).

I think that, if you create the property, this problem will be resolved. You may have to recreate your translation documents, because that property is a label and is filled in by Polyglot automatically when the translations are created. If it has not been in place so far, it will be empty in existing translation documents.

I think I see what's going on. Indeed, things change a bit if you are using tabs (hence, you are not using the translation document types).

First of all, you don't need the TranslationRedirect macro at all. You would only need this if you were creating translation nodes, which to my understanding you are not. The purpose of TranslationRedirect, is to redirect a visitor to the site to the foreseen URL for each page, if he were to navigate to a translation node by accident or by guessing its URL and trying to hack the system. The fact that the macro has not been placed on a translation node, which is what it has been developed for, also explains why you get the null object error.

Now, what you do need to look into, is the TranslatedNavigation macro which is mentioned under "Further Steps" on page 8 of the Polyglod v2 documentation (for developers using Polyglot v2 on Umbraco 7) or page 10 of the Polyglot v1.6 documentation (for developers using Polyglot v1.6 on older versions of Umbraco).

You see, the default navigation menus provided by example Umbraco configurations are not ready to take Polyglot-style translations into account and the macro TranslatedNavigation provided by Polyglot does. You can either use it directly if it suits you, or adapt it to your site's structure and specific requirements if need be. You can also use its code as an example of how to develop other navigation components that you may need.

Our.umbraco.com is the community mothership for Umbraco, the open source asp.net cms. With a friendly forum for all your questions, a comprehensive documentation and a ton of packages from the community.
This site is running
Umbraco version 7.15.1