gettext의 링크로 텍스트를 작성하는 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1484941

  •  18-09-2019
  •  | 
  •  

문제

저는 현재 PHP를 사용하여 gettext로 국제화를 수행하고 있습니다.이 예에 대한 좋은 방법이 있는지 궁금합니다.

By using this website, you accept the <a href="<?php print($dir); ?>/tos/">Terms of Use</a>.

en_US의 경우 이 문장은 이러한 형식을 따릅니다.그러나 다른 언어에서는 "이용 약관" 링크가 문장의 시작 부분에 있을 수 있습니다.이를 수행하는 우아한 방법이 있습니까?시간 내 줘서 고마워.

도움이 되었습니까?

해결책

내가 할 방법은 다음과 같습니다.번역할 문구는 다음과 같습니다.

By using this website, you accept the <a>Terms of Use</a>.

그런 다음 문구가 현지화되면 링크를 교체합니다.

$str = _('By using this website, you accept the <a>Terms of Use</a>.');
$str = preg_replace('#<a>(.*?)</a>#', '<a href="' . $dir . '/tos/">$1</a>', $str);

물론 교체도 가능해요 <a> 그리고 </a> 귀하와 귀하의 번역가에게 의미가 있는 것은 무엇이든 가능합니다.생각해보면 번역가가 HTML을 (의도했든 아니든) 망치는 것을 방지하기 위해 출력을 이스케이프 처리해야 하기 때문에 아마도 다음과 같은 것을 사용할 것입니다.

$str = htmlspecialchars(_('By using this website, you accept the [tos_link]Terms of Use[/tos_link].'));
$str = preg_replace('#\\[tos_link\\](.*?)\\[/tos_link\\]#', '<a href="' . $dir . '/tos/">$1</a>', $str);

다른 팁

간단한 국제화를 위해서는 언어 당 배열을 만들고, 적절한 파일을 포함시키고, 당신이하는 일을하는 것보다 해당 배열에 액세스 할 수 있습니다.

en.php :

$text = array(
     'footer' => 'By using this website, you accept the <a href="' . $dir . '/tos/">Terms of Use</a>.',
     'welcome' => 'Welcome to our website!'
);

index.php :

$langdir = '/path/to/languages';
$lang = ( $_GET['lang'] ) ? $langdir . '/' . $_GET['lang'] . '.php' : $langdir . '/en.php';
if( dirname($lang) != $langdir || !require_once( $lang ) )
     exit('Language does not exist');

echo '<p class="footer">' . $text['footer'] . '</p>';

그만큼 dirname() 전화는 중요합니다. 그렇지 않으면 사용자는 파일 시스템의 모든 PHP 파일에 대한 액세스 할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top