| 
<?php
 $cases = [
 'key'                            => [
 'en' => 'a key',
 'it' => 'una chiave',
 ],
 'key_no_fallback'                => [
 'en' => 'not exists in language, return a key from fallback',
 ],
 // deep
 'key_deep'                       => [
 'en' => [
 'deep' => [
 'deep' => 'key deep',
 ],
 ],
 'it' => [
 'deep' => [
 'deep' => 'chiave deep',
 ],
 ],
 ],
 'key_inline.deep.inline'         => [
 'en' => 'key deep in line',
 'it' => 'chiave deep in linea',
 ],
 
 // context
 'key_context'                    => [
 'en' => 'key with context',
 'it' => 'chiave con contesto',
 ],
 // replacer
 'key_interpolate'                => [
 'en' => '{{what}} is {{how}}',
 'it' => '{{what}} è {{how}}',
 ],
 // replacer
 'key_interpolate_array'          => [
 'en' => 'I am {{author.name}} and i have {{author.age}} years old',
 'it' => 'Io sono {{author.name}} ed ho {{author.age}} anni',
 ],
 // simple plurals
 'friend'                         => [
 'en' => 'A friend',
 'it' => 'Un conoscente',
 'ro' => 'Un prieten',
 ],
 'friend_male'                    => [
 'en' => 'A boyfriend',
 'it' => 'Un amico',
 ],
 'friend_female'                  => [
 'en' => 'A girlfriend',
 'it' => "Un'amica",
 ],
 'friend_male_plural'             => [
 'en' => 'boyfriends',
 'it' => 'amici',
 ],
 'friend_female_plural'           => [
 'en' => 'girlfriends',
 'it' => 'amiche',
 ],
 'friend_male_withCount_plural'   => [
 'en' => '{{count}} boyfriends',
 'it' => '{{count}} amici',
 ],
 'friend_female_withCount_plural' => [
 'en' => '{{count}} girlfriends',
 'it' => '{{count}} amiche',
 ],
 // unescape
 'key_escaped'                    => [
 'en' => 'no danger {{myVar}}',
 ],
 'key_unescaped'                  => [
 'en' => 'no danger {{-myVar}}',
 ],
 // format
 'key_format_date'                => [
 'en' => 'The current date is {{date, MM/DD/YYYY}}',
 ],
 'key_format_uppercase'           => [
 'en' => '{{text, uppercase}} just uppercased',
 ],
 'key_format_lowercase'           => [
 'en' => '{{text, lowercase}} just lowercased',
 ],
 'key_format_ucfirst'             => [
 'en' => '{{text, ucfirst}} just ucfirst',
 ],
 // multiple plural syntax
 'key_0'                          => ['en' => 'zero'],
 'key_1'                          => ['en' => 'one'],
 'key_2'                          => ['en' => 'two'],
 'key_3'                          => ['en' => 'few'],
 'key_4'                          => ['en' => 'many'],
 'key_5'                          => ['en' => 'other'],
 // nesting simple
 'nesting1'                       => ['en' => '1 $t(nesting2)'],
 'nesting2'                       => ['en' => '2 $t(nesting3)'],
 'nesting3'                       => ['en' => '3'],
 // nesting complex
 'girlsAndBoys'                   => ['en' => '$t(girls, {"count": {{girls}} }) and {{count}} boy'],
 'girlsAndBoys_plural'            => ['en' => '$t(girls, {"count": {{girls}} }) and {{count}} boys'],
 'girls'                          => ['en' => '{{count}} girl'],
 'girls_plural'                   => ['en' => '{{count}} girls'],
 // nesting value + interpolate
 'key_nesting_interpolate1'       => ['en' => 'hello world'],
 'key_nesting_interpolate2'       => ['en' => 'say {{val}}'],
 //
 'test_other_language'            => [
 'en' => 'other language',
 'it' => 'altro linguaggio',
 'ro' => 'alta limba',
 ],
 'test_other_language_single_key' => [
 'ro' => 'alta limba',
 ],
 'atk4_model' => [
 'en' => 'user : {{first_name}} {{last_name}} with email : {{email}}',
 'it' => 'utente : {{first_name}} {{last_name}} con email : {{email}}',
 ],
 'atk4_model_object' => [
 'en' => 'user : {{user.first_name}} {{user.last_name}} with email : {{user.email}}',
 'it' => 'utente : {{user.first_name}} {{user.last_name}} con email : {{user.email}}',
 ],
 'atk4_model_object2' => [
 'en' => 'user : {{user.first_name}} {{user.last_name}} with email : {{address.email}}',
 'it' => 'utente : {{user.first_name}} {{user.last_name}} con email : {{address.email}}',
 ],
 'key4_interval' => [
 'en' => '(1){one item};(2-7){a few items};(7-inf){a lot of items};',
 ],
 ];
 
 $path_def = [];
 foreach ($cases as $key => $code_def) {
 foreach ($code_def as $code => $def) {
 $chunk3 = substr($key, 0, 3);
 switch ($chunk3) {
 case 'gir':
 case 'fri':
 $file_name = 'friend';
 break;
 case 'nes':
 $file_name = 'nesting';
 break;
 case 'tes':
 $file_name = 'other_test';
 break;
 case 'key':
 $file_name = 'key';
 break;
 
 case 'atk':
 $file_name = 'atk';
 break;
 default:
 $file_name = $key;
 $key = key($def);
 $def = current($def);
 break;
 }
 
 $path_def[$code.'/'.$file_name.'.json'][$key] = $def;
 }
 }
 
 $namespaced = [
 'namespace1' => [
 'en' => ['nskey' => 'namespace1 key'],
 'it' => ['nskey' => 'namespace1 chiave'],
 ],
 'namespace2' => [
 'en' => ['nskey' => 'namespace2 key'],
 'it' => ['nskey' => 'namespace2 chiave'],
 ],
 'namespace3' => [
 'en' => ['nskey' => 'namespace3 key'],
 'it' => ['nskey' => 'namespace3 chiave'],
 ],
 ];
 
 foreach ($namespaced as $namespace => $code_def) {
 foreach ($code_def as $code => $def) {
 foreach ($def as $key => $value) {
 $path_def[$code.'/'.$namespace.'.json'][$key] = $value;
 }
 }
 }
 
 |