Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript翻译日期?_Javascript_Jquery_Datetime - Fatal编程技术网

使用Javascript翻译日期?

使用Javascript翻译日期?,javascript,jquery,datetime,Javascript,Jquery,Datetime,我有一个大大超出预算的项目,我正试图找到最快的解决方案。基本上,我有一个多语种的网站,用英语以以下格式输出日期: 一月一日 2011年1月1日 显然每个月有12个选项,但是我只需要翻译几个月,而不是一周中的几天或几天。此外,由于我最初是从PHP回显这些日期,因此生成的HTML是100%可预测的,只有24个可能的返回值-1月、2月、3月12个,1月、2月、3月12个。。。等等 我已经听说过PHPstrotime()和setlocale()。我知道这可能有点僵硬,但是有没有一种方法可以在使用jQ

我有一个大大超出预算的项目,我正试图找到最快的解决方案。基本上,我有一个多语种的网站,用英语以以下格式输出日期:

  • 一月一日
  • 2011年1月1日
显然每个月有12个选项,但是我只需要翻译几个月,而不是一周中的几天或几天。此外,由于我最初是从PHP回显这些日期,因此生成的HTML是100%可预测的,只有24个可能的返回值-1月、2月、3月12个,1月、2月、3月12个。。。等等

我已经听说过PHP
strotime()
setlocale()
。我知道这可能有点僵硬,但是有没有一种方法可以在使用jQuery之后直接将被吐出的PHP字符串翻译出来。我要做的是将脚本包装在一个PHP条件中,该条件检查
if(ICL\u LANGUAGE\u code=='fr'){}

如果通过PHP有一个非常简单的方法,我会对它开放,但到目前为止,我已经从社区得到了响应,但是它们都太耗时,而且在很多情况下,我没有考虑其他变量,为了简洁起见,这里我没有解释。

另外,为了清楚起见,我会说我正在使用jQuery,它已经加载到站点上了

编辑


我不关心这个的日期语法,例如,我可以这样做:
if(English){date('fj,Y');}else(FR){date('j')。'.date('F'),'.date('Y')}
所以,我唯一的问题是翻译月份名称。另外,这是用于“即将到来的事件”,因此我不尝试回显当前的日期/时间,而是带有PHP时间戳的未来日期/时间。

要解析或显示,请尝试 处理本地化并具有多种类型的配置设置。

尝试以下方法:

在mons.txt的内部:

EN, Jan, Feb, Mar, Apr, May, June, July, Aug, Sept, Oct, Nov, Dec
FR, janv, fevr, mars, avril, mai, juin, juil, aout, sept, oct, nov, dec
DE, Jan, Feb, Marz, Apr, Mai, Juni, Juli, Aug, Sept, Okt, Nov, Dez
IT, genn, febbr, mar, apr, magg, giugno, luglio, ag, sett, ott, nov, dic
ES, enero, feb, marzo, abr, mayo, jun, jul, agosto, set, oct, nov, dic
NL, Jan, Feb, Mar, Apr, Mei, Juni, Juli, Aug, Sept, Oct, Nov, Dec
月内。txt:

EN, January, February, March, April, May, June, July, August, September, October, November, December
FR, janvier, fevrier, mars, avril, mai, juin, juillet, aout, septembre, octobre, novembre, decembre
DE, Januar, Februar, Marz, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember
IT, gennaio, febbraio, marzo, aprile, maggio, giugno, luglio, agosto, settembre, ottobre, novembre, dicembre
ES, enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre
NL, Januari, Februari, Maart, April, Mei, Juni, Juli, Augustus, September, Oktober, November, December
天内。txt:

EN, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
FR, lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche
DE, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag
IT, lunedi, martedi, mercoledi, giovedi, venerdi, sabato, domenica
ES, lunes, martes, miercoles, jueves, viernes, sabado, domingo
NL, Maandag, Dinsdag, Woensdag, Donderdag, Vrijdag, Zaterdag, Zondag
翻译:

$date = date('l, M n, Y', strtotime('December 13th, 2012'));
$date = translate($date, 'IT');
var_dump($date);

function tmap($maps = array()) {
  $tmap = array();
  $defaultMaps = array('mons', 'months', 'ordinals', 'days', 'formats');
  $maps += $defaultMaps;
  foreach ($maps as $map) {
    $mapfile = "$map.txt";
    if (file_exists($mapfile)) {
      $file = file($mapfile);
      foreach ($file as $line) {
        $translations = str_getcsv($line);
        $locale = array_shift($translations);
        $tmap[$map][$locale] = $translations;
      }
    }
  }
  return $tmap;
}

function translate($string, $to, $classes=array(), $base='EN', $tmap=array()) {
  if (empty($tmap)) $tmap = tmap();
  if (is_string($classes)) $classes = array($classes);
  if (empty($classes)) {
    $classes = array_keys($tmap);
  }
  foreach ($classes as $class) {
    $string = str_ireplace($tmap[$class][$base], $tmap[$class][$to], $string);
  }
  return $string;
}

我不明白问题是什么(这一定与你的最后一个问题有关,但我不知道如何解决)。您是在尝试输出日期,还是解析日期?格式是否总是相同的(mmmm-dd,yyyy)?@Pekka-例如,我可以这样做:
if(英语){date('fj,Y');}else(FR){date('j')。'date('F'),'date('Y')}
所以,我唯一的问题是翻译月份。另外,这是为“即将到来的事件”准备的,所以我不想重复当前的日期/时间,而是带有PHP时间戳的未来日期/时间。@Brian啊,对不起,我误读了你的问题,删除了我的答案,用PHP翻译不是更好吗?我看不出有什么理由要求用户启用JavaScript,而JS没有任何本机类可以使文本翻译变得更容易。PHP实际上有更多的本机字符串和日期操作函数/类。只需将月份名称的不同本地化存储在文本文件中,并进行简单的字符串替换。@Lèse majesté你完全正确。我只是对PHP一无所知,无论我怎么努力,我都不知道该怎么做。老实说,我是一个PHP的初学者,我认为这项特殊的任务是我的头…你能举一个例子,使用它来处理本地化?我认为使用维护良好的FOSS库是最佳解决方案,但我找不到任何关于此功能的实际文档(所有指向假定的i18n或L10n文档的链接都是空白页)。添加一个示例将使您的答案更有用JS@carkod当然,但问题始终是关于php的,而不是关于JS的