Support

Account

Home Forums General Issues Translate date WPML

Solving

Translate date WPML

  • Hi,
    I need to translate date with WPML. I use date picker and uses MM to display month in letters. It only displays the English text for the month.

    How can I manage this?

  • Hi!

    You’ll need to first change it to unix timestamp and then use
    date_i18n function.. here’s a snippet:

    
    <?php $timestamp = strtotime(get_field('yourdatefield')); ?>
    <time datetime="<?php echo date(DATE_W3C); ?>" pubdate class="updated"><?php echo date_i18n( 'j M', $timestamp); ?></time>
    
    

    The key parts here is the first row and then the date_i18n function.. Change the first parameter of date_i18n (j M) to whatever timeformat you require 🙂

  • Hi,
    Thanks for your answer. I must admit, this is way above my skill levels. I found the date_i18 in wp-includes/function.php but can’t figure out where to add the snippet or what to modify. Can you please look at my function and tell me what to do?

    
    function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {
    	global $wp_locale;
    	$i = $unixtimestamp;
    
    	if ( false === $i ) {
    		if ( ! $gmt )
    			$i = current_time( 'timestamp' );
    		else
    			$i = time();
    		// we should not let date() interfere with our
    		// specially computed timestamp
    		$gmt = true;
    	}
    
    	// store original value for language with untypical grammars
    	// see http://core.trac.wordpress.org/ticket/9396
    	$req_format = $dateformatstring;
    
    	$datefunc = $gmt? 'gmdate' : 'date';
    
    	if ( ( !empty( $wp_locale->month ) ) && ( !empty( $wp_locale->weekday ) ) ) {
    		$datemonth = $wp_locale->get_month( $datefunc( 'm', $i ) );
    		$datemonth_abbrev = $wp_locale->get_month_abbrev( $datemonth );
    		$dateweekday = $wp_locale->get_weekday( $datefunc( 'w', $i ) );
    		$dateweekday_abbrev = $wp_locale->get_weekday_abbrev( $dateweekday );
    		$datemeridiem = $wp_locale->get_meridiem( $datefunc( 'a', $i ) );
    		$datemeridiem_capital = $wp_locale->get_meridiem( $datefunc( 'A', $i ) );
    		$dateformatstring = ' '.$dateformatstring;
    		$dateformatstring = preg_replace( "/([^\\\])D/", "\\1" . backslashit( $dateweekday_abbrev ), $dateformatstring );
    		$dateformatstring = preg_replace( "/([^\\\])F/", "\\1" . backslashit( $datemonth ), $dateformatstring );
    		$dateformatstring = preg_replace( "/([^\\\])l/", "\\1" . backslashit( $dateweekday ), $dateformatstring );
    		$dateformatstring = preg_replace( "/([^\\\])M/", "\\1" . backslashit( $datemonth_abbrev ), $dateformatstring );
    		$dateformatstring = preg_replace( "/([^\\\])a/", "\\1" . backslashit( $datemeridiem ), $dateformatstring );
    		$dateformatstring = preg_replace( "/([^\\\])A/", "\\1" . backslashit( $datemeridiem_capital ), $dateformatstring );
    
    		$dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 );
    	}
    	$timezone_formats = array( 'P', 'I', 'O', 'T', 'Z', 'e' );
    	$timezone_formats_re = implode( '|', $timezone_formats );
    	if ( preg_match( "/$timezone_formats_re/", $dateformatstring ) ) {
    		$timezone_string = get_option( 'timezone_string' );
    		if ( $timezone_string ) {
    			$timezone_object = timezone_open( $timezone_string );
    			$date_object = date_create( null, $timezone_object );
    			foreach( $timezone_formats as $timezone_format ) {
    				if ( false !== strpos( $dateformatstring, $timezone_format ) ) {
    					$formatted = date_format( $date_object, $timezone_format );
    					$dateformatstring = ' '.$dateformatstring;
    					$dateformatstring = preg_replace( "/([^\\\])$timezone_format/", "\\1" . backslashit( $formatted ), $dateformatstring );
    					$dateformatstring = substr( $dateformatstring, 1, strlen( $dateformatstring ) -1 );
    				}
    			}
    		}
    	}
    	$j = @$datefunc( $dateformatstring, $i );
    	// allow plugins to redo this entirely for languages with untypical grammars
    	$j = apply_filters('date_i18n', $j, $req_format, $i, $gmt);
    	return $j;
    }

    Thanks for your help!

  • This reply has been marked as private.
  • hi! I have a wp with acf in two languages.
    How i can make it work the same date picker in spanish and english?

    For example:
    In spanish: dd/mm/yyyy
    In english: yy/mm/dd

    Thanks!
    G

  • Hi @tapichus

    You can find a good code example to translate the date picker value here:
    http://support.advancedcustomfields.com/forums/topic/date-picker-output-translation/

    Thanks
    E

Viewing 6 posts - 1 through 6 (of 6 total)

The topic ‘Translate date WPML’ is closed to new replies.