Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago de Oliveira Cruz

[Resolvido] Tradução de strings

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?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'

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.