G'day Bod,

I had to do this for $work about 20 years ago; I expect my memory is somewhat shaky on details by now. Here's what I remember as it applies to your general design. I believe there are now a number of applications which will do much of the heavy lifting; it may be better to use those instead of re-inventing wheels yourself. I'll be interested in what others suggest.

Firstly, just use one set of templates. Improve readability with meaningful id="...", class="...", etc. names; remember you can use multiple class names.

This seems to align with what you suggested as your first option. I don't see any MVC-violation; please explain more about what you meant.

Store translations in separate directories. If you're going to include language variations, store the main language (let's say fr for French) in one place, and then variations (e.g. fr_ca for Canadian-French) separately. The variations would be smaller and only need to overwrite parts of the main language. To use a Perl-based pseudocode (which isn't necessarily suggesting implemention):

%lang = (%lang_fr); # French %lang = (%lang_fr, %lang_fr_ca); # Canadian-French

Organise translations into useful categories. For instance, button text ("Submit", "Cancel", etc.) would be widely used and perhaps suitable for a "common" category; text specifically for the "Left-handed Sky Hooks" pages could probably go into their own category.

Bear in mind that scripts can be left-to-right (e.g. Cyrillic & Greek) while others are right-to-left (e.g. Arabic & Hebrew). Your overall layout design would need to take this into account. In some cases you could just the change direction of the text:

+-------------+  +-------------+
| LTR Lang    |  |    gnaL LTR |
| Description |  | noitpircseD |
+-------------+  +-------------+

Others may be a bit more complicated if controls need to be moved as well:

+---------+-----------+
| Prompt: | [_______] |
+---------+-----------+

+-----------+---------+
| [_______] | :tpmorP |
+-----------+---------+

There are other considerations related to scripts (e.g. fonts & encoding). I'd suggest having a "meta" (or similar) category for each language to hold this information.

Navigation of a multi-lingual site needs to be addressed. Here's a couple of examples of the types of issues that could be encountered:

As you can see, there's more involved than simply translating text.

Edit: A few cosmetic changes; no information added, deleted, or substantially changed.

— Ken


In reply to Re: Multilingual design by kcott
in thread Multilingual design by Bod

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.