Many PHP programs make use of a localisable string array. The toolkit supports the full localisation of such files with php2po and po2php.
Our format support allows:
Single and double quoted strings (both for keys and values)
<?php
$variable = 'string';
$messages["language"] = 'Language';
define('item', "another string");
PHP simple variable syntax
<?php
$variable = 'string';
$another_variable = "another string";
PHP square bracket array syntax
<?php
$messages['language'] = 'Language';
$messages['file'] = "File";
$messages["window"] = 'Window';
$messages["firewall"] = "Firewall";
PHP array syntax
New in version 1.7.0.
<?php
// Can be 'array', 'Array' or 'ARRAY'.
$lang = array(
'name' => 'value',
'name2' => "value2",
"key1" => 'value3',
"key2" => "value4",
);
PHP define syntax
New in version 1.10.0.
<?php
define('item', 'string');
define('another_item', "another string");
define("key", 'and another string');
define("another_key", "yet another string");
New in version 2.3.0.
<?php
$variable = [
"foo" => "bar",
"bar" => "foo",
];
New in version 2.3.0.
<?php
$variable = <<<EOT
bar
EOT;
New in version 2.3.0.
<?php
$variable = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;
Escape sequences (both for single and double quoted strings)
<?php
$variable = 'He said: "I\'ll be back"';
$another_variable = "First line \n second line";
$key = "\tIndented string";
Multiline entries
<?php
$lang = array(
'name' => 'value',
'info' => 'Some hosts disable automated mail sending
on their servers. In this case the following features
cannot be implemented.',
'name2' => 'value2',
);
Various layouts of the id
<?php
$string['name'] = 'string';
$string[name] = 'string';
$string[ 'name' ] = 'string';
Comments
Changed in version 1.10.0.
<?php
# Hash one-line comment
$messages['language'] = 'Language';
// Double slash one-line comment
$messages['file'] = 'File';
/*
Multi-line
comment
*/
$messages['help'] = 'Help';
Whitespace before end delimiter
New in version 1.10.0.
<?php
$variable = 'string' ;
$string['name'] = 'string' ;
$lang = array(
'name' => 'value' ,
);
define('item', 'string' );
Nested arrays with any number of nesting levels
New in version 1.11.0.
<?php
$lang = array(
'name' => 'value',
'datetime' => array(
'TODAY' => 'Today',
'YESTERDAY' => 'Yesterday',
'AGO' => array(
0 => 'less than a minute ago',
2 => '%d minutes ago',
60 => '1 hour ago',
),
'Converted' => 'Converted',
'LAST' => 'last',
),
);
Whitespace in the array declaration
New in version 1.11.0.
<?php
$variable = array (
"one" => "this",
"two" => "that",
);
Blank array declaration, then square bracket syntax to fill that array
New in version 1.12.0.
<?php
global $messages;
$messages = array();
$messages['language'] = 'Language';
$messages['file'] = 'File';
Unnamed arrays:
New in version 2.2.0.
<?php
return array(
"one" => "this",
);
Array entries without ending comma:
New in version 2.3.0.
<?php
$variable = array(
"one" => "this",
"two" => "that"
);
Array entries with space before comma:
New in version 2.3.0.
<?php
$variable = array(
"one" => "this",
"two" => "that" ,
);
Nested arrays declared on the next line:
New in version 2.3.0.
<?php
$variable = array(
"one" =>
array(
"two" => "dous",
),
);
Nested arrays with blank entries:
New in version 2.3.0.
<?php
$variable = array(
"one" => array(
"" => "",
"two" => "dous",
),
);
Strings with slash asterisk on them:
New in version 2.3.0.
<?php
$variable = array(
'foo' => 'Other value /* continued',
);
Array entries with value on next line:
New in version 2.3.0.
<?php
$variable = array(
'foo' =>
'bar',
);
Array defined in a single line:
New in version 2.3.0.
<?php
$variable = array( 'item1' => 'value1', 'item2' => 'value2', 'item3' => 'value3' );
Keyless arrays:
New in version 2.3.0.
<?php
$days = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
Nested arrays without key for a nested array:
New in version 2.3.0.
<?php
$lang = array(array("key" => "value"));
Concatenation of strings and variables:
New in version 2.3.0.
<?php
$messages['welcome'] = 'Welcome ' . $name . '!';
$messages['greeting'] = 'Hi ' . $name;
Assignment in the same line a multiline comment ends:
New in version 2.3.0.
<?php
/*
Multi-line
comment
*/ $messages['help'] = 'Help';
The following are not yet supported:
Keyless arrays assigned to another array:
<?php
$messages['days_short'] = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');