Some basic rules and guidelines for handling strings in VLC source code: - Determine wether your string is user visible (GUI string) or not. - _("") makes a string translatable and also actually does translation (calls gettext) - _NS("") is the macosx variant of _(""). it is a short of [NSApp localizedString: ""] There is also a [NSApp delocalizeString:@""] OSX is entirely UTF8 native. - N_() only makes a string translatable. it is safe to use it in #defines and in arrays. Also use this when translating strings during the creation of config variables. - User visible strings should start with a capital. (Module descriptions for instance) - Sentences should end with a '.' - Menu-items with multiple words Should Uppercase the Big Words (look at your windows/IE menus) (only menu-items) - msg_* should not be translated and don't have strict punctuation (no . or capitals). - Write correct american english. - Beware of duplicity with strings that already occur in other files. Use those when possible. - When writing descriptions (especially for config options) make the string descriptive. Think to yourself: If the user reads this, will it help him understand this? - Config options short descriptions should contain range and unit of the option when appropriate. ( 0-360 degrees) ( Hz ) - mms:// http:// UDP RTP are things that don't need translation, neither do variables, config options, module names and module shortcuts. - Consistent use of terminology throughout the sourcecode - Try to keep strings UTF8 where possible, to make sure a string can be displayed in chinese just as easily as in english in your window. - wxU is used for c UTF8 strings to unicode conversion. wxL2U transforms from current locale to unicode.