bass-inu's blog

非IT企業Web担当者だった無職の雑記

翻訳ファイル「.mo」「.po」の編集

LimeSurveyという超高機能アンケートシステムを設置中。
海外産のシステムですがデフォルトで日本語化されてて助かる。
しかしところどころ日本語訳を変えたい箇所があったので、言語ファイルをいじろうとしたら「.moファイル」が手持ちのエディタで開けない!
何コレ?!


そんなわけでメモ。

Poeditをダウンロードしてインストール

ここからWindows版をダウンロード

Poedit: Download

コマンドプロンプトで.moを.poに変換

.poに変換すればエディタで開けるみたいなのでコマンドプロンプト起動。
インストールしたPoeditフォルダの中の「bin」フォルダに移動する。

cd C:\Program Files\Poedit\bin

続いて.moを.poへ変換。
Win7でデスクトップにmoファイル(ja.mo)を置いていて、同じ場所にpoファイル(ja.po)を出力したい場合…

msgunfmt.exe "C:\Users\(ユーザー名)\Desktop\ja.mo" -o "C:\Users\(ユーザー名)\Desktop\ja.po"

poファイルを編集

Poeditでも手持ちのエディタでも開けるので、編集して保存

poファイルをmoファイルへ変換

もとに戻す。
同じくデスクトップに出力する場合。ちなみに元あったmoファイルはリネームしといた。

msgfmt.exe "C:\Users\(ユーザー名)\Desktop\ja.po" -o "C:\Users\(ユーザー名)\Desktop\ja.mo"

完了!

MySQLを自動でバックアップしてメール送信するメモ

データベースのバックアップを自動で行いバックアップファイルをメール添付してくれるスクリプトを探していたら、ありました。
phpMyBackupPro - the MySQL backup tool :: Features

設置〜データベース設定

まずこちらからファイルをダウンロードさせていただきました。
phpMyBackupProを日本語化してみました | My MODX Site

アップロードしてconfig.phpにアクセス。
データベース情報やメール送信先を設定。

設定ファイルとバックアップフォルダの移動

セキュリティのために、「global_conf.php」と「export」フォルダをドキュメントルートより上に移動させます。
そのあと、「definitions.php」の28,29行目を修正

$_PMBP_GLOBAL_CONF="../../global_conf.php";
$_PMBP_EXPORT_DIR="../../export/";

移動後の場所を相対パスで指定します。

cronを設定

シックスコアの場合

cron設定したらすぐ動いた。
cronコマンドは以下

php /home/アカウント名/ドメイン名/public_html/phpMyBackupPro/backup.php データベース名1,データベース名2 1 1 1 1
ヘテムルの場合

まずシェルスクリプトを作成する。backup.shという名前にした。

#!/bin/sh

cd /home/sites/heteml/users/h/o/g/hoge/web/phpMyBackupPro/
/usr/local/bin/php53 ./backup.php データベース名 1 1 1 1

exit

backup.phpの1行目に以下を追記

#!/usr/local/bin/php53

そして両ファイルのパーミッションを「700」にする。


cron設定の実行ファイルフルパスに以下を入力

/backup.sh


これでcronで設定した日時に自動でexportフォルダにデータが保存されて、メールでも送られてきます。
ブラウザでほとんどの設定ができるし、手動でもバックアップ可能なので便利ですね〜。

オープンソースFAQシステム「phpMyFAQ」のカスタマイズ

オープンソースのFAQシステム「phpMyFAQ」
日本語化もされているけど、どうも情報が少ない…
カスタマイズはほとんどの場合テンプレートを編集すれば出来る。
公式:phpMyFAQ homepage - open source FAQ software | welcome
日本語サイト:phpMyFAQ.JP 日本語サイト - FAQシステム構築 by phpMyFAQ


テンプレート編集だけでは出来ない部分のカスタマイズメモ
バージョンは phpMyFAQ 2.7.2

タイムゾーン修正

/config/constants.php
39行目を以下に修正

define('PMF_DATETIME_TIMEZONE_DEFAULT', 'Asia/Tokyo');

検索ページのFAQ閲覧回数の非表示

/inc/Faq.php
444行目

$listItem = sprintf('<li>%s<span id="viewsPerRecord"><br /><span class="little">(%s)</span>%s</span></li>',

611行目

$listItem = sprintf('<li>%s<br /><span class="little">('.$this->plr->GetMsg('plmsgViews',$visits).')</span></li>',

以上2箇所のspanタグを削除する。

$listItem = sprintf('<li>%s</li>',

左サイドにタグクラウドを表示させる

/index.php
443行目あたりから始まる
$main_template_vars = array(
の中に以下を追加

'writeTagCloudHeader' => $PMF_LANG['msg_tags'],
'writeTags'           => $oTag->printHTMLTagsCloud(),

テンプレートファイル index.tpl

<div id="leftContent"></div>

の中に以下を追加

<section>
<header>
<h3>{writeTagCloudHeader}</h3>
</header>
<div id="tagcloud-content">
{writeTags}
</div>
</section>

全ページに検索フォームをつける

どのページからも検索できるようにします。カテゴリーも選べるように。
もっとスマートな方法があるかもしれません…
記事ページはカテゴリー選択がうまくいきませんorz


/index.php
443行目あたりから始まる
$main_template_vars = array(
より上に以下を追加

$faqCategoryHelper = PMF_Helper_Category::getInstance();
$faqCategoryHelper->setCategory($category);
$category->buildTree();

$main_template_vars = array(
の中に以下を追加

'selectCategories'         => $PMF_LANG['msgSelectCategories'],
'allCategories'            => $PMF_LANG['msgAllCategories'],
'printCategoryOptions'     => $faqCategoryHelper->renderCategoryOptions($inputCategory),
'writeSendAdress' => '?'.$sids.'action=search',
'searchBox'       => $PMF_LANG['msgSearch'],
'categoryId'      => ($cat === 0) ? '%' : (int)$cat,
'msgSearch'       => sprintf(
  '<a class="help" href="%sindex.php?action=search">%s</a>',
  $systemUri,
  $PMF_LANG["msgAdvancedSearch"])

テンプレートファイル index.tpl
ヘッダーやフッターやナビゲーション、お好きなところに以下の感じで追加
適宜CSSを編集して下さい。

<div>
<form id="search" action="{writeSendAdress}" method="get">
<input type="hidden" name="action" value="search" />
<input type="search" name="search" id="searchfield" size="30" placeholder="{searchBox} ..." />
<select name="searchcategory" size="1">
<option value="%" selected="selected">{allCategories}</option>
{printCategoryOptions}
</select>
<input type="submit" name="submit" value="{searchBox}" />
</form>
</div>

検索ページでカテゴリー選択ボックスの中身が二重になってしまうので、
/search.php
117行目を削除

$category->buildTree();

拡張子.htmlで携帯XHTML対応&PHP動作させる (ロリポップ用)

ロリポップは自由にphp.iniを設定できないので、以下の方法では無理だった。
Google Analytics携帯電話向けコード(PHP)をXHTMLに埋め込むメモ - bass-inuのひとりごとメモ


■やりたいこと

  • 携帯3キャリア対応のXHTMLページで拡張子は.html
  • PHPを動作させる


まず.htaccess
.htmlでphpを動かせるように設定する。
ロリポップの場合)

AddHandler php5.2-script .html

(その他)

AddType x-httpd-php .html


各HTMLの最初に以下を記述。

<?php header("Content-type: application/xhtml+xml");?>
<?php echo '<?xml version="1.0" encoding="Shift_JIS" ?>'."\n";?>


あとはいつも通りに携帯ページを作成。

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />
<title>タイトル</title>
</head>
<body>
内容
</body>
</html>

これでOKです。

Google Analytics携帯電話向けコード(PHP)をXHTMLに埋め込むメモ

アクセス解析Google Analyticsが携帯に対応したので、さっそく全サイトにコードを埋め込んだ。

その中で、XHTMLで構築しているページに使用するときにつまづいたのでメモ。


■携帯サイトの環境

  • 3キャリア対応のXHTMLページ
  • 拡張子は.html (.htaccecss使用)

■サーバーの環境

  • php.iniを編集することができる

■やりたいこと


まずは、php.iniの設定をする。

私の場合は既存のphp.iniをコピーし、以下の2箇所を修正。
モバイルサイトのディレクトリに修正したphp.iniを適用するよう設定した。

short_open_tag = Off

default_mimetype = "application/xhtml+xml"

short_open_tag をOffにすることでPHPの省略形を使えなくする。
XHTML内で記述しているxml宣言

<?xml version="1.0" encoding="Shift_JIS"?>

がphpタグとみなされないようにするため。


次は.htaccessの編集。

.htmlでphpを動かせるように設定する。

AddType x-httpd-php .html

以下は削除する。

AddType application/xhtml+xml .html


これでほぼ完了。
次はGoogle Analyticsからアクセス解析のトラッキングコードを取得する。
説明に従って、ga.phpをダウンロードしてサーバーにアップ。


あとは各ページにトラッキングコードを貼付けるだけ。

ですが、先程php.iniをいじったので、トラッキングコードを少し修正する必要がある。

修正するのはタグの直前に貼り付ける以下のコード

<?php
  $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
?>
<img src="<?= $googleAnalyticsImageUrl ?>" />

これを、

<?php
  $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
?>
<img src="<?php echo $googleAnalyticsImageUrl ?>" />

に。

以上で完了!


動かない場合、トラッキングコードの以下の部分

  $GA_PIXEL = "ga.php";

「ga.php」の場所がちゃんと指定されているかチェック。

「mobile」ディレクトリに置いたならこうしとくとラク。

  $GA_PIXEL = "/mobile/ga.php";


携帯用ページのアクセス解析は初めて導入したのですが、思っていた以上に携帯からのアクセスがあったことがわかってビックリでした。