2010-05-13 9 views
-1

Je fusionne deux versions différentes d'un tableau de traductions. La version la plus récente a beaucoup de changements, sur plusieurs milliers de lignes de code. Pour cela, j'ai chargé et évalué le nouveau fichier (qui utilise la même structure et les mêmes noms de clé), puis chargé et évalué l'ancienne version, écrasant les nouvelles valeurs non traduites du tableau avec les valeurs que nous avons déjà traduites.Construction de variables en écho au lieu du contenu

Jusqu'ici tout va bien! Cependant, je veux pouvoir renvoyer le constructeur pour ce nouveau tableau fusionné afin que je puisse le couper et le coller dans le nouveau fichier de traduction, et que le travail soit fait (mis à part le reste des traductions). .

Le code ressemble à ceci (beaucoup de clés différentes, non seulement l'index):

$lang["index"]["chart1_label1"] = "Subscribed"; 
$lang["index"]["chart1_label2"] = "Unsubscribed"; 

Et le vieux ..

$lang["index"]["chart1_label1"] = "Subscrito"; 
$lang["index"]["chart1_label2"] = "Não subscrito"; 

Après avoir chargé les deux fichiers, je finis avec un fusionné $ lang array, que je veux ensuite renvoyer sous la même forme, afin qu'il puisse être utilisé par le projet.

Cependant, quand je fais quelque chose comme ça ..

foreach ($lang as $key => $value) { 
    if (is_array($value)) { 
     foreach ($value as $key2 => $value2) { 
      echo "$lang['".$key."']"; // ... etc etc 
     } 
    } 
} 

..obviously je reçois "ArrayIndex" etc etc au lieu de "$ lang". Comment faire écho $ lang sans qu'il soit évalué ..? Une fois que cela fonctionne, peut ajouter dans le reste des parenthèses etc (je réalise qu'ils sont manquants), mais je veux juste faire fonctionner cette partie en premier.

S'il y a une meilleure façon de faire cela, toutes les oreilles aussi!

Merci.

modifier:

ce que je cherchais vraiment était this:

« Note: Contrairement aux trois autres syntaxes, les variables et séquences d'échappement pour les caractères spéciaux ne pas être développés quand ils se produisent dans guillemets simples. "

Donc pas besoin de s'échapper. Peut-être utile un jour pour quelqu'un ... à propos de la fusion des tableaux, il y a une grande fonction de fusion de tableaux récursifs sur la page de manuel de PHP pour array_merge(), qui est également très pratique.

Merci à tous ceux qui ont downvoted! Je t'aime aussi.

Répondre

1

Soit échapper à la $: "\$lang" ou utiliser des guillemets simples: '$lang'

Notez que vous n'avez pas vraiment besoin d'afficher une page entière de trame de fond, si votre question entière se résume simplement à « comment puis-je sortir un signe du dollar en PHP "

+1

Saviez-vous que c'était quelque chose de simple, merci. Le point de mettre le problème dans son contexte est que ce n'est pas seulement "comment duz i maek hamburger", mais peut-être quelqu'un connaît une meilleure technique pour faire exactement la même chose. Je pensais que la discussion était le point de forums ..? ;) – dmp

1

il ya var_export() fonction, mais je ne comprends pas le but de ce gâchis terrible.
Tout est trop ...manuel

pourquoi ne pas utiliser un gettext - une norme de l'industrie pour le site en plusieurs langues?

ou au moins un autre format, plus fiable que celui de PHP?
Le code de programmation est et non conçu pour être écrit automatiquement.

+0

Gettext est génial jusqu'à ce que vous vouliez laisser quelqu'un qui n'a aucune connaissance technique (c'est-à-dire des clients) l'éditer. Ensuite, vous réalisez que vous êtes en proie à de profonds problèmes. Merci pour l'astuce var_export(), je vais chercher. – dmp

+0

En outre, ce n'est pas mon code, je vais personnellement avec XML pour ce genre de choses ... – dmp

+0

Je ne pense pas qu'un groupe de baies PHP est plus idiot que les fichiers .po. –