Php data multilíngüe: como?

Nota: esta não é uma duplicata deTraduzindo PHP data () para o site multilíngüe . Eu li isso!

Desculpe, primeiro preciso explicar como meu framework funciona, para que você possa entender precisamente onde está meu problema:

Veja como funciona o meu código PHP (princípios aproximados). Vamos usar por exemplo alguém que queira ver o URLhttp://myweb.com/valid.php:

no arquivovalid.php o código inclui a definição de classes correta, então crie um objeto e chame a funçãodisplay() que exibe a página.no arquivovalid.php, quando o objeto é criado, ele analisa o host, e no host há o idioma (http://us.myweb.com/, http://cn.myweb.com/, http://fr.myweb.com/...) e o idioma padrão (se nenhum for encontrado) é o inglêsentão eu carrego um arquivo Php em cache onde estão as traduções. Isto é umtranslation objeto, que eu estou chamando$t abreviadoe de agora em diante, sempre que eu quero uma tradução, eu apenas faço coisas como$t->get('my_string').

Vamos dar um exemplo com o arquivo de 2 idiomas:

2 arquivos de idiomas:cache.us.php ecache.fr.phpemcache.us.php você tem uma linha como esta:$thanks_for_the_fish = "Thanks for the fish".emcache.fr.php você tem uma linha como esta:$thanks_for_the_fish = "Merci pour le poisson".Eu construo minha página, incluo o arquivo de idioma correto e, em seguida, chamo$t->get('thanks_for_the_fish') e é traduzido.

Agora meu problema vem com formatação de data. Com formato de data abreviada, não é um problema:

emcache.us.php: $short_date_format = "m/d/Y, H:i".emcache.fr.php: $short_date_format = "d/m/Y à H:i".

Mas comlongo formato de data, estou apenas trabalhando em francês e comecei com algo como:

emcache.fr.php: $long_date_format = "%s, %d %s %d".então todos os dias:$sunday = "dimanche", $monday = "lundi" e assim por dianteentão no meu código de tradução:

Algo parecido com isto (leia atentamente o comentário no código, a minha pergunta está nele!):

static private $_TabStrDaysOfWeek = array(
    0 => 'sunday',
    1 => 'monday',
    ...,
    6 => 'saturday'
);
public function translateDate($date_time)
{
    $long_day = $this->tr->get(
        $this->_TabStrDaysOfWeek[ $date_time->format('w') ]
    );
    /*

    here's where I'm stuck:
    what could be the code to be able to display:
    - english:
      Monday, 1st September 2006
      Tuesday, 2nd September 2006
      Wednesday, 3rd September 2006
      Thursday, 4th September 2006

    - french:
      Lundi, 1 septembre 2006
      Mardi, 2 septembre 2006
      Mercredi, 3 septembre 2006
      Jeudi, 4 septembre 2006

    - arabian!!:
      1 - Don't know
      2 - Don't know
      3 - Don't know
      4 - Don't know
    */
}

... E eu disse arabian porque vou precisar disso mais cedo ou mais tarde, mesmo para mandarim. Todos os meus outros problemas de tradução estão resolvidos, mas este aqui !!

Qualquer ideia?

questionAnswers(3)

yourAnswerToTheQuestion