Wednesday, December 05, 2007

Fwd: [nbannounce] NetBeans IDE 6.0 Available



---------- Forwarded message ----------
From: NetBeans Webmaster <webmaster@netbeans.org>
Date: Dec 5, 2007 7:52 AM
Subject: [nbannounce] NetBeans IDE 6.0 Available
To: nbannounce@netbeans.org


Download NetBeans IDE 6.0
NetBeans.org is proud to announce the availability of NetBeans IDE 6.0.

 
The focus of NetBeans IDE 6.0 is superior developer productivity with a smarter, faster editor, and the integration of all
NetBeans products into one IDE. NetBeans IDE 6.0 features Ruby/JRuby/Ruby on Rails support, enhancements for
improved Swing development, a new Visual Game Designer, updated Data Binding support, integrated Profiling, and more.
The new installer lets you customize your download preferences--use it to choose the features and runtimes you need.
Highlights of NetBeans IDE 6.0 are:


Download NetBeans IDE 6.0
Learn More
Get a free NetBeans Starter Kit DVD
Documentation, Support, and Training


Java

* Swing GUI Builder
* Intelligent Editor
* Profiler
* Debugger
* Updated Platform APIs

C/C++
* C/C++ Projects and Templates
* Source Code Editor
* Multiple Configurations
* Class Hierarchy Browser
* File Navigation

Ruby
* Ruby on Rails Support
* JRuby Runtime
* Code Completion
* Debugger
* Refactoring

Mobility
* Game Builder
* Device Fragmentation
* SVG Graphics
* Web Services
* Handheld Device / Set Top Box

Web & Java EE
* Visual JSF Design
* Enhanced JavaScript
* AJAX Enabled Components
* CSS Editor
* Web Services & SOA

SOA
* XML Schema Editor, XSLT Designer
* WSDL Designer
* BPEL Designer
* Service Assembly Editor
* Deploy to JBI compliant runtime


NetBeans Magazine NetBeans TV Planet NetBeans my.netbeans Community Download Now

You have received this email because you are subscribed to the nbannounce mailing list from NetBeans.org. If you do not wish to receive this newsletter, you can unsubscribe here.



--
Zhipeng Zhang (Alan)   BCompSc  MInfoTech MACS(Prov)

"You must be the change you wish to see in the world."

"Begin at the beginning and go on till you come to the end; then stop."
                                                                                      -- Lewis Carroll, Alice in Wonderland

Friday, September 28, 2007

My Photo Albums on zhipeng-zhang.com

zhipeng-zhang.com/plogger/             (most adorable)
 

What's New in Version 3.0?

  • Build your Own Themes — Use Plogger's simple template based theme system to create your own custom skins. If you are saavy, you can even integrate your own Javascript effects. Switch themes with the click of a button! Three themes are included in the package.
  • Plogger XML Service — Each Plogger gallery now has a full XML generator built-in. Create your own widgets in any language you choose, whether it be a native desktop widget or a Javascript snippet.
  • Better International Support — Plogger now supports internationalization of the admin area through the GetText framework and will be available in many languages. Plogger also now supports better usage of the UTF-8 Character set in the storage engine.
  • AJAX inline-editing — You can now edit descriptions and captions for any picture on-the-fly with our slick AJAX inline editors.
  • Include from Anywhere — Now you can include Plogger from any directory or page on your website
  • Upload Zip Files — Upload a zip file full of pictures and Plogger will automatically unpack and import them to your gallery
  • Description fields for pictures — All your images can now have captions and descriptions if you'd like
  • Tons of Bug Fixes — Version 3.0 is a complete rewrite of version 2.0. We now have definable sort orders, SEO friendly page titles, better large file support, a brand new user interface, and tons of bug fixes!
 
(excellent, same as plogger, but with community functions, users can have, upload their own album)
 

.:: Entry

01: Welcome to Coppermine Photo Gallery's homepage!

Coppermine is a multi-purpose fully-featured and integrated web picture gallery script written in PHP using GD or ImageMagick as image library with a MySQL backend.

Coppermine is free software which you can download and install on your webspace. If you came here from a "Powered by Coppermine" link on a photo gallery, please read these Frequently-Asked Questions.


The default CPG theme's front page.

.:: Requirements

02: Web Server + PHP + MySQL + IM/GD = CPG!

Coppermine Photo Gallery has been tested working well on IIS, Apache 1.3.24 onwards to the latest Apache 2, on Linux, UNIX, OSX, and Win32 systems. The following settings are required:

  • Good webserver (Apache recommended);
  • PHP (4.1.0 or better);
  • MySQL (3.23.23 or better; 4.x recommended);
  • either GD or ImageMagick (any version);

.:: Current features

03: Endless Features!

CPG is so fully featured it's not enough to fully list them here. Feel free to have a go with the demo - change the themes, add some comments, see it in Hungarian!

  • arrangement of pictures in categories and albums;
  • picture information stored in database;
  • users can upload pictures with web interface of ftp (and admin can batch-add to database);
  • full multimedia support
  • creation of thumbnails and intermediate size pics;
  • search feature;
  • last added;
  • random picture;
  • user management (private galleries, groups);
  • integration of user management with various bbs (like phpBB, YaBB SE, SMF, Invisionboard, vbulletin);
  • caption, title, description and user defined fields for each picture (searchable);
  • easy install (installer provided);
  • multi-lingual: Arabian, Brazilian Portuguese, Bulgarian, Catalan, Chinese (both Big-5 and GB), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German (both "Du" and "Sie"), Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Latvian, Malay, Norwegian, Polish, Romanian (both with and without diacritics), Russian, Slovenian, Spanish, Swedish, Uighur, Vietnamese; if your language is not on the list, you can easily create a translation for your own language;
  • user comments;
  • e-card feature;
  • slideshow viewer;
  • all features customizable with web interface (admin section);
  • template system;
  • user membership in multiple groups;
  • upload approval notice for admin;
  • EXIF/IPTC support;
  • language selection option in template;
  • image rotation;
  • multi-pic upload;
  • separation of the breadcrumb block so that it can be placed independently of category in the template;
  • option to choose max height or width for thumbnails will help in creating nicer looking thumbnail rows and cols;
  • option to display a clickable flimstrip of thumbnails below the image display;
  • option to show first level albums of a category instead of just statistics of the category;
  • option of turning on OR off the showing of "Private" Icon to unlogged / unprivileged user;
  • title option to sort in albums;
  • online help feature for the admin pages;
  • plugin-API;
  • English as a fallback language for un-translated entries in language files;
  • password-protected albums;
  • more admin-settable user profile fields;
  • picture-resize on upload;
  • bbs integration settable with a wizard-like user interface;
  • advanced search (boolean operators);

Customise your frontpage through CSS, PHP or plain HTML!
 

Unlimited multiple albums and categories using MySQL.
 

Film strip for that easy access.

.:: Future plans

04: What does the near future hold?

The developers are excited about releasing a new version which may include the following features (check out the forum):

  • integration of various hacks/user contributions into the release package;
  • advanced e-card feature (plain-text mails);
  • template-building tutorial;
  • optional dhtml navigation;
  • Permanent URLs for search engine friendliness (using PID instead of POS)
  • Rating on thumbnails page
  • Registration disclaimer optional
  • From thumbnail to Pop-Up option
  • Coppermine API
  • Comment approval
  • Comment and registration captcha class
  • Global password for registration
  • Watermarking
  • Thumb cropping and sharpening
  • Movie download option
  • Ecard flash support
  • Random album thumbnail
  • Tag cloud for keywords
  • Moderator for album pictures
 
 
zhipeng-zhang.com/phpalbum/     (simple and powerful, allow comments, ecard)
 
 
Very userful and handy. E-Card on pictures.

PHP Photo Album / Gallery

Submitted by patrik on Wed, 2005-12-21 10:19.
phpAlbum.net is an Open Source PHP script which allows you to create your personal Photo Album / Gallery in just a seconds. All you need is a web space with FTP access. No database is needed. After a few clicks with our phpAlubm.net Installer you are ready to upload your photos, create new directories /galleries, and use your photo album.

These are the features which phpAlbum.net offers you:

  • Automatic generation of thumbnails and resized
  • Commenting of pictures with antispam security code
  • NEW! IPTC Support, import of keywords and picture description, showing other IPTC-tags
  • NEW! E-Card - you can now send e-cards to your friends and family
  • Screenshots for files to be downloaded, movie, audio, exe or whatever
  • Password protection for your private galleries
  • Admin section for creating new directories, uploading photos (works even with PHP safe_mode=on),Uploading ZIP Files preserving directory structure
  • Short and long description of galleries/directories and photos
  • Highly customizable layout, separated layout(HTML) from functional code, this allows easy creation of new themes
  • Caching of all generated thumbnails and resized photos
  • Transparent logo and icon processing with any background color, including IE6
  • Access logging, with exclude strings
  • And last but not least, you can help us with your suggestions to create usable, easy to install, php photo album script.

 

 

 
zhipeng-zhang.com/TinyWebGallery/    (customisable album, mp3, avi, flv, etc could be displayed in the built in program)

 TinyWebGallery Overview

The TinyWebGallery is a free php based gallery that is very easy to install, extremely user friendly, does not need a database (uses xml files) but still has all the features you should expect and much more.
Besides the features you find in most other galleries TWG has e.g.
  • AJAX navigation with sliding thumbnails
  • xml based comments/captions/view counter/Top X/Rating
    with security image ...
  • TWG Admin to upload/manage images, manage users,
    Color Manager, Configuration of TWG ...
  • Keyboard navigation (arrow keys)
  • 3 different slideshow types
  • Protected galleries,
  • Text and image watermarks
  • Embeded video support (new 1.5)
  • TWG Flash uploader (new 1.5)
  • Tag support (new 1.6)
  • Frontend is available in 23, backend in 4 languages! (new 1.6)
  • Supports all file formats like avi, mpg, mp3 for download
  • Fullscreen mode
  • Remote picture support
  • Low bandwith mode for slow connections
  • Can be integrated or integrates existing html e.g. as footer, header or
    inside the page
  • All features can be enabled/disabled/configured
  • And a lot of small things that makes this gallery unique right now.

TWG can be configured very fast for a professional gallery like a model agency but also for the pictures from the last ski holiday! Just check out the demos and the list of all functions. Maybe TWG is the image gallery you where looking for so long!

 
zhipeng-zhang.com/psipuss/    (simple photo album, allow users to upload pics, good for friends who need album space)
 
front end users can upload iamges and manage their own downloaed images.
 

psi-labs.com FREE Photo Uploader Share Script

A Photo / Images upload script created in php mysql, it allows members to upload images, photos to your website.

psi-labs.com photo upload share script

psipuss version 1.0 Released 14.04.07

To login to admin

http://www.hotscreenplay.com/photo/admin/
username: admin
password: 123

To login as a user

http://www.hotscreenplay.com/photo/

psipuss is free under the gnu license

Download Now in rar
Download Now in zip

php mysql script to share images

To remove our powered buy link at the bottom of the script: its only $10 per domain so please paypal $10 per domain name to sales at psi-labs.com include the domain name in the paypal payment. or email us for other payment options.

 

Join the mailing list for the cool new updates and scripts.

 

Photo gallery, Images upload script, upload images, pics, jpg, gif, bpm, photos.

psi photo upload share script

Allows members to upload images to your website

 

zhipeng-zhang.com/weatimages/

much alike the Plogger, less functionality. simple and good.

 

 
lightbox driven gallery. ECard.
 
 
 
 
only two progam files needed. The images on the home directory and display straight away. Not powerful. Good for small amount of pic demo.
 
 
 
 
 

--
Zhipeng Zhang (Alan)   BCompSc  MInfoTech MACS(Prov)

"You must be the change you wish to see in the world."

"Begin at the beginning and go on till you come to the end; then stop."
                                                                                       -- Lewis Carroll, Alice in Wonderland

Thursday, September 27, 2007

Translating_WordPress Procedure



 
  
 
Table of contents [ showhide]
 

Internationalization and localization are terms used to describe the effort to make WordPress (and other such projects) available in languages other than English, for people from different locales, who use different dialects and local preferences.

The process of localizing a program has two steps. The first step is when the program's developers provide a mechanism and method for the eventual translation of the program and its interface to suit local preferences and languages for users worldwide. WordPress developers have done this, so in theory, WordPress can be used in any language.

The second step is the actual localization, the process by which the text on the page and other settings are translated and adapted to another language and culture, using the framework prescribed by the developers of the software. WordPress has already been localized into many other languages (see WordPress in Your Language for more information).

This article explains how translators (bi- or multi-lingual WordPress users) can go about localizing WordPress to more languages.

Translating WordPress

Before you start translating WordPress, check WordPress in Your Language (and resources cited there) to see if a translation of WordPress into your language already exists. It is also possible that someone (or a team) is already working on translating WordPress into your language, but they haven't finished yet. To find out, subscribe to the wp-polyglots mailing list , introduce yourself, and ask if there's anyone translating into your language. There is also a list of localization teams and localization teams currently forming, which you can check to see if a translation is in progress.

Qualifications

Assuming that a WordPress translation into your language does not already exist or have someone working on it, you may want to volunteer to create a public translation of WordPress into your language. If so, here are the qualifications you will need:

  • You need to be truly bilingual -- fluent in both written English and the language(s) you will be translating into. Casual knowledge of either one will make translating difficult for you, or make the localization you create confusing to native speakers.
  • You need to be familiar with PHP, as you will sometimes need to read through the WordPress code to figure out the best way to translate messages.
  • You should be familiar with human language constructs: nouns, verbs, articles, etc., different types of each, and be able to identify variations of their contexts in English.

About Locales

A locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil).

You can do a translation for any locale you wish, even other English locales such as Canadian English or Australian English, to adjust for regional spelling and idioms.

The default locale of WordPress is U.S. English.

Localization Technology

WordPress's developers chose to use the GNU gettext  (http://www.gnu.org/software/gettext/gettext.html ) localization framework to provide localization infrastructure to WordPress. gettext is a mature, widely used framework for modular translation of software, and is the de facto standard for localization in the open source/free software realm.

gettext uses message-level translation — that is, every "message" displayed to users is translated individually, whether it be a paragraph or a single word. In WordPress, such "messages" are generated, translated, and used by the WordPress PHP files via two PHP functions. __() is used when the message is passed as an argument to another function; _e() is used to write the message directly to the page. More detail on these two functions:

__($message) 
Searches the localization module for the translation of $message, and passes the translation to the PHP return statement. If no translation is found for $message, it just returns $message .
_e($message) 
Searches the localization module for the translation of $message, and passes the translation to the PHP echo statement. If no translation is found for $message, it just echoes $message .

Note that if you are internationalizing a Theme or Plugin, you should use a "Text Domain". See Writing a Plugin for more information on how to do this for a plugin; themes are similar.

The gettext framework takes care of most of WordPress. However, there are a few places in the WordPress distribution where gettext cannot be used -- see Files For Direct Translation for more information on how to translate these spots.

gettext files

There are three types of files used in the gettext translation framework. These files are used and/or generated by translation tools during the translation process, as follows:

POT (Portable Object Template) files 
The first step in the localization process is that a program is used to search through the WordPress source code and pick out every message passed into a __() or _e() function. This list of English-language messages is put into a specially-formatted template file (POT file) that forms the basis of all translations. Generally, you can download a POT file for WordPress, so you shouldn't have to generate your own. Separate POT files can also be made for themes and plugins, if the theme/plugin developer has enclosed all text in __() or _e() functions.
PO (Portable Object) files 
The second step in the localization process is that the translator translates all the messages from the POT file into the target language, and saves both English and translated messages in a PO file.
MO (Machine Object) files 
The final step in the localization process is that the PO file is run through a program that turns it into an optimized machine-readable binary file (MO file). Compiling the translations to machine code makes the localized program much faster in retrieving the translations while it is running.

Translation Tools

There are various tools available to aid in translating. You may use whichever you prefer.

Launchpad  ( https://translations.launchpad.net/) 
The Ubuntu Linux project has a web site that allows you to translate messages without even looking at a PO or POT file, and export directly to a MO.
Note: many translators have found Rosetta to be a good starting point, but once it comes time to proofread the entire list of translations, many have opted to switch hand-editing the PO file or using a program like poEdit or KBabel, since the Rosetta UI lacks a search feature and other things that become essential when proofreading and editing.
poEdit ( http://www.poedit.net/ ) 
An open source program for Windows, Mac OS X and UNIX/Linux which provides an easy-to-use GUI for editing PO files and generate MO files.
KBabel  ( http://i18n.kde.org/tools/kbabel/) 
Another open source PO editing program for the KDE window manager on Linux.
GNU Gettext  ( http://www.gnu.org/software/gettext/) 
The official Gettext tools package contains command-line tools for creating POTs, manipulating POs, and generating MOs. For those comfortable with a command shell.

Translating With Launchpad

  1. Go to Launchpad's WordPress translation page  (https://launchpad.net/wordpress/2.1/+pots/wordpress ).
  2. If you're not already logged in to Launchpad, choose "Log In / Register" at the top right. Log in, or create a Launchpad account if you don't have one already.
  3. Choose a language to begin translating.

When you are finished with your translation, you can export it as a PO or MO file if you like, by visiting the PO File Details page for your language and clicking on Export as PO file or Export as MO file .

Translating With poEdit

  1. Download and install poEdit  ( http://www.poedit.net/)
  2. Download the official WordPress POT file  ( http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot)
    The poEdit screen
    The poEdit screen
  3. Open the file in poEdit.
  4. (See Image) The box labeled (1) is the original message (in English) from the POT file. The box labeled (2) is where you add your translation. Boxes labeled (3) and (4) are used for adding comments about the messages. These come in handy if you are working with a team of translators and would like to pass around ideas through the PO file.
  5. Go to File → Save as… to save your translations in a PO file.
  6. When you are finished translating, go to File → Save as… again to generate the MO file.
  7. Or you can set your poEdit to always compile a MO file when saving changes by clicking File → Preferences and on the Editor tab check the Automatically compile .mo file on save box.

Translating With KBabel

This section is incomplete.

  1. Download the official WordPress POT file  ( http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot)
  2. Open the file in KBabel

Translating With Gettext Tools

  1. Download the official WordPress POT file  ( http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot)
  2. Open the file in your favorite text editor
  3. Update the header information
  4. Translate the messages
  5. Save the file with a .po file extension
  6. Issue msgfmt -o filename.mo filename.po

The PO File Header

At the beginning of the PO file is something called the header. This gives information about what package and version the translation is for, who the translator was, and when it was created. Certain portions of this header should be universal for all WordPress translations:

# LANGUAGE (LOCALE) translation for WordPress. # Copyright (C) YEAR WordPress contributors. # This file is distributed under the same license as the WordPress package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: WordPress VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-02-27 17:11-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" 

Fill in the rest of the capitalized text with the appropriate values.

Message Format

The remainder of the file will be in a format as follows:

#: wp-comments-post.php:13 msgid "Sorry, comments are closed for this item." msgstr ""  #: wp-comments-post.php:29 msgid "Sorry, you must be logged in to post a comment." msgstr ""  #: wp-comments-post.php:35 msgid "Error: please fill the required fields (name, email)." msgstr "" 

The first line of each message contains the location of the message in the WordPress code. In the case of these messages, they're all located in wp-comments-post.php, on lines 13, 29, and 35, respectively. Occasionally you will come across a message for which you will need to check its context; look at the appropriate line or lines in the WordPress core, and you should be able to figure out when and where the message is displayed, and even reproduce it yourself using your web browser. Some messages will also appear with the same text in multiple locations; in that case, there may be more than one line giving a file and line location.

The next line, msgid, is the source message. This is the string that WordPress passes to its __() or _e() functions, and the message you will need to translate.

The final line, msgstr, is a blank string where you will fill in your translation.

Here's how the same few lines would look after being translated, using the French (France) (http://svn.automattic.com/wordpress-i18n/fr_FR/trunk/messages/fr_FR.po ) locale as an example:

#: wp-comments-post.php:13 msgid "Sorry, comments are closed for this item." msgstr "L'ajout de commentaire n'est pas ou plus possible pour cet article."  #: wp-comments-post.php:29 msgid "Sorry, you must be logged in to post a comment." msgstr "Vous devez être connecté pour rédiger un commentaire."  #: wp-comments-post.php:35 msgid "Error: please fill the required fields (name, email)." msgstr "Erreur : veuillez remplir les champs obligatoires vides (nom, e-mail)." 
Note: see Character encodings and HTML character entities below for notes on when to use HTML character entities in translation.

Types of messages

Labels

Labels are often used in the context of HTML <label>, <legend>, <a>, or <select> tags. They are short and precise descriptors of the purpose of a UI element. These can be very difficult to translate at times, especially if they are single words, and if the word used in English can be interpreted as either a noun or imperative verb. With most labels you will need to do some searching through the code to find the context of its use before coming up with an appropriate translation.

Because so many of the messages are part of the WordPress administration interface, Labels are probably the most frequent type of message to translate.

Examples

msgid "Post" msgstr "Artikkeli" 

"Post" could be interpreted as an imperative verb, but in this context it's a noun. The noun form of "post" in English can be difficult to translate, and the most appropriate translation has been difficult for some teams to decide upon. Many translations use their language's equivalent to the English "Article," as this one does. (From the Finnish (Finland)  (http://svn.automattic.com/wordpress-i18n/fi_FI/trunk/messages/fi_FI.po ) translation.)

#: wp-login.php:79 wp-login.php:233 wp-register.php:166 #: wp-includes/template-functions-general.php:46 msgid "Register" msgstr "रजिस्टर" 

From the Hindi translation.

#: wp-admin/admin-functions.php:357 msgid "- Select -" msgstr " - Dewis -" 

Items like the surrounding dashes in this example can be eliminated or replaced if they might be confusing to users in your target locale, or if there are different established conventions for your locale. From the Welsh translation.

Informational Messages

Another frequent type of message, the informational message is usually composed of full sentences, and conveys information or requests an action of the user. Since these tend to be longer than labels, they tend to be slightly easier to translate. However, with the longer messages comes more variation in the level of formality (or informality), which is something translators need to be aware of.

Examples

#: wp-login.php:146 msgid "Your new password is in the mail." msgstr "Вашата нова парола е в електронната ви поща." 

This particular message contains a modified English formulaic expression ("the check/cheque is in the mail"), which contributes to its informality. (From the Bulgarian (Bulgaria) (http://svn.automattic.com/wordpress-i18n/bg_BG/trunk/messages/bg_BG.po ) translation.)

#: wp-includes/functions.php:1636 msgid "<strong>Error</strong>: Incorrect password." msgstr "<strong>FEL</strong>: Felaktigt lösenord." 

Error messages tend to be more formal, simply because they're short and concise. (From the Swedish (Sweden) (http://svn.automattic.com/wordpress-i18n/sv_SE/trunk/messages/sv_SE.po ) translation.)

#: wp-includes/functions-post.php:467 msgid "Sorry, you can only post a new comment once every 15 seconds. Slow down cowboy." msgstr "Leider kannst du nur alle 15 Sekunden einen neuen Kommentar eingeben. Immer locker bleiben." 

Of course, not all of them. (From the German (Germany) (http://svn.automattic.com/wordpress-i18n/de_DE/trunk/messages/de_DE.po ) translation.)

Date and Time Locale Settings

Rather than using PHP's built-in locale switching features, which is not configured for very many languages on most hosts, WordPress uses the gettext translation module to accomplish date and time translations and formatting.

WordPress translates the following:

Month names

#: wp-includes/locale.php:42 wp-includes/locale.php:57 msgid "May" msgstr "Květen" 

(From the Czech (Czech Republic) (http://svn.automattic.com/wordpress-i18n/cs_CZ/trunk/messages/cs_CZ.po ) translation.)

Month abbreviations

#: wp-includes/locale.php:57 msgid "May_May_abbreviation" msgstr "Mag" 

Note the unusual msgid. These messages should NOT be translated literally: they are a hack to get around the fact that in English, the full name and abbreviation for May are the same, which Gettext would erroneously combine into one entry. (From the Italian (Italy)  (http://svn.automattic.com/wordpress-i18n/it_IT/trunk/messages/it_IT.po ) translation.)

Weekday Names

#: wp-includes/locale.php:7 #: wp-includes/locale.php:18 #: wp-includes/locale.php:31 msgid "Tuesday" msgstr "火曜日" 

(From the Japanese (Japan) (http://svn.automattic.com/wordpress-i18n/ja_JP/trunk/messages/ja_JP.po ) translation.)

Weekday Abbreviations

#: wp-includes/locale.php:31 msgid "Tue" msgstr "Уто" 

(From the Serbian (Serbia & Montenegro) (Cyrillic) ( http://svn.automattic.com/wordpress-i18n/sr_CS/trunk/messages/sr_CS.po ) translation.)

Weekday Initials

#: wp-includes/locale.php:18 msgid "T_Tuesday_initial" msgstr "ti" 

The weekday initials are for WordPress's calendar feature, and use the same hack as the month abbreviations to get around the fact that in English Tuesday and Thursday share the same first letter. Not all locales use single-letter abbreviations for all days: in this example, Norwegian Bokmål uses an extra letter to distinguish tirsdag (Tuesday) and torsdag (Thursday). (From the Norwegian Bokmål (Norway) ( http://svn.automattic.com/wordpress-i18n/nb_NO/trunk/messages/nb_NO.po ) translation.)

Date Formatting Strings

These are PHP date() ( http://php.net/date ) formatting strings, and they allow you to change the formatting of the date and time for your locale.

WordPress uses the translations elsewhere in the localization file for month names, weekday names, etc. This special string is for the selection of which elements to include in the date & time, as well as the order in which they're presented.

Take this msgid from the theme.pot file:

#: archive.php:40 search.php:19 single.php:22 msgid "l, F jS, Y" msgstr "" 

In English, this gets formatted as:

Sunday, February 27th, 2005 

However, different locales format their dates differently. In Danish, for example, dates are written:

søndag, 27. februar 2005 

To accomplish this, the msgid above would be translated to:

#: archive.php:40 search.php:19 single.php:22 msgid "l, F jS, Y" msgstr "l, j. F Y" 

To use another example, one way to format dates in Chinese and Japanese is as follows:

2005年2月27日 

This would be accomplished in the translation like this:

#: archive.php:40 search.php:19 single.php:22 msgid "l, F jS, Y" msgstr "Y年n月j日" 

Lastly, if you need to include literal alphabetic characters in your date format, as sometimes occurs in Spanish, you can backslash them:

#: archive.php:40 search.php:19 single.php:22 msgid "l, F jS, Y" msgstr "l j \d\e F \d\e Y " 

This would output:

domingo 27 de febrero de 2005 

Translation via WordPress-PHP

To translate your Date e.g. inside your plugin use the wp-function mysql2date(Dateformat, Datestring) ( http://code.wordpress.de/xref/nav.htm?wp-includes/functions.php.htm#mysql2date ). It uses the month- and week-translations to return your date.

Messages With Placeholders

Many messages contain special PHP formatting placeholders, which allow the insertion of untranslatable dynamic content into the message after it is translated. The PHP placeholders come in two different formats:

%s 
When only one placeholder is present, this marker is used.
%1$s, %2$s, %3$s, … 
Numbered placeholders, which allow translations to rearrange the order of the placeholders in the string while maintaining the information each is replaced with.

Examples

#: wp-login.php:116 msgid "The e-mail was sent successfully to %s's e-mail address." msgstr "El e-mail fue enviado satisfactoriamente a la dirección e-mail de %s" 

This message inserts the username of the user to which an email has been sent. (From the Spanish (Spain) (http://svn.automattic.com/wordpress-i18n/es_ES/trunk/messages/es_ES.po ) translation.)

#: wp-admin/upload.php:96 #, php-format msgid "File %1$s of type %2$s is not allowed." msgstr "类型为%2$s的文件%1$s不允许被上传。" 

This message reverses the order in which the file name and type are used in the translation. (From the Chinese (China) (http://svn.automattic.com/wordpress-i18n/zh_CN/trunk/messages/zh_CN.po ) translation.)

Tips for Good Translations

Don't translate literally, translate organically 
Being bi- or multi-lingual, you undoubtedly know that the languages you speak have different structures, rhythms, tones, and inflections. Translated messages don't need to be structured the same way as the English ones: take the ideas that are presented and come up with a message that expresses the same thing in a natural way for the target language. It's the difference between creating an equal message and an equivalent message: don't replicate, replace. Even with more structural items in messages, you have creative license to adapt and change if you feel it will be more logical for, or better adapted to, your target audience.
Try to keep the same level of formality (or informality) 
Each message has a different level of formality or informality. Exactly what level of formality or informality to use for each message in your target language is something you'll have to figure out on your own (or with your team), but WordPress messages ( informational messages in particular) tend to have a politely informal tone in English. Try to accomplish the equivalent in the target language, within your cultural context.
Don't use slang or audience-specific terms 
Some amount of terminology is to be expected in a blog, but refrain from using colloquialisms that only the "in" crowd will get. If the uninitiated blogger were to install WordPress in your language, would they know what the term means? Words like pingback, trackback, and feed are exceptions to this rule; they're terminology that are typically difficult to translate, and many translators choose to leave in English.
Read other software's localizations in your language 
If you get stuck or need direction, try reading through the translations of other popular software tools to get a feel for what terms are commonly used, how formality is addressed, etc. Of course, WordPress has its own tone and feel, so keep that in mind when you're reading other localizations, but feel free to dig up UI terms and the like to maintain consistency with other software in your language.

WordPress Localization Repository

The WordPress Localization Repository at http://svn.automattic.com/wordpress-i18n/ is a Subversion repository where official WordPress translations are maintained. Various teams collaborate on translations for their native language, and team maintainers commit updates and changes to the repository.

Participating

Participation in the repository is open to anyone. Simply subscribe to the wp-polyglots mailing list , introduce yourself, and let everyone know what translation you'd like to work on. If there is already a team for your language and locale, they'll let you know and you can join them. If not, you can either volunteer to be a maintainer for your language and locale, or simply contribute your localization and the repository maintainers will add it.

Guidelines and requirements

Note: these guidelines are subject to change as the system evolves; repository maintainers will be happy to assist you in updating the files you maintain in the repository should these guidelines change.

Character Encodings

All localizations should have at least a UTF-8 version, but may optionally add versions in other character encodings popular for that locale.

PHP does not support Byte Order Markers (BOMs), so be sure the UTF-8 encoded files you contribute do not have them.

HTML Character Entities

With a few exceptions (noted below), all translations should be written literally, rather than escaping accented and special characters with HTML character entities.

Some characters must be escaped to avoid conflict with XHTML markup: angle brackets (&lt; and &gt;), and ampersands (&amp;). In addition, there are a few other characters better used escaped, such as non-breaking spaces ( &nbsp;), angle quotes (&laquo; and &raquo;), curly apostrophes (&#8217;) and curly quotes.

For more information about the W3C's best practices involving character encodings and character entities, see the following references:

Repository File Structure

The repository contains directories for each locale, which are named as follows:

Within each locale's directory are the regular Subversion versioning directories: branches/, tags/, and trunk/.

Inside the appropriate versioning directory are the following subdirectories:

dist/

This directory contains all files in the WordPress distribution that cannot be Gettexted, which have been translated into the target locale.

If the locale has only a UTF-8 translation of the files, the dist/ directory may be populated with them directly, and the structure within dist should mirror the structure of the wordpress root directory:

  • dist/
    • license.html
    • readme.html
    • wp-config-sample.php
    • wp-admin/
      • install.php
      • upgrade.php

If the locale contains more than just a UTF-8 character encoding, then dist/ should contain subdirectories for each encoding:

  • dist/
    • UTF-8/
      • license.html
      • readme.html
      • wp-config-sample.php
      • wp-admin/
        • install.php
        • upgrade.php
    • ISO-8859-1/

messages/

This directory contains the Gettext MO and PO files for the locale. Message files are named as follows:

Examples:

cs_CZ.po        # UTF-8 character encoding ja_JP.EUC-JP.mo # EUC-JP character  

theme/

Similarly to the dist/ dir, theme/ contains hard-translated theme files. If only a UTF-8 translation is present, the directory can be populated with subdirectories for each theme translated. These subdirectories contain all of the same files as the original theme (except that they're translated), and are named the same as the original theme:

  • theme/
    • default/
      • 404.php
      • index.php
      • sidebar.php
      • images/

Just as with the dist/ directory, if there are multiple character encodings represented, theme/ should contain a subdirectory for each character encoding, which in turn would contain subdirectories for each theme translated.

Troubleshooting

Rosetta won't export my translation as an MO file. It just says, "A system error occurred." 
There is a syntax error in your translation that is preventing it from compiling to an MO. Download the PO instead and try compiling it manually with msgfmt. This will tell you which lines the errors are on so you can correct them by hand. If you don't have the GNU Gettext package installed, you can try opening the PO file in poEdit or KBabel to see if they will help you correct the errors, or you can email the wp-polyglots mailing list and ask for someone to debug it for you.

Resourcess

Ryan Boren's Localizing Plugins and Themes  ( http://boren.nu/archives/2004/11/01/localizing-plugins-and-themes/)