Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E ae galera tudo bom?
Então... to cá com um probleminha que não consigo entender o porque ta dando errado
Tenho essa função:
function get_action_translation($str){
$translate = array(
"became a registered member"=>__("became a registered member","bwb"),
"commented on"=>__("commented on","bwb")
);
foreach($translate as $field => $val){
if($field == $str){
$str = $val;
}
}
return $str;
}
O que ela vai fazer é que no __("Texto vai aqui","bwb");
Isso ai vai gerar uma tradução dos textos que estão ali....
Então aquele valor pode estár em xineis.. japonês... ou seja lá a lingua que ele deve estar
E o que eu queria é pela string comparar o valor do campo a key com a string que eu tenho.
Na teoria ta tudo certo... agora na pratica não rola... ele não consegue fazer a comparação
Alguem ai saberia o que ta faltando??
abraços
Não da erro algum.....
Ele simplesmente passa reto no if....
Ele não faz a comparação
nem mesmo se eu fizer
$translate[$str];
Eu não consigo o valor daquele campo... ele retorna vazio como se não existi-se...
E existe!!!
:(
HElp? :P
<?php
function get_action_translation($str){
$translate = array(
"became a registered member"=>"became a registered member","bwb",
"commented on"=>"commented on","bwb"
);
foreach($translate as $field => $val){
if($field == $str){
$str = $val;
}
}
echo $str;
return $str;
}
get_action_translation("became a registered member");
?>
minha saida foi 'bwb'
Acontece que não pode tirar o BWB
Porque o que ta ali é uma função de tradução
Ou seja a array na verdade é isso:
$translate = array(
"become a registerd member" => __("become a registerd member","bwb")
);
print_r($tranlate);
output:Array([become a registerd member] => "se registrou como membro")
Entendeu???
O que eu quero é comparar a key e não o valor...
Abraços
Mais esse seu array me retorna erro aqui
Fatal error: Call to undefined function __()
acho que o certo seria assim
<?php
function get_action_translation($str){
$translate = array(
"become a registered member" => "become a registerd member" , "bwb",
"commented on"=>"bwb"
);
foreach( $translate as $field => $val ){
if( $field == $str )
{
$str = $field . $val;
}
}
return $str;
}
echo get_action_translation("become a registered member") ;
?>
Minha Saida Foi
print_r
Array ( [become a registered member] => become a registerd member [0] => bwb [commented on] => bwb )
echo
0bwb
Eu sei que você não tem a função __()
Pq ela é a função de tradução do wordpress...
Ela não pode sair dali... o primeiro valor é a frase a ser traduzida e o segundo é o catalogo referente.
Bom vo continua pesquisando...
Aparentemente o que ta acontecendo é que a string q eu to enviando não ta sendo considerada string...
-------------- EDITED -----------------
Acheiiiiii meu erro.....
A string que tava sendo passada tava com espaço antes e depois...
usei trim()
E tudo resolvido o/
abraços
bem você falo que quer comparar a chave , esse tipo de array é ruim usar chave => chave => valor ???
o certo não seria assim ?
function get_action_translation($str){
$translate = array(
"become a registered member" => "bwb",
"commented on"=>"bwb"
);
foreach( $translate as $key => $val )
{
if( $key == $str )
{
$str = $key .' : '. $val;
return $str;
}
}
}
echo get_action_translation("commented on");
Saida:
commented on : bwb
Não...
Minha função estava correta desde o inicio... o problema era a string que estava vindo com espaços antes e depois
O problema já foi resolvido ;)
vlw abraços
Qual o erro ?