2012-03-11 4 views
1

Я пытаюсь сделать так, чтобы мое приложение facebook было доступно на английском и японском языках.Возможно ли иметь приложение Facebook на нескольких языках?

Я попытался с помощью тегов, но не мог заставить их работать: http://developers.facebook.com/docs/internationalization/

Я тогда думал, что я просто сделать две версии приложения, один на английском языке, а другой на японском языке. Когда я открываю свое приложение, отображается окно разрешения oauth. Я одобряю приложение, а затем он переносит меня на страницу, которая продолжает цикл, каждый раз создавая новый $ _GET ['code']. Затем я нажимаю «facebook» в верхнем левом углу экрана. Затем я снова нажимаю на свое приложение, и на этот раз я могу получить доступ к нему на английском или японском языках. Как я могу остановить приложение в первый раз? Как я могу перейти непосредственно к версии приложения на основе локали пользователей? Спасибо

<?php 

function parse_signed_request($signed_request, $secret) { 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    // decode the data 
    $sig = base64_url_decode($encoded_sig); 
    $data = json_decode(base64_url_decode($payload), true); 

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
    error_log('Unknown algorithm. Expected HMAC-SHA256'); 
    return null; 
    } 

    // check sig 
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
    if ($sig !== $expected_sig) { 
    error_log('Bad Signed JSON signature!'); 
    return null; 
    } 

    return $data; 
} 

function base64_url_decode($input) { 
    return base64_decode(strtr($input, '-_', '+/')); 
} 

$result = parse_signed_request($_REQUEST['signed_request'],"app_secret"); 
$locale = $result['user']['locale']; 
$token = $result['oauth_token']; 

if ($token != ""){ 
    if ($locale == "ja_JP"){ 
     if ($_SERVER['HTTPS']){ 
      header("Location: https://secure.example.com/facebook/ja/index.php"); 
      exit; 
     } 
     else { 
      header("Location: http://example.com/facebook/ja/index.php"); 
      exit; 
     } 
    } 
    else{ 
     if ($_SERVER['HTTPS']){ 
      header("Location: https://secure.example.com/facebook/en/index.php"); 
      exit; 
     } 
     else { 
      header("Location: http://example.com/facebook/en/index.php"); 
      exit; 
     } 
    } 
} 
else { 

    if($_SERVER['HTTPS']){ 
     $canvas_page = "https://secure.example.com/facebook/"; 
    } 
    else { 
     $canvas_page = "http://example.com/facebook/"; 
    } 
    $app_id = "my_app_id"; 
    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email"; 
    $signed_request = $_REQUEST["signed_request"]; 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 
    echo("<script> top.location.href='" . $auth_url . "'</script>"); 
    exit; 

} 

?> 

ответ

2

Вы можете поместить все свои тексты в простой локальный массив. Сначала нужно получить локаль пользователя, а затем использовать его в качестве ключа

$loc["ja_JP"]["MyText"] = "My JP text"; 
$loc["en_US"]["MyText"] = "My US text"; 

$result = parse_signed_request($_REQUEST['signed_request'],"app_secret"); 
$locale = $result['user']['locale']; 

echo $loc[$locale]["MyText"]; 

Для ресурсов (конкретных локализованных картинок, например), вы можете получить файлы в каталоге локали основе.

Смежные вопросы