I'm lost on multi-language implementation. How to deal with it? Session, Snacks, File, ...different ways?

Overview Website is really a user content website, just like a social networking. We'll have system content controlled by us and user content converted by customers. Languages supported is going to be system controlled. To begin there is the top 20 supported languages. You will find two user types (Non-user and drenched-in user). Both user types have pages as not every pages are behind a log-in. Non customers can continue to view many public pages or profile pages which are public.

Requirement

  1. I wish to access a public page in French (for example) directly without needing to hit the website in british then alter the language to french. (optional)

  2. For user content -> If I wish to translate an British content to Italian, I'm searching to translate that 1 content (example status update) not the whole page. So page is within British however i can input Italian for your one content without transforming the whole page into Italian.

  3. Look for content according to language in one place. Should i be reading through reviews, I wish to load only German reviews in the menu although not change other page content.

  4. I wish to view all wall posts which are in the german language, can one get it done completely from my profile by altering the word what or must i logout of this language session and login with a brand new session for that new language, if session based?

  5. I'm trying to have the ability to change language on any page, for just about any content without getting the consumer to login or logout.

    1. I have to perform statistics for internal reasons according to language type. (like quantity of wall posts by people by network X who published content in Chinese. And So I will have to track per language per content.)

Other I'm still unsure when the content is going to be database or file driven however I'm considering the way i can best handle multi-language for scalability yet ensure that it stays easy to use.

Suggestions?