我只需要使用一系列键及其翻译进行简单的字符串翻译(url)。
尝试这样:
function ruta_iso( $ruta ) {
$slugs = array(
'noticia' => array(
'es' => 'noticia',
'en' => 'post'
),
'pregunta' => array(
'es' => 'pregunta',
'en' => 'question'
),
'consejo' => array(
'es' => 'consejo',
'en' => 'tip'
),
'noticias' => array(
'es' => 'noticias',
'en' => 'news'
)
);
$idioma_defecto = 'es';
$idioma = 'en' ;
if ( ($idioma != $idioma_defecto) && ($ruta == '/') ) {
return "/$idioma";
} else if( $idioma != $idioma_defecto ){
foreach($slugs as $key => $slug){
if ( ( strpos("/$key/", $ruta ) === false ) ){
}else {
$ruta = str_replace( "/$key/", '/'.$slug[$idioma].'/' , $ruta );
}
}
$ruta = "/$idioma$ruta";
} else {
}
return $ruta;
}
echo '-------Ruta Iso '.ruta_iso('/noticias/'); /* Works! */
echo ' -------Ruta Iso '.ruta_iso('/noticias/noticia/'); /* Nope.. */
可以在这里测试:
似乎是为一个子弹做了这个工作,但是如果不止一个,那就不行了,甚至:
echo ' -------Ruta Iso '.ruta_iso('/noticias/blabla/'); /* Nope.. */
所以我不确定如何尝试,我的意思是,我没有打破foreach,为什么不检查每个字符串?
任何toghts?
答案 0 :(得分:1)
您也可以尝试这样做:
function ruta_iso( $ruta = '') {
$slugs = array(
'noticia' => array(
'es' => 'noticia',
'en' => 'post'
),
'pregunta' => array(
'es' => 'pregunta',
'en' => 'question'
),
'consejo' => array(
'es' => 'consejo',
'en' => 'tip'
),
'noticias' => array(
'es' => 'noticias',
'en' => 'news'
)
);
$idioma_defecto = 'es';
$idioma = 'en' ;
foreach( explode('/', $ruta) as $data){
if( !empty($data) ){
if( array_key_exists($data, $slugs)){
$result[] = $slugs[$data][$idioma];
}else{
$result[] = $data;
}
}
}
$result = '/'.$idioma.'/'.implode('/', $result).'/';
return $result;
}
echo '-------Ruta Iso '.ruta_iso('/noticias/');
echo ' -------Ruta Iso '.ruta_iso('/noticias/noticia/');
echo '-------Ruta Iso '.ruta_iso('/noticias/noticia/the-new');
结果:
-------Ruta Iso /en/news/ -------Ruta Iso /en/news/post/
-------Ruta Iso /en/news/post/the-new/