https://codex.wordpress.org/Function_Reference/human_time_diff をご覧ください。
私は英語版のWordpressを使用しています。
私のテーマテンプレートでは、投稿をループするときにhuman_time_diff()
を使って、分、時、日、週、月、年のカスタムテキストを中国語で定義したいと思います。
コーデックスのドキュメントの指示に従ってください。
<?php
printf( _x( '%s ago', '%s = human-readable time difference',
'your-text-domain' ), human_time_diff( get_the_time( 'U' ),
current_time( 'timestamp' ) ) );
?>
私はまだ上のコードを使ってスワップをするための実装を作る方法を知りません。例えば。
min -> 分鐘
hour -> 小時
dat -> 天
week -> 週
month -> 月
year -> 年
ago
の部分は簡単なはずです。
それがどのように機能するかを実証することができる例がありますか?
また、英語の複数形について心配する必要がありますか?
Wordpressのコアを変更せずに私のために働く完全な解決策は、human_time_diff()
関数を複製し、それをfunctions.php
内に名前を変更したhuman_time_diff_chinese()
として配置し、次に出現するすべてのhuman_time_diff()
関数を新しいhuman_time_diff_chinese()
関数と交換することです。
function human_time_diff_chinese( $from, $to = '' ) {
if ( empty( $to ) ) {
$to = time();
}
$diff = (int) abs( $to - $from );
if ( $diff < HOUR_IN_SECONDS ) {
$mins = round( $diff / MINUTE_IN_SECONDS );
if ( $mins <= 1 )
$mins = 1;
/* translators: min=minute */
$since = sprintf( _n( '%s 分鐘', '%s 分鐘', $mins ), $mins );
} elseif ( $diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS ) {
$hours = round( $diff / HOUR_IN_SECONDS );
if ( $hours <= 1 )
$hours = 1;
$since = sprintf( _n( '%s 小時', '%s 小時', $hours ), $hours );
} elseif ( $diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS ) {
$days = round( $diff / DAY_IN_SECONDS );
if ( $days <= 1 )
$days = 1;
$since = sprintf( _n( '%s 天', '%s 天', $days ), $days );
} elseif ( $diff < MONTH_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) {
$weeks = round( $diff / WEEK_IN_SECONDS );
if ( $weeks <= 1 )
$weeks = 1;
$since = sprintf( _n( '%s 週', '%s 週', $weeks ), $weeks );
} elseif ( $diff < YEAR_IN_SECONDS && $diff >= MONTH_IN_SECONDS ) {
$months = round( $diff / MONTH_IN_SECONDS );
if ( $months <= 1 )
$months = 1;
$since = sprintf( _n( '%s 個月', '%s 個月', $months ), $months );
} elseif ( $diff >= YEAR_IN_SECONDS ) {
$years = round( $diff / YEAR_IN_SECONDS );
if ( $years <= 1 )
$years = 1;
$since = sprintf( _n( '%s 年', '%s 年', $years ), $years );
}
return apply_filters( 'human_time_diff_chinese', $since, $diff, $from, $to );
}
human_time_diff
のソースをチェックアウトすると:
if ( $diff < HOUR_IN_SECONDS ) {
$mins = round( $diff / MINUTE_IN_SECONDS );
if ( $mins <= 1 )
$mins = 1;
/* translators: min=minute */
$since = sprintf( _n( '%s min', '%s mins', $mins ), $mins );
} elseif ( $diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS ) {
$hours = round( $diff / HOUR_IN_SECONDS );
if ( $hours <= 1 )
$hours = 1;
$since = sprintf( _n( '%s hour', '%s hours', $hours ), $hours );
} elseif ( $diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS ) {
$days = round( $diff / DAY_IN_SECONDS );
if ( $days <= 1 )
$days = 1;
$since = sprintf( _n( '%s day', '%s days', $days ), $days );
} elseif ( $diff < MONTH_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) {
$weeks = round( $diff / WEEK_IN_SECONDS );
if ( $weeks <= 1 )
$weeks = 1;
$since = sprintf( _n( '%s week', '%s weeks', $weeks ), $weeks );
} elseif ( $diff < YEAR_IN_SECONDS && $diff >= MONTH_IN_SECONDS ) {
$months = round( $diff / MONTH_IN_SECONDS );
if ( $months <= 1 )
$months = 1;
$since = sprintf( _n( '%s month', '%s months', $months ), $months );
} elseif ( $diff >= YEAR_IN_SECONDS ) {
$years = round( $diff / YEAR_IN_SECONDS );
if ( $years <= 1 )
$years = 1;
$since = sprintf( _n( '%s year', '%s years', $years ), $years );
}
ご覧のとおり、%s min
、%s mins
などの文字列を翻訳してください。