Multilanguage for database fields

Hi,

I would like to modify the database scheme to have the multilanguage support (2 languages in fact) for some fields of "albums" and "images" tables like the title and the description fields. I would like use the "dynamic-locale" plugins to switch between the 2 languages.

It's specify in the dynamic-locale documentation page that I have to create a set of custom functions to handle database strings and need a scheme for storing multiple versions of texts.

My questions...

1/ Is it possible to modify Zen Photo without lost the possibility to upgrade it in the futur ?

2/ In which file could I modify the database scheme and add title_fr and description_fr fields in the tables ?

3/ Where could I code a set of custom functions to handle database strings ?

Thank you by advance for your help.

Nico.

Comments

  • 1. Modifying the zenphoto core is always a risk. You can modify your database and add fields without much risk. Only problem would be if you happened to choose a field name that zenphoto eventually started to use.

    2. You modify the database schema directly with a tool like phpMyAdmin. You do have the "custom data" fields already in zenphoto that you could use for a second language. However that is just one field per object.

    3. You can create custom function in a file in your theme or you can create a zenphoto plugin (http://www.zenphoto.org/2008/04/zenphoto-plugin-architecture/) if the functions are to be generally used. Generally you can use the class get() and put() functions with any database field so your custom functions could do things like `return $get('title_fr');` to return your French title.

    Your biggest challenge is that there is no Admin support for editing your new fields. Perhaps you could consider the following idea:

    Use the custom data fields that are already present. They can be edited with the admin interface. Setup a convention for how your data will be placed: for instance it could be:
    `title` | `description` | `...`.

    Then you can have your custom functions map the field into the appropriate destinations:

    `$translations = explode('|', getAlbumCustomData());`
    Then `$translations[0]` would be the title, `$translations[1]` the descriptions, etc.
  • NicoD Member
    Thank you very much sbillard for your answer, I will try to do it.
  • NicoD Member
    After a long reflection, I have decided to use unnecessary fields for my application (like credit and the city) for the translations FR/ENG concerning the title field and the descriptions field.

    I have just changed the file admin.php of the zp-core to rename and move the labels for a better comprehension in the administration.
  • OK, but be aware that each upgrade the positions and names of these will revert.
  • NicoD Member
    Yes, I will have to redo the modifications each time I will upgrade ZP but there is not a lot of code changes.

    I also have to code some functions like printImageCity() and getImageCredit() to have access to this informations from the image template. I have found it nowhere ... :/
  • When do you intend to go live? This discussion caused me to do some thinking. I am working on adding multi-lingual to the database items. I have a proof of concept working now, but not all fields are converted.

    If you can wait, you may save a bit of effort.
  • NicoD Member
    It would be great if the title and the description fields could be translated. In fact they are the only fields that I need to translate...

    With your work could I use the "dynamic-locale" plugins to switch between the 2 languages ?

    If you publish it before the end of July, I could be interested by your modifications.
  • Just a little testing to do and these changes will be in the development build. Should make the end of July easily. I trust you will help with the testing!
  • NicoD Member
    Ok for the testing ;-)
  • The implementation has been released in [1969] and will show up in tonight's nightly build. To activate, find the "multi-lingual' checkbox next to the language selector on the admin gallery configuration tab. Check the box and you will have fields to enter translations for any of the zp supported languages. They do not all have to be populated. There is a fallback default whick will select the user's language if it exists falling back to the language specified by the language selector, falling back to the en_US string. (If none of these exist it will select the first non empty string.)

    Please report problems through the ticket system so we can keep tabs on them. Remember that this is a brand new feature. There may be some things that don't quite work right. Let us know.
  • NicoD Member
    Thank you !
    I have no time to test it before monday, so I will keep you in touch during the next week.
  • NicoD Member
    Could you please tell me the process to checkout (svn?) the revision [1969] to test it ?

    Thank you by advance.
  • Visit http://www.zenphoto.org/trac/browser/trunk. At the bottom of the page is a link to download a zip archive of the revision. Revisions keep being made. This link is to the most current development release of zenphoto. You can also get what we call the "nightly" build. Visit this link http://www.zenphoto.org/files/nightly/ and pick the most recent.

    Generally it is a better choice to use the nightly builds. In your case that is my recommendaton. All the language changes are in the build from 2008-07-20.
  • NicoD Member
    Thank you, for me it's a perfect job !
    It's exactly what I need !

    I will test more seriously and tell you if I found some problem.
  • Well, you were the inspiration for doing it. Just never had the right approach until this discussion.
  • suxab Member
    Hi all,

    I am afraid that the multi-lingual titles interfere with the printImageStatistic() function. On albums whithout multi titles it works fine.
  • acrylian Administrator, Developer
    I have changed the function to work with the album folder as specific album parameter instead of the album title now. I also added the missing support for the multi language strings for the optional displayed titles and descriptions.
  • NicoD Member
    I have a question ... is it possible to activate only 2 languages in the BO and for the language selector in the Front ?
  • acrylian Administrator, Developer
    Simply deinstall the languages you don't need by removing them from the locale folder. (What is a BO?)
  • NicoD Member
    Thank you acrylian for your answer.

    BO > Back Office, admin
    Sorry for the abbreviation...
  • fatman Member
    For further multi language support, is it possible have a feature like "synonym" on locale setting? that is to define some kind of browser language equal to a locale installed if "http accept language" chosen.

    I have not sure is there other language have similar case, but for chinese, there is got zh_HK, zh_TW, zh_CN, zh_sg. They may have different wording/written form, but basically the people could understand each other wording.

    So that if only have zh_TW installed, I can set something like (zh_HK|zh_CN|zh_sg) equal to zh_TW, zenphoto will output zh_TW translation for those 3 defined in browser.
  • There must be a 1 to 1 correspondence between the language specifier and a folder in the locales folders. Your best bet is to use zh_CN which will show simply as Chinese. Alternatively you can replicate the folders.

    Other languages, specially Spanish have a similar situation. ez_ES displays simply as Spanish.

    BTW, our tables do not include zh_sg, should it be added?
  • You should also check to see what the HTTP Accept Language returns. It may already have the list zh_TW|zh_HK|zh_CN|zh_sg. If it returns the list zenphoto will try to match each in the list and will take the first match.
Sign In or Register to comment.