Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 791525
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T21:51:04+00:00 2026-05-14T21:51:04+00:00

I am working on a large multilingual website and I am considering different approaches

  • 0

I am working on a large multilingual website and I am considering different approaches for making it multilingual. The possible alternatives I can think of are:

  1. The Gettext functions with generation of .po files
  2. One MySQL table with the translations and a unique string ID for each text
  3. PHP-files with arrays containing the different translations with unique string IDs

As far as I have understood the Gettext functions should be most efficient, but my requirement is that it should be possible to change a text string in the original reference language (English) without the other translations of that string automatically reverting back to English just because a couple of words changed. Is this possible with Gettext?

What is the least resource demanding solution?
Is using the Gettext functions or PHP files with arrays more or less equally resource demanding?
Any other suggestions for more efficient solutions?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T21:51:04+00:00Added an answer on May 14, 2026 at 9:51 pm

    A few considerations:

    1. Translations
    Who will be doing the translations? People that are also connected to the site? A translation agency? When using Gettext you’ll be working with ‘pot’ (.po) files. These files contain the message ID and the message string (the translation). Example:

    msgid "A string to be translated would go here"  
    msgstr ""

    Now, this looks just fine and understandable for anyone who needs to translate this. But what happens when you use keywords, like Mike suggests, instead of full sentences? If someone needs to translate a msgid called “address_home”, he or she has no clue if this is should be a header “Home address” or that it’s a full sentence. In this case, make sure to add comments to the file right before you call on the gettext function, like so:

    /// This is a comment that will be included in the pot file for the translators
    gettext("ready_for_lost_episode");
    

    Using xgettext --add-comments=/// when creating the .po files will add these comments. However, I don’t think Gettext is ment to be used this way. Also, if you need to add comments with every text you want to display you’ll a) probably make an error at some point, b) you’re whole script will be filled with the texts anyway, only in comment form, c) the comments needs to be placed directly above the Gettext function, which isn’t always convient, depending on the position of the function in your code.

    2. Maintenance
    Once your site grows (even further) and your language files along with it, it might get pretty hard to maintain all the different translations this way. Every time you add a text, you need to create new files, send out the files to translators, receive the files back, make sure the structure is still intact (eager translators are always happy to translate the syntax as well, making the whole file unusable :)), and finish with importing the new translations. It’s doable, sure, but be aware with possible problems on this end with large sites and many different languages.


    Another option: combine your 2nd and 3rd alternative:

    Personally, I find it more useful to manage the translation using a (simple) CMS, keeping the variables and translations in a database and export the relevent texts to language files yourself:

    1. add variables to the database (e.g.: id, page, variable);
    2. add translations to these variables (e.g.: id, varId, language, translation);
    3. select relevant variables and translations, write them to a file;
    4. include the relevant language file in your site;
    5. create your own function to display a variables text:

    text('var'); or maybe something like __('faq','register','lost_password_text');

    Point 3 can be as simple as selecting all the relevant variables and translations from the database, putting them in an array and writing the serlialized array to a file.

    Advantages:

    1. Maintenance. Maintaining the texts can be a lot easier for big projects. You can group variables by page, sections or other parts within your site, by simply adding a column to your database that defines to which part of the site this variable belongs. That way you can quickly pull up a list of all the variables used in e.g. the FAQ page.

    2. Translating. You can display the variable with all the translations of all the different languages on a single page. This might be useful for people who can translate texts into multiple languages at the same time. And it might be useful to see other translations to get a feel for the context so that the translation is as good as possible. You can also query the database to find out what has been translated and what hasn’t. Maybe add timestamps to keep track of possible outdated translations.

    3. Access. This depends on who will be translating. You can wrap the CMS with a simple login to grant access to people from a translation agency if need be, and only allow them to change certain languages or even certain parts of the site. If this isn’t an option you can still output the data to a file that can be manually translated and import it later (although this might come with the same problems as mentioned before.). You can add one of the translations that’s already there (English or another main language) as context for the translator.

    All in all I think you’ll find that you’ll have a lot more control over the translations this way, especially in the long run. I can’t tell you anything about speed or efficiency of this approach compared to the native gettext function. But, depending on the size of the language files, I don’t think it’ll be a big difference. If you group the variables by page or section, you can alway include only the required parts.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm working with large numbers that I can't have rounded off. Using Lua's standard
Possible Duplicate: Working with large numbers in PHP. I run a completely useless Facebook
We are working with large amounts of data, all tagged in UTC (in Java).
I am working with a large Java web application from a commercial vendor. I've
We are working on a large project with a measure of new/modified GUI functionality.
I'm working with a large (270+ project) VS.Net solution. Yes, I know this is
I'm working on a large c++ system that is has been in development for
I am working on a large C++ project in Visual Studio 2008, and there
I'm working on a large, aging code base for an MFC app. The code
I am working on a large project that uses the STL and have a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.