2019/06/18 02:28 JST

Geeklog Japan Forums

ゲスト閲覧時のサイトメニューの(完全な)日本語化

ページナビゲーション


状態: オフライン

yamachan

Forum User
Regular Member
登録日: 07/03/14
投稿数: 24
sleepy
なるほど、そこですか。
2.1 からは cache が入ること、了解です。またデータベースのみかたも
ありがとうございます。

ja の項がなかったので付け加えました。
で、cookie になくても日本化表示されるようになりました。
言語名[多言語モード] の ja -> Japanese の Japanese は大文字開始でなければならないのでしょうか?
また、日本語化を解決してもゲスト権限閲覧で
cookie に language=japanese_utf-8
がないと、
メインで、
「表示する記事がありません。この話題の記事がないか表示設定を絞り過ぎなのかのどちらかです。」
となるのはどういう理由でしょうか。
質問ばっかりでもうしわけないですけど、ここであきらめている人は多のではないか? と思います。
わたしもあきらめる寸前でしたが、3 カ国語サイトなんでそういうわけにもまいりません。

コンフィギュレーションの、言語とロケールでこのように設定しました:

言語 (?)
言語ファイル[多言語モード] (?) (X)
en
english_utf-8
de
german_format_utf-8
ja
japanese_utf-8

言語名[多言語モード] (?) (X)
en
English
ja
Japanese

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
多言語3か国語のサイトなのですね。
ならば、それぞれきっちり3か国語をセットしなくてはいけません。言語名にdeが抜けています。

ちなみにJapanese のところは、日本語 とか、なんでもかまいません。
言語を選ぶときにリストボックスで出てくる文字列なのです。langselプラグインなどをつかうと言語セレクトボックスが出ますがその文字列になります。

言語 (?)
言語ファイル[多言語モード] (?) (X)
en
english_utf-8
de
german_format_utf-8
ja
japanese_utf-8

言語名[多言語モード] (?) (X)
en
English
de
German
ja
Japanese

多言語切り替えについてより詳しくは
http://wiki.geeklog.jp/index.php?title=多言語切り替え

状態: オフライン

yamachan

Forum User
Regular Member
登録日: 07/03/14
投稿数: 24
ありがとうございました。ブラウザの対応言語で切り替わりました。

もうひとつ、
「表示する記事がありません。この話題の記事がないか表示設定を絞り過ぎなのかのどちらかです。」
についてですが、

カスタムメニュー → 「表示する記事がありません。... 」となるメニューを編集 → URL
URL で、例えば [site_url]/index.php?topic=General といれる。
とりあえず出るようになります。
もともと URL は [site_url]/ になっていて、これはすなわちトップページをさしていたということです。

で、もともとなんか出ていたトップページに関する設定を(わけわかんないうちに)消去してしまって、
トップページが「表示する記事がありません。... 」となり、更に上記の URL が [site_url]/ になっていたので、これはすなわちトップページなわけで、そのメニューも、当然「表示する記事がありません。... 」 となる。

で次は、トップページをどうやって編集するのか探しています。しかしなかなかうまくいきません。
言語設定のようにわかってしまえば、逆にすっきりまとまっているので腑に落ちるのですが。

なぜいちいち引っかかるのか、バージョンがごちゃごちゃになっているように見えるのか書きたいと思います。
トップページがでないので、とりあえず静的ページを埋め込もうとしました。
http://wiki.geeklog.jp/index.php/カスタマイズ方法
をみると掲載されているのですが、

「トップページデザイン」
トップページにのみ、装飾的にFLASHコンテンツを置きたいのであれば静的ページを利用します。「センターブロック表示」にチェックし、表示場所を(ページの最上部、注目記事の下、ページの下、ページ全体)から選びます。「話題」は、(すべて、ホームページのみ、各話題・・・)の中の、「ホームページのみ」を選びます。これでホームページのデザインを追加できます。

となっており、この通りに実行しても出ません。で、はて、自分が悪いのかと文章の行間を読もうとするのですが、
ここで、ホームページとトップページが同じことをさしているのか、果たして違うのかがものすごい迷います。
まあそれもいいとして、バージョンが間違っていないかどうか探すのですが、
ページ自体にどのバージョンをさしているのか記述はなく、下の「開発者向けカスタマイズ方法」に
Geeklog1.4 日本語版最新config.php
とあるため、ここは 1.4 用なんだと思い込んで、2.0 用ならばきっとうまくいくんだと探すわけです。
これらのページは 2.0 用に書き換えられているとのことでしたので 2.0 用なのですが、
なぜここで 1.4 用の記述があるのか ? と迷うのですが ↑ のことを思い出して 2.0 のことを書いているのだなと。
経緯がわかっていれば、なぜここに 1.4 用の記述があるのか理解できるのでしょうが、私は経緯は知らないし、全部 2.0 用に書き換えてあるとはパッと見わかりませんし、知りませんでしたので、バージョンがごちゃごちゃになっているように見えたということです。
上から( http://wiki.geeklog.jp/index.php )たどれば、2.0 用であることはわかるのですが(でも、突然 1.4 の記述がでてくるとそこだけアップデートが遅れていうのだろうと思ってしまいます、よくある話ですので)、 google からだといきなり各論のページにいっちゃうので、こういう 1.4 の記述があるページが 2.0 用にアップデートされているということはなかなかわからないはずです。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
1.4の記述が残っているURLをここに掲載していただけばそこをこちらで直接修正させていただきますので、掲載いただけますでしょうか。

1.記事が無い場合の警告のメッセージを表示させないモード
表示する記事がありません。 は、表示する記事がないときに、ないことを表示する がデフォルトなために表示されます。
コンフィギュレーションの 記事 で、修正してください。

2.多言語モードの場合のIDのつけ方
静的ページや話題、記事は、多言語の場合は、IDの最後に _ja _en など、かならず言語IDを追加してください。
追加しないとたとえTOPに表示するモードにしても、言語IDが合致しないので表示されません。
TOPページ用に、日本語の場合のページ、英語の場合のページ、と言語分作成してください。

例) -top_ja -top_en -top_de
(先頭にハイフンを入れているのは、サイトマップに、先頭ハイフンのIDだけは追加しない設定にするときのため、
そのようにしておくと便利なのでわたしはそのようにしています。サイトマッププラグインでは、静的ページの
IDでサイトマップ除外IDを設定できます。)

多言語サイトの設置方法は、繰り返しますが、
http://wiki.geeklog.jp/index.php?title=多言語切り替え
こちらを参照していただけますでしょうか。

1.4からも、Geeklogは基本的な設計は変わっていません。

$_CONF['date']  といった記述がでてきますが、1.4時代はphpファイルだったのが、1.5以降はDBに保存され、管理画面のコンフィギュレーションで管理するようになった、というだけです。そのため、とくに記述は変更していません。

多言語サイト事例は
http://www.jtb-gts.com/

3.TOPページを特殊なレイアウトにする
http://wiki.geeklog.jp/index.php?title=TOPページを特殊なレイアウトにする
これは、すべてのバージョンに対応しています。ただし、多言語サイト作成の場合についてIDの設定方法については別途
http://wiki.geeklog.jp/index.php?title=多言語切り替え
こちらを参照、よろしくお願いします。

状態: オフライン

yamachan

Forum User
Regular Member
登録日: 07/03/14
投稿数: 24
ありがとうございます。

1.4 が残っている記述は例えば上記にも記述しましたが
http://wiki.geeklog.jp/index.php/カスタマイズ方法
開発者向けカスタマイズ方法 → より細かい設定変更は、Geeklog1.4 日本語版最新config.phpを直接編集します。
があげられます。わたしだけかもしれませんが、いの一番で参照するので、「このページは 1.4 についての記述なのか」と迷いました。
[3] 管理者運用方法 > コンフィグレーションエディタ
は、リンク先が 2006 年の記述なのでいまもこれに従っていいのか、迷います。
これより下も 1.4 の記述がありますが、同様です。

いきなり「開発者向け」をみる必要はないのかもしれませんが、他の CMS を選んで最初とっかかりはいいものの多言語にした瞬間にカオスになった結果の Geeklog ですから、Geeklog 多言語にするには「開発者向け」をみないとならないんだろうと構えてしまうわけです。

> 1.4からも、Geeklogは基本的な設計は変わっていません。
今日あたりから、いつぞや挫折した本から追いかけて、先ほど正誤表をみて、もしかして多言語で引っかかっているのかと思っていた次第です。
これがわかっただけでもだいぶすっきりします。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
http://wiki.geeklog.jp/index.php?title=カスタマイズ方法
このページは、たしかに古い記述のままで、混乱されたようで申し訳ありませんでした。
内容を修正しましたのであらためてご確認ください。

状態: オフライン

yamachan

Forum User
Regular Member
登録日: 07/03/14
投稿数: 24
多言語のドキュメント皿を見るように読み返しました。 TOP ページもでるようになりました。
どこで引っかかったのか、ほんとドキュメントどおりなのですが、あとで書くとして、

あと一点質問です。
カスタムメニュー の URL ですが、多言語時はどのように設定したらよいでしょうか。

aboutus というメニューを作り、
話題に、 aboutus_ja を作り、
URL に
[site_url]/index.php?topic=aboutus
を指定し、 aboutus メニュー選択時に
「表示する記事がありません。この話題の記事がないか表示設定を絞り過ぎなのかのどちらかです。」
となってしまいます。
ブラウザで直接
http://サイトURL/index.php?topic=aboutus_ja
とするとうまくいきます。

topic 多言語のリンクはカスタムメニュー内でどのように指定すればよいのでしょうか。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
Quote by: yamachan


カスタムメニュー の URL ですが、多言語時はどのように設定したらよいでしょうか。

aboutus というメニューを作り、
話題に、 aboutus_ja を作り、
URL に
[site_url]/index.php?topic=aboutus
を指定し、 aboutus メニュー選択時に
「表示する記事がありません。この話題の記事がないか表示設定を絞り過ぎなのかのどちらかです。」
となってしまいます。
ブラウザで直接
http://サイトURL/index.php?topic=aboutus_ja
とするとうまくいきます。

topic 多言語のリンクはカスタムメニュー内でどのように指定すればよいのでしょうか。



http://サイトURL/index.php?topic=aboutus_ja
このURLでのみ表示します。http://サイトURL/index.php?topic=aboutusは無いのでエラーになります。これは当然ですよね。

カスタムメニュープラグインを活用する場合、カスタムメニューは、phpmenuitem_xxx というように関数を追加して、
カスタムメニューには関数を登録することができます。

カスタムメニューを使わない場合は、多言語IDを表示するテーマ変数を利用してヘッダでメニューをstaticpage_contentという
自動タグで -headermenu_ja -headermenu_en を自動的に切り替えて読み込む というような方法もあります。

http://www.jtb-gts.com/
このサイトは、カスタムメニュープラグインを活用しています。
lib-custom.phpに以下を追加。
PHP Formatted Code
/* カスタムメニュー */
require_once( 'custom/custom_phpmenuitem.php' );
 


custom/custom_phpmenuitem.php:
以下のように関数を追加します。
about_us の事例だけですが、メニューの数だけ関数をつくります。
このサイトでは、エクセルで各国語のメニュー名、リンク先URL を表にして、
別シートに、この関数を自動的に出力するように記述して自動作成して開発しました。
そうすることにより、メニューを変更したりする際の工数を抑えました。

PHP Formatted Code
<?php

if (strpos(strtolower($_SERVER['PHP_SELF']), 'custom_phpmenuitem.php') !== false) {
    die('This file can not be used on its own!');
}


function phpmenuitem_about_us()
{
    global $_CONF, $LANG01;

    $url = $_CONF['site_url'] . '/staticpages/index.php/about_us_' . COM_getLanguageId();

    switch( COM_getLanguageId() ){
      case en: $label = "About Us"; break;
      case zh: $label = "关于我们"; break;
      case ct: $label = "關於我們"; break;
      case ko: $label = "회사소개"; break;
    }
   
    $menuitems = array(
        'url'        => $url,
        'label'      => $label,
        'icon_url'   => '',
        'id_name'    => '',
        'class_name' => '',
        'submenu_entries' => array(),
    );
    return $menuitems;
}


くわしくはカスタムメニュープラグインのドキュメントをご覧ください。

状態: オフライン

yamachan

Forum User
Regular Member
登録日: 07/03/14
投稿数: 24
ありがとうございます。
カレントディレクトリが public_html と public_html/layout/テーマ名 の場合があるので相対ディレクトリではエラーになります。したがって lib-common.php 内の include_once は絶対パスにしました。

これは大変参考になりました。
PHP Formatted Code

global $_CONF, $LANG01;
 

で、結局以下のようにして動作を確認しました。
PHP Formatted Code

<?php

if (strpos(strtolower($_SERVER['PHP_SELF']), 'custom_phpmenuitem.php') !== false) {
     die('This file can not be used on its own!');
}

function phpmenuitem_aboutus()
{
     global $_CONF, $LANG01;

     $url = $_CONF['site_url'] . '/index.php?topic=aboutus_' . COM_getLanguageId();

     $label = empty($LANG01['aboutus']) ? 'ABOUT US' : $LANG01['aboutus'];

     $menuitems = array(
         'url'        => $url,
         'label'      => $label,
         'icon_url'   => '',
         'id_name'    => '',
         'class_name' => '',
         'submenu_entries' => array(),
     );
     return $menuitems;
}
 

一見めんどくさいのですが、でもこの仕組みを用いると、日本語 と 他の言語 を同じコンテンツにしたい(例えば、コンテンツを日本語 + 他の言語とし、どちらの言語の選択でも同じものを表示する)ときに使えそうです。いちいち分けるのがめんどくさいときもありますし。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
カレントディレクトリが public_html と public_html/layout/テーマ名 の場合があるので相対ディレクトリではエラーになります。したがって lib-common.php 内の include_once は絶対パスにしました。


この意味がよくわからないのですが・・・

lib-common.php 内の include_onceに関してはわたしのほうではどうしたらよいとはどこにも記載していないので、どの発言が相対ディレクトリで、それをどうされたのでしょうか。

旧バージョンでは、lib-common.phpを直接修正する必要がありましたが、今はソースをさわることなくインストールできます。
もしかしてWikiに古いバージョンの記述が残っていたでしょうか。

ページナビゲーション

時刻はすべて JST , 現在の時刻は 02:28 AM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  ゲストユーザ投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック