Standing on the Shoulder of Linus

Home / 2012 / 9月 / 18 / Concrete5 の翻訳をチェックするスクリプト

Concrete5 の翻訳をチェックするスクリプト

Concrete5 の翻訳をチェックするスクリプトです。元の語/文と、訳した語/文を並べて表示するようにします。例えば、フランス語なら、error erruerとなります。少し前に作ったものをベースに、concrete5.6 対応にしました。作業は下北沢オープンソースカフェで行いました。hissy さんや okb さんにもチェックしてもらいました。https://github.com/ounziw/Debugging-translation-for-Concrete5でダウンロードできます。(MITライセンスで配布しています。)

<?php 
defined('C5_EXECUTE') or die("Access Denied.");
// Put this file into concrete/startup/localization.php

function remove_percent_from_text($text) {
	$removed = array('$','%');
	$no_var_text = str_replace($removed,'_',$text);
	$no_var_text .= ' '; // Space for Readability
	return $no_var_text;
}

function t($text) {
	$no_var_text = remove_percent_from_text($text);
	$zt = Localization::getTranslate();
	if (func_num_args() == 1) {
		if (is_object($zt)) {
			return $no_var_text . $zt->_($text);
		} else {
			return $text;
		}
	}
	
	$arg = array();
	for($i = 1 ; $i < func_num_args(); $i++) {
		$arg[] = func_get_arg($i); 
	}
	if (is_object($zt)) {
		return vsprintf($no_var_text . $zt->_($text), $arg);
	} else {
		return vsprintf($no_var_text . $text, $arg);
	}
}

/** Translate text (plural form).
* @param string $singular The singular form.
* @param string $plural The plural form.
* @param int $number The number.
* @param mixed ... Unlimited optional number of arguments: if specified they'll be used for printf
* @return string Returns the translated text.
* @example t2('%d child', '%d children', $n) will return translated '%d child' if $n is 1, translated '%d children' otherwise.
* @example t2('%d child', '%d children', $n, $n) will return translated '1 child' if $n is 1, translated '2 children' if $n is 2.
*/
function t2($singular, $plural, $number) {
	$no_var_text_singular = remove_percent_from_text($singular);
	$no_var_text_plural = remove_percent_from_text($plural);
	$zt = Localization::getTranslate();
	if(is_object($zt)) {
		$translated = $zt->plural($no_var_text_singular . $singular, $no_var_text_plural . $plural, $number);
	} else {
		$translated = ($number == 1) ? $no_var_text_singular . $singular : $no_var_text_plural . $plural;
	}
	if(func_num_args() == 3) {
		return $translated;
	}
	$arg = array();
	for($i = 3; $i < func_num_args(); $i++) {
		$arg[] = func_get_arg($i);
	}
	return vsprintf($translated, $arg);
}

concrete5.6 をまず日本語対応にしてください。trasifex から対訳ファイルを取ってくる、管理画面の言語設定で日本語にする、等をしてください。その後、concrete/startup/localization.php を上書きしてください。

関連

Posted in concrete5 | Tagged 日本語化, 管理画面カスタマイズ
← テーマ・プラグインの有料販売について Ubuntu で無線LAN WLI-UC-GNM →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.