Nasıl javascript kodu kullanılan dize uluslar arası?

4 Cevap php

AJAX programını geliştirirken, ben JavaScript.code dize I18N yapmak için tasarım kararını görüştü. Bazı dize yalnızca JavaScript tarafından kullanılır. Örneğin,.

$('#submit').click(function() {
    $(#target).html('Please wait while submitting...').load(someURI);
}

'Göndererek lütfen bekleyin ...' Ben dize I18N istiyorum. Bunu yapmak için en iyi yolu nedir emin değilim. Şu anda, ben sadece sunucu dize I18N-ed ve (PHP / wordpress kullanıyorum) sayfasında bir javascript değişken çevrildi.

<script>strSubmit = <?php  _e('Please wait while submitting...'); ?></script>

Sonra, javascript, ben sadece varialble kullanın

$('#submit').click(function() {
    $(#target).html(strSubmit).load(someURI);
}

Bu çalışır, ama dağınık görünüyor. Bunu başarmak için daha iyi bir yolu var mı?

4 Cevap

Ayrıca javascript için bir php "önişlemci" kullanarak bu otomatikleştirmek

<script src="script.php?file=blah.js">

script.php gibi bir şey olduğu

	function _repl($x) { return '"' . _e($x[1]) . '"'; }

	$js = file_get_contents($_GET['file']);
	$js = preg_replace_callback('~_e\("(.+?)"\)~', '_repl', $js);
	echo $js;

Bu şeffaf gerçek dizeleri ile javascript kodu _e(something) yerini alacak

Sen bir JSON nesnesi sunucu tarafı l10n dizeleri dönüştürmek için JSON kullanmalısınız:

// In the <head> tag :
<script type="text/javascript" src="locales.php"></script>

ve locales.php bu:

var l10n = <?php echo json_encode($l10n); ?>;

$ l10n bu gibi tüm yerel ayarları içeren bir dizi olduğu:

$l10n = array(
  'Please wait while submitting...' => 'Veuillez patienter durant le traitement...',
  'bah' => 'bih'
);

Şimdi JS Bu gibi bu dizeleri kullanabilirsiniz:

function $T(s){
  return l10n[s] || s;
}

alert($T('Please wait while submitting...'));

Sen orijinal senaryoda kendisini içine metin oluşturmak olabilir.

$('#submit').click(function() {
    $(#target).html('<?php  _e('Please wait while submitting...'); ?>').load(someURI);
}

Eğer bir servis belge yük javascript dizeleri unsurları doldurmak DİNLENME uygulamasının tür, oluşturabilirsiniz:

$(function(){
   var handleResponse = function.....; // fill your string elements from response
   var lang = "fr"; // language of localized document

   $.ajax(
       type: "GET",
       url: "/i18n.php?lang=" + lang + "&names=someName+someName1+someName2",
       success: handleResponse
   ); 
});