Updated file headers and footers and added the '(frames)' comment to the

end of the Image Buffer Size prompt.


git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@756 e3e1d417-86f3-4887-817a-d78f3d33393f
This commit is contained in:
stan 2004-01-21 10:55:02 +00:00
parent 74d85b38af
commit ae27ac2e40
4 changed files with 476 additions and 40 deletions

View File

@ -1,6 +1,6 @@
<?php <?php
// //
// ZoneMinder web UK English language file, $Date$, $Revision$ // ZoneMinder web German language file, $Date$, $Revision$
// Copyright (C) 2003 Philip Coombes // Copyright (C) 2003 Philip Coombes
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
@ -18,10 +18,13 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// //
// ZoneMinder <your language> Translation by <your name>
// Notes for Translators // Notes for Translators
// 0. Get some credit, put your name in the line above (optional)
// 1. When composing the language tokens in your language you should try and keep to roughly the // 1. When composing the language tokens in your language you should try and keep to roughly the
// same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places. // same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places.
// 2. There are three types of string replacement // 2. There are four types of string replacement
// a) Simple replacements are words or short phrases that are static and used directly. This type of // a) Simple replacements are words or short phrases that are static and used directly. This type of
// replacement can be used 'as is'. // replacement can be used 'as is'.
// b) Complex replacements involve some dynamic element being included and so may require substitution // b) Complex replacements involve some dynamic element being included and so may require substitution
@ -29,13 +32,12 @@
// a formatting string. If the dynamic element is a number you will usually need to use a variable // a formatting string. If the dynamic element is a number you will usually need to use a variable
// replacement also as described below. // replacement also as described below.
// c) Variable replacements are used in conjunction with complex replacements and involve the generation // c) Variable replacements are used in conjunction with complex replacements and involve the generation
// of a singular or plural noun depending on the number passed into the zmVlang function. This is // of a singular or plural noun depending on the number passed into the zmVlang function. See the
// intended to allow phrases such a '0 potatoes', '1 potato', '2 potatoes' etc to conjunct correctly // the zmVlang section below for a further description of this.
// with the associated numerator. Variable replacements are expressed are arrays with a series of // d) Optional strings which can be used to replace the prompts and/or help text for the Options section
// counts and their associated words. When doing a replacement the passed value is compared with // of the web interface. These are not listed below as they are quite large and held in the database
// those counts in descending order and the nearest match below is used if no exact match is found. // so that they can also be used by the zmconfig.pl script. However you can build up your own list
// Therefore is you have a variable replacement with 0,1 and 2 counts, which would be the normal form // quite easily from the Config table in the database if necessary.
// in English, if you have 5 'things' then the nearest match below is '2' and so that plural would be used.
// 3. The tokens listed below are not used to build up phrases or sentences from single words. Therefore // 3. The tokens listed below are not used to build up phrases or sentences from single words. Therefore
// you can safely assume that a single word token will only be used in that context. // you can safely assume that a single word token will only be used in that context.
// 4. In new language files, or if you are changing only a few words or phrases it makes sense from a // 4. In new language files, or if you are changing only a few words or phrases it makes sense from a
@ -44,6 +46,29 @@
// is and uncomment it. // is and uncomment it.
// require_once( 'zm_lang_en_gb.php' ); // require_once( 'zm_lang_en_gb.php' );
// You may need to change the character set here, if your web server does not already
// do this by default, uncomment this if required.
//
// Example
// header( "Content-Type: text/html; charset=iso-8859-1" );
// You may need to change your locale here if your default one is incorrect for the
// language described in this file, or if you have multiple languages supported.
// If you do need to change your locale, be aware that the format of this function
// is subtlely different in versions of PHP before and after 4.3.0, see
// http://uk2.php.net/manual/en/function.setlocale.php for details.
// Also be aware that changing the whole locale may affect some floating point or decimal
// arithmetic in the database, if this is the case change only the individual locale areas
// that don't affect this rather than all at once. See the examples below.
// Finally, depending on your setup, PHP may not enjoy have multiple locales in a shared
// threaded environment, if you get funny errors it may be this.
//
// Examples
// setlocale( 'LC_ALL', 'en_GB' ); All locale settings pre-4.3.0
// setlocale( LC_ALL, 'en_GB' ); All locale settings 4.3.0 and after
// setlocale( LC_CTYPE, 'en_GB' ); Character class settings 4.3.0 and after
// setlocale( LC_TIME, 'en_GB' ); Date and time formatting 4.3.0 and after
// Simple String Replacements // Simple String Replacements
$zmSlang24BitColour = '24 bit Farbe'; $zmSlang24BitColour = '24 bit Farbe';
$zmSlang8BitGrey = '8 bit Graustufe'; $zmSlang8BitGrey = '8 bit Graustufe';
@ -328,8 +353,120 @@ $zmClangLastEvents = 'Letzen %1$s %2$s'; // For example 'Last 37 Event
$zmClangMonitorCount = '%1$s %2$s'; // For example '4 Monitors' (from Vlang below) $zmClangMonitorCount = '%1$s %2$s'; // For example '4 Monitors' (from Vlang below)
$zmClangMonitorFunction = 'Monitor %1$s Function'; $zmClangMonitorFunction = 'Monitor %1$s Function';
// Variable arrays expressing plurality // The next section allows you to describe a series of word ending and counts used to
// generate the correctly conjugated forms of words depending on a count that is associated
// with that word.
// This intended to allow phrases such a '0 potatoes', '1 potato', '2 potatoes' etc to
// conjugate correctly with the associated count.
// In some languages such as English this is fairly simple and can be expressed by assigning
// a count with a singular or plural form of a word and then finding the nearest (lower) value.
// So '0' of something generally ends in 's', 1 of something is singular and has no extra
// ending and 2 or more is a plural and ends in 's' also. So to find the ending for '187' of
// something you would find the nearest lower count (2) and use that ending.
//
// So examples of this would be
// $zmVlangPotato = array( 0=>'Potatoes', 1=>'Potato', 2=>'Potatoes' );
// $zmVlangSheep = array( 0=>'Sheep' );
//
// where you can have as few or as many entries in the array as necessary
// If your language is similar in form to this then use the same format and choose the
// appropriate zmVlang function below.
// If however you have a language with a different format of plural endings then another
// approach is required . For instance in Russian the word endings change continuously
// depending on the last digit (or digits) of the numerator. In this case then zmVlang
// arrays could be written so that the array index just represents an arbitrary 'type'
// and the zmVlang function does the calculation about which version is appropriate.
//
// So an example in Russian might be (using English words, and made up endings as I
// don't know any Russian!!)
// $zmVlangPotato = array( 1=>'Potati', 2=>'Potaton', 3=>'Potaten' );
//
// and the zmVlang function decides that the first form is used for counts ending in
// 0, 5-9 or 11-19 and the second form when ending in 1 etc.
//
// Variable arrays expressing plurality, see the zmVlang description above
$zmVlangEvent = array( 0=>'Ereigniss', 1=>'Ereigisse', 2=>'Ereignisse' ); $zmVlangEvent = array( 0=>'Ereigniss', 1=>'Ereigisse', 2=>'Ereignisse' );
$zmVlangMonitor = array( 0=>'Monitors', 1=>'Monitor', 2=>'Monitors' ); $zmVlangMonitor = array( 0=>'Monitors', 1=>'Monitor', 2=>'Monitors' );
// You will need to choose or write a function that can correlate the plurality string arrays
// with variable counts. This is used to conjugate the Vlang arrays above with a number passed
// in to generate the correct noun form.
//
// In languages such as English this is fairly simple
// Note this still has to be used with printf etc to get the right formating
function zmVlang( $lang_var_array, $count )
{
krsort( $lang_var_array );
foreach ( $lang_var_array as $key=>$value )
{
if ( abs($count) >= $key )
{
return( $value );
}
}
die( 'Error, unable to correlate variable language string' );
}
// This is an version that could be used in the Russian example above
// The rules are that the first word form is used if the count ends in
// 0, 5-9 or 11-19. The second form is used then the count ends in 1
// (not including 11 as above) and the third form is used when the
// count ends in 2-4, again excluding any values ending in 12-14.
//
// function zmVlang( $lang_var_array, $count )
// {
// $secondlastdigit = substr( $count, -2, 1 );
// $lastdigit = substr( $count, -1, 1 );
// // or
// // $secondlastdigit = ($count/10)%10;
// // $lastdigit = $count%10;
//
// // Get rid of the special cases first, the teens
// if ( $secondlastdigit == 1 && $lastdigit != 0 )
// {
// return( $lang_var_array[1] );
// }
// switch ( $lastdigit )
// {
// case 0 :
// case 5 :
// case 6 :
// case 7 :
// case 8 :
// case 9 :
// {
// return( $lang_var_array[1] );
// break;
// }
// case 1 :
// {
// return( $lang_var_array[2] );
// break;
// }
// case 2 :
// case 3 :
// case 4 :
// {
// return( $lang_var_array[3] );
// break;
// }
// }
// die( 'Error, unable to correlate variable language string' );
// }
// This is an example of how the function is used in the code which you can uncomment and
// use to test your custom function.
//$monitors = array();
//$monitors[] = 1; // Choose any number
//echo sprintf( $zmClangMonitorCount, count($monitors), zmVlang( $zmVlangMonitor, count($monitors) ) );
// In this section you can override the default prompt and help texts for the options area
// These overrides are in the form of $zmVarOlangPrompt<option> and $zmVarOlangHelp<option>
// where <option> represents the option name minus the initial ZM_
// So for example, to override the help text for ZM_LANG_DEFAULT do
// $zmVarOlangPromptLANG_DEFAULT = "This is a new prompt for this option";
// $zmVarOlangHelpLANG_DEFAULT = "This is some new help for this option which will be displayed in the popup window when the ? is clicked";
//
?> ?>

View File

@ -18,10 +18,13 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// //
// ZoneMinder <your language> Translation by <your name>
// Notes for Translators // Notes for Translators
// 0. Get some credit, put your name in the line above (optional)
// 1. When composing the language tokens in your language you should try and keep to roughly the // 1. When composing the language tokens in your language you should try and keep to roughly the
// same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places. // same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places.
// 2. There are three types of string replacement // 2. There are four types of string replacement
// a) Simple replacements are words or short phrases that are static and used directly. This type of // a) Simple replacements are words or short phrases that are static and used directly. This type of
// replacement can be used 'as is'. // replacement can be used 'as is'.
// b) Complex replacements involve some dynamic element being included and so may require substitution // b) Complex replacements involve some dynamic element being included and so may require substitution
@ -29,13 +32,12 @@
// a formatting string. If the dynamic element is a number you will usually need to use a variable // a formatting string. If the dynamic element is a number you will usually need to use a variable
// replacement also as described below. // replacement also as described below.
// c) Variable replacements are used in conjunction with complex replacements and involve the generation // c) Variable replacements are used in conjunction with complex replacements and involve the generation
// of a singular or plural noun depending on the number passed into the zmVlang function. This is // of a singular or plural noun depending on the number passed into the zmVlang function. See the
// intended to allow phrases such a '0 potatoes', '1 potato', '2 potatoes' etc to conjunct correctly // the zmVlang section below for a further description of this.
// with the associated numerator. Variable replacements are expressed are arrays with a series of // d) Optional strings which can be used to replace the prompts and/or help text for the Options section
// counts and their associated words. When doing a replacement the passed value is compared with // of the web interface. These are not listed below as they are quite large and held in the database
// those counts in descending order and the nearest match below is used if no exact match is found. // so that they can also be used by the zmconfig.pl script. However you can build up your own list
// Therefore is you have a variable replacement with 0,1 and 2 counts, which would be the normal form // quite easily from the Config table in the database if necessary.
// in English, if you have 5 'things' then the nearest match below is '2' and so that plural would be used.
// 3. The tokens listed below are not used to build up phrases or sentences from single words. Therefore // 3. The tokens listed below are not used to build up phrases or sentences from single words. Therefore
// you can safely assume that a single word token will only be used in that context. // you can safely assume that a single word token will only be used in that context.
// 4. In new language files, or if you are changing only a few words or phrases it makes sense from a // 4. In new language files, or if you are changing only a few words or phrases it makes sense from a
@ -44,6 +46,29 @@
// is and uncomment it. // is and uncomment it.
// require_once( 'zm_lang_en_gb.php' ); // require_once( 'zm_lang_en_gb.php' );
// You may need to change the character set here, if your web server does not already
// do this by default, uncomment this if required.
//
// Example
// header( "Content-Type: text/html; charset=iso-8859-1" );
// You may need to change your locale here if your default one is incorrect for the
// language described in this file, or if you have multiple languages supported.
// If you do need to change your locale, be aware that the format of this function
// is subtlely different in versions of PHP before and after 4.3.0, see
// http://uk2.php.net/manual/en/function.setlocale.php for details.
// Also be aware that changing the whole locale may affect some floating point or decimal
// arithmetic in the database, if this is the case change only the individual locale areas
// that don't affect this rather than all at once. See the examples below.
// Finally, depending on your setup, PHP may not enjoy have multiple locales in a shared
// threaded environment, if you get funny errors it may be this.
//
// Examples
// setlocale( 'LC_ALL', 'en_GB' ); All locale settings pre-4.3.0
// setlocale( LC_ALL, 'en_GB' ); All locale settings 4.3.0 and after
// setlocale( LC_CTYPE, 'en_GB' ); Character class settings 4.3.0 and after
// setlocale( LC_TIME, 'en_GB' ); Date and time formatting 4.3.0 and after
// Simple String Replacements // Simple String Replacements
$zmSlang24BitColour = '24 bit colour'; $zmSlang24BitColour = '24 bit colour';
$zmSlang8BitGrey = '8 bit greyscale'; $zmSlang8BitGrey = '8 bit greyscale';
@ -151,7 +176,7 @@ $zmSlangHue = 'Hue';
$zmSlangId = 'Id'; $zmSlangId = 'Id';
$zmSlangIdle = 'Idle'; $zmSlangIdle = 'Idle';
$zmSlangIgnore = 'Ignore'; $zmSlangIgnore = 'Ignore';
$zmSlangImageBufferSize = 'Image Buffer Size'; $zmSlangImageBufferSize = 'Image Buffer Size (frames)';
$zmSlangImage = 'Image'; $zmSlangImage = 'Image';
$zmSlangInclude = 'Include'; $zmSlangInclude = 'Include';
$zmSlangInverted = 'Inverted'; $zmSlangInverted = 'Inverted';
@ -328,8 +353,120 @@ $zmClangLastEvents = 'Last %1$s %2$s'; // For example 'Last 37 Events'
$zmClangMonitorCount = '%1$s %2$s'; // For example '4 Monitors' (from Vlang below) $zmClangMonitorCount = '%1$s %2$s'; // For example '4 Monitors' (from Vlang below)
$zmClangMonitorFunction = 'Monitor %1$s Function'; $zmClangMonitorFunction = 'Monitor %1$s Function';
// Variable arrays expressing plurality // The next section allows you to describe a series of word ending and counts used to
// generate the correctly conjugated forms of words depending on a count that is associated
// with that word.
// This intended to allow phrases such a '0 potatoes', '1 potato', '2 potatoes' etc to
// conjugate correctly with the associated count.
// In some languages such as English this is fairly simple and can be expressed by assigning
// a count with a singular or plural form of a word and then finding the nearest (lower) value.
// So '0' of something generally ends in 's', 1 of something is singular and has no extra
// ending and 2 or more is a plural and ends in 's' also. So to find the ending for '187' of
// something you would find the nearest lower count (2) and use that ending.
//
// So examples of this would be
// $zmVlangPotato = array( 0=>'Potatoes', 1=>'Potato', 2=>'Potatoes' );
// $zmVlangSheep = array( 0=>'Sheep' );
//
// where you can have as few or as many entries in the array as necessary
// If your language is similar in form to this then use the same format and choose the
// appropriate zmVlang function below.
// If however you have a language with a different format of plural endings then another
// approach is required . For instance in Russian the word endings change continuously
// depending on the last digit (or digits) of the numerator. In this case then zmVlang
// arrays could be written so that the array index just represents an arbitrary 'type'
// and the zmVlang function does the calculation about which version is appropriate.
//
// So an example in Russian might be (using English words, and made up endings as I
// don't know any Russian!!)
// $zmVlangPotato = array( 1=>'Potati', 2=>'Potaton', 3=>'Potaten' );
//
// and the zmVlang function decides that the first form is used for counts ending in
// 0, 5-9 or 11-19 and the second form when ending in 1 etc.
//
// Variable arrays expressing plurality, see the zmVlang description above
$zmVlangEvent = array( 0=>'Events', 1=>'Event', 2=>'Events' ); $zmVlangEvent = array( 0=>'Events', 1=>'Event', 2=>'Events' );
$zmVlangMonitor = array( 0=>'Monitors', 1=>'Monitor', 2=>'Monitors' ); $zmVlangMonitor = array( 0=>'Monitors', 1=>'Monitor', 2=>'Monitors' );
// You will need to choose or write a function that can correlate the plurality string arrays
// with variable counts. This is used to conjugate the Vlang arrays above with a number passed
// in to generate the correct noun form.
//
// In languages such as English this is fairly simple
// Note this still has to be used with printf etc to get the right formating
function zmVlang( $lang_var_array, $count )
{
krsort( $lang_var_array );
foreach ( $lang_var_array as $key=>$value )
{
if ( abs($count) >= $key )
{
return( $value );
}
}
die( 'Error, unable to correlate variable language string' );
}
// This is an version that could be used in the Russian example above
// The rules are that the first word form is used if the count ends in
// 0, 5-9 or 11-19. The second form is used then the count ends in 1
// (not including 11 as above) and the third form is used when the
// count ends in 2-4, again excluding any values ending in 12-14.
//
// function zmVlang( $lang_var_array, $count )
// {
// $secondlastdigit = substr( $count, -2, 1 );
// $lastdigit = substr( $count, -1, 1 );
// // or
// // $secondlastdigit = ($count/10)%10;
// // $lastdigit = $count%10;
//
// // Get rid of the special cases first, the teens
// if ( $secondlastdigit == 1 && $lastdigit != 0 )
// {
// return( $lang_var_array[1] );
// }
// switch ( $lastdigit )
// {
// case 0 :
// case 5 :
// case 6 :
// case 7 :
// case 8 :
// case 9 :
// {
// return( $lang_var_array[1] );
// break;
// }
// case 1 :
// {
// return( $lang_var_array[2] );
// break;
// }
// case 2 :
// case 3 :
// case 4 :
// {
// return( $lang_var_array[3] );
// break;
// }
// }
// die( 'Error, unable to correlate variable language string' );
// }
// This is an example of how the function is used in the code which you can uncomment and
// use to test your custom function.
//$monitors = array();
//$monitors[] = 1; // Choose any number
//echo sprintf( $zmClangMonitorCount, count($monitors), zmVlang( $zmVlangMonitor, count($monitors) ) );
// In this section you can override the default prompt and help texts for the options area
// These overrides are in the form of $zmVarOlangPrompt<option> and $zmVarOlangHelp<option>
// where <option> represents the option name minus the initial ZM_
// So for example, to override the help text for ZM_LANG_DEFAULT do
// $zmVarOlangPromptLANG_DEFAULT = "This is a new prompt for this option";
// $zmVarOlangHelpLANG_DEFAULT = "This is some new help for this option which will be displayed in the popup window when the ? is clicked";
//
?> ?>

View File

@ -18,10 +18,13 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// //
// ZoneMinder <your language> Translation by <your name>
// Notes for Translators // Notes for Translators
// 0. Get some credit, put your name in the line above (optional)
// 1. When composing the language tokens in your language you should try and keep to roughly the // 1. When composing the language tokens in your language you should try and keep to roughly the
// same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places. // same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places.
// 2. There are three types of string replacement // 2. There are four types of string replacement
// a) Simple replacements are words or short phrases that are static and used directly. This type of // a) Simple replacements are words or short phrases that are static and used directly. This type of
// replacement can be used 'as is'. // replacement can be used 'as is'.
// b) Complex replacements involve some dynamic element being included and so may require substitution // b) Complex replacements involve some dynamic element being included and so may require substitution
@ -29,20 +32,42 @@
// a formatting string. If the dynamic element is a number you will usually need to use a variable // a formatting string. If the dynamic element is a number you will usually need to use a variable
// replacement also as described below. // replacement also as described below.
// c) Variable replacements are used in conjunction with complex replacements and involve the generation // c) Variable replacements are used in conjunction with complex replacements and involve the generation
// of a singular or plural noun depending on the number passed into the zmVlang function. This is // of a singular or plural noun depending on the number passed into the zmVlang function. See the
// intended to allow phrases such a '0 potatoes', '1 potato', '2 potatoes' etc to conjunct correctly // the zmVlang section below for a further description of this.
// with the associated numerator. Variable replacements are expressed are arrays with a series of // d) Optional strings which can be used to replace the prompts and/or help text for the Options section
// counts and their associated words. When doing a replacement the passed value is compared with // of the web interface. These are not listed below as they are quite large and held in the database
// those counts in descending order and the nearest match below is used if no exact match is found. // so that they can also be used by the zmconfig.pl script. However you can build up your own list
// Therefore is you have a variable replacement with 0,1 and 2 counts, which would be the normal form // quite easily from the Config table in the database if necessary.
// in English, if you have 5 'things' then the nearest match below is '2' and so that plural would be used.
// 3. The tokens listed below are not used to build up phrases or sentences from single words. Therefore // 3. The tokens listed below are not used to build up phrases or sentences from single words. Therefore
// you can safely assume that a single word token will only be used in that context. // you can safely assume that a single word token will only be used in that context.
// 4. In new language files, or if you are changing only a few words or phrases it makes sense from a // 4. In new language files, or if you are changing only a few words or phrases it makes sense from a
// maintenance point of view to include the original language file and override the old definitions rather // maintenance point of view to include the original language file and override the old definitions rather
// than copy all the language tokens across. To do this change the line below to whatever your base language // than copy all the language tokens across. To do this change the line below to whatever your base language
// is and uncomment it. // is and uncomment it.
require_once( 'zm_lang_en_gb.php' ); require_once( 'zm_lang_en_us.php' );
// You may need to change the character set here, if your web server does not already
// do this by default, uncomment this if required.
//
// Example
// header( "Content-Type: text/html; charset=iso-8859-1" );
// You may need to change your locale here if your default one is incorrect for the
// language described in this file, or if you have multiple languages supported.
// If you do need to change your locale, be aware that the format of this function
// is subtlely different in versions of PHP before and after 4.3.0, see
// http://uk2.php.net/manual/en/function.setlocale.php for details.
// Also be aware that changing the whole locale may affect some floating point or decimal
// arithmetic in the database, if this is the case change only the individual locale areas
// that don't affect this rather than all at once. See the examples below.
// Finally, depending on your setup, PHP may not enjoy have multiple locales in a shared
// threaded environment, if you get funny errors it may be this.
//
// Examples
// setlocale( 'LC_ALL', 'en_GB' ); All locale settings pre-4.3.0
// setlocale( LC_ALL, 'en_GB' ); All locale settings 4.3.0 and after
// setlocale( LC_CTYPE, 'en_GB' ); Character class settings 4.3.0 and after
// setlocale( LC_TIME, 'en_GB' ); Date and time formatting 4.3.0 and after
// Simple String Replacements // Simple String Replacements
$zmSlang24BitColour = '24 bit color'; $zmSlang24BitColour = '24 bit color';

View File

@ -1,6 +1,6 @@
<?php <?php
// //
// ZoneMinder web UK English language file, $Date$, $Revision$ // ZoneMinder web Polish language file, $Date$, $Revision$
// Copyright (C) 2003 Philip Coombes // Copyright (C) 2003 Philip Coombes
// //
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
@ -18,10 +18,13 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// //
// ZoneMinder <your language> Translation by <your name>
// Notes for Translators // Notes for Translators
// 0. Get some credit, put your name in the line above (optional)
// 1. When composing the language tokens in your language you should try and keep to roughly the // 1. When composing the language tokens in your language you should try and keep to roughly the
// same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places. // same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places.
// 2. There are three types of string replacement // 2. There are four types of string replacement
// a) Simple replacements are words or short phrases that are static and used directly. This type of // a) Simple replacements are words or short phrases that are static and used directly. This type of
// replacement can be used 'as is'. // replacement can be used 'as is'.
// b) Complex replacements involve some dynamic element being included and so may require substitution // b) Complex replacements involve some dynamic element being included and so may require substitution
@ -29,20 +32,42 @@
// a formatting string. If the dynamic element is a number you will usually need to use a variable // a formatting string. If the dynamic element is a number you will usually need to use a variable
// replacement also as described below. // replacement also as described below.
// c) Variable replacements are used in conjunction with complex replacements and involve the generation // c) Variable replacements are used in conjunction with complex replacements and involve the generation
// of a singular or plural noun depending on the number passed into the zmVlang function. This is // of a singular or plural noun depending on the number passed into the zmVlang function. See the
// intended to allow phrases such a '0 potatoes', '1 potato', '2 potatoes' etc to conjunct correctly // the zmVlang section below for a further description of this.
// with the associated numerator. Variable replacements are expressed are arrays with a series of // d) Optional strings which can be used to replace the prompts and/or help text for the Options section
// counts and their associated words. When doing a replacement the passed value is compared with // of the web interface. These are not listed below as they are quite large and held in the database
// those counts in descending order and the nearest match below is used if no exact match is found. // so that they can also be used by the zmconfig.pl script. However you can build up your own list
// Therefore is you have a variable replacement with 0,1 and 2 counts, which would be the normal form // quite easily from the Config table in the database if necessary.
// in English, if you have 5 'things' then the nearest match below is '2' and so that plural would be used.
// 3. The tokens listed below are not used to build up phrases or sentences from single words. Therefore // 3. The tokens listed below are not used to build up phrases or sentences from single words. Therefore
// you can safely assume that a single word token will only be used in that context. // you can safely assume that a single word token will only be used in that context.
// 4. In new language files, or if you are changing only a few words or phrases it makes sense from a // 4. In new language files, or if you are changing only a few words or phrases it makes sense from a
// maintenance point of view to include the original language file and override the old definitions rather // maintenance point of view to include the original language file and override the old definitions rather
// than copy all the language tokens across. To do this change the line below to whatever your base language // than copy all the language tokens across. To do this change the line below to whatever your base language
// is and uncomment it. // is and uncomment it.
//require_once( 'zm_lang_en_gb.php' ); // require_once( 'zm_lang_en_gb.php' );
// You may need to change the character set here, if your web server does not already
// do this by default, uncomment this if required.
//
// Example
// header( "Content-Type: text/html; charset=iso-8859-1" );
// You may need to change your locale here if your default one is incorrect for the
// language described in this file, or if you have multiple languages supported.
// If you do need to change your locale, be aware that the format of this function
// is subtlely different in versions of PHP before and after 4.3.0, see
// http://uk2.php.net/manual/en/function.setlocale.php for details.
// Also be aware that changing the whole locale may affect some floating point or decimal
// arithmetic in the database, if this is the case change only the individual locale areas
// that don't affect this rather than all at once. See the examples below.
// Finally, depending on your setup, PHP may not enjoy have multiple locales in a shared
// threaded environment, if you get funny errors it may be this.
//
// Examples
// setlocale( 'LC_ALL', 'en_GB' ); All locale settings pre-4.3.0
// setlocale( LC_ALL, 'en_GB' ); All locale settings 4.3.0 and after
// setlocale( LC_CTYPE, 'en_GB' ); Character class settings 4.3.0 and after
// setlocale( LC_TIME, 'en_GB' ); Date and time formatting 4.3.0 and after
// Simple String Replacements // Simple String Replacements
$zmSlang24BitColour = 'Kolor (24 bity)'; $zmSlang24BitColour = 'Kolor (24 bity)';
@ -328,8 +353,120 @@ $zmClangLastEvents = 'Ostatnie %1$s %2$s';
$zmClangMonitorCount = '%1$s %2$s'; $zmClangMonitorCount = '%1$s %2$s';
$zmClangMonitorFunction = 'Monitor %1$s Funkcja'; $zmClangMonitorFunction = 'Monitor %1$s Funkcja';
// Variable arrays expressing plurality // The next section allows you to describe a series of word ending and counts used to
// generate the correctly conjugated forms of words depending on a count that is associated
// with that word.
// This intended to allow phrases such a '0 potatoes', '1 potato', '2 potatoes' etc to
// conjugate correctly with the associated count.
// In some languages such as English this is fairly simple and can be expressed by assigning
// a count with a singular or plural form of a word and then finding the nearest (lower) value.
// So '0' of something generally ends in 's', 1 of something is singular and has no extra
// ending and 2 or more is a plural and ends in 's' also. So to find the ending for '187' of
// something you would find the nearest lower count (2) and use that ending.
//
// So examples of this would be
// $zmVlangPotato = array( 0=>'Potatoes', 1=>'Potato', 2=>'Potatoes' );
// $zmVlangSheep = array( 0=>'Sheep' );
//
// where you can have as few or as many entries in the array as necessary
// If your language is similar in form to this then use the same format and choose the
// appropriate zmVlang function below.
// If however you have a language with a different format of plural endings then another
// approach is required . For instance in Russian the word endings change continuously
// depending on the last digit (or digits) of the numerator. In this case then zmVlang
// arrays could be written so that the array index just represents an arbitrary 'type'
// and the zmVlang function does the calculation about which version is appropriate.
//
// So an example in Russian might be (using English words, and made up endings as I
// don't know any Russian!!)
// $zmVlangPotato = array( 1=>'Potati', 2=>'Potaton', 3=>'Potaten' );
//
// and the zmVlang function decides that the first form is used for counts ending in
// 0, 5-9 or 11-19 and the second form when ending in 1 etc.
//
// Variable arrays expressing plurality, see the zmVlang description above
$zmVlangEvent = array( 0=>'Zdarzeñ', 1=>'Zdarzenie', 2=>'Zdarzenia' ); $zmVlangEvent = array( 0=>'Zdarzeñ', 1=>'Zdarzenie', 2=>'Zdarzenia' );
$zmVlangMonitor = array( 0=>'Monitorów', 1=>'Monitor', 2=>'Monitory' ); $zmVlangMonitor = array( 0=>'Monitorów', 1=>'Monitor', 2=>'Monitory' );
// You will need to choose or write a function that can correlate the plurality string arrays
// with variable counts. This is used to conjugate the Vlang arrays above with a number passed
// in to generate the correct noun form.
//
// In languages such as English this is fairly simple
// Note this still has to be used with printf etc to get the right formating
function zmVlang( $lang_var_array, $count )
{
krsort( $lang_var_array );
foreach ( $lang_var_array as $key=>$value )
{
if ( abs($count) >= $key )
{
return( $value );
}
}
die( 'Error, unable to correlate variable language string' );
}
// This is an version that could be used in the Russian example above
// The rules are that the first word form is used if the count ends in
// 0, 5-9 or 11-19. The second form is used then the count ends in 1
// (not including 11 as above) and the third form is used when the
// count ends in 2-4, again excluding any values ending in 12-14.
//
// function zmVlang( $lang_var_array, $count )
// {
// $secondlastdigit = substr( $count, -2, 1 );
// $lastdigit = substr( $count, -1, 1 );
// // or
// // $secondlastdigit = ($count/10)%10;
// // $lastdigit = $count%10;
//
// // Get rid of the special cases first, the teens
// if ( $secondlastdigit == 1 && $lastdigit != 0 )
// {
// return( $lang_var_array[1] );
// }
// switch ( $lastdigit )
// {
// case 0 :
// case 5 :
// case 6 :
// case 7 :
// case 8 :
// case 9 :
// {
// return( $lang_var_array[1] );
// break;
// }
// case 1 :
// {
// return( $lang_var_array[2] );
// break;
// }
// case 2 :
// case 3 :
// case 4 :
// {
// return( $lang_var_array[3] );
// break;
// }
// }
// die( 'Error, unable to correlate variable language string' );
// }
// This is an example of how the function is used in the code which you can uncomment and
// use to test your custom function.
//$monitors = array();
//$monitors[] = 1; // Choose any number
//echo sprintf( $zmClangMonitorCount, count($monitors), zmVlang( $zmVlangMonitor, count($monitors) ) );
// In this section you can override the default prompt and help texts for the options area
// These overrides are in the form of $zmVarOlangPrompt<option> and $zmVarOlangHelp<option>
// where <option> represents the option name minus the initial ZM_
// So for example, to override the help text for ZM_LANG_DEFAULT do
// $zmVarOlangPromptLANG_DEFAULT = "This is a new prompt for this option";
// $zmVarOlangHelpLANG_DEFAULT = "This is some new help for this option which will be displayed in the popup window when the ? is clicked";
//
?> ?>