はじめに

Omeka Sのテーマ開発において、多言語化の実装方法に関する日本語の情報は限られています。本記事では、Omeka Sのカスタムテーマを多言語対応させる具体的な手順と、実装時の注意点について解説します。

目次

  1. Omeka Sの翻訳システムの仕組み
  2. テーマの多言語化に必要なファイル
  3. ステップバイステップガイド
  4. よくある間違いと解決方法
  5. 実装例
  6. トラブルシューティング

1. Omeka Sの翻訳システムの仕組み

Omeka Sはgettext という標準的な翻訳システムを使用しています。このシステムでは:

  • .poファイル:人間が読み書きできる翻訳ソースファイル
  • .moファイル:コンパイル済みのバイナリファイル(実際に使用される)
  • $translate()関数:PHPテンプレート内で翻訳を適用

2. テーマの多言語化に必要なファイル

必要なディレクトリ構造

your-clvtoaihnneefgwmitutjj/eghaeaa//egm..meppmeloo.aitnei.pot####has_translations="true"

3. ステップバイステップガイド

ステップ1:theme.iniの設定

config/theme.iniファイルの[info]セクションに以下の行を追加します:

[nvadohiaeuemanmrtsesfeshck_oiorat]=ori_rnpva"=tenY=irso"oslu"Yniar1oot.u=niT0r_oh."cne0NTosm"ahnemes=emtN"er"aatmdireenu"stec"r=ip"#t^i4o.n1".0"

⚠️ 重要: has_translations = "true"がないと、翻訳ファイルが読み込まれません。

ステップ2:翻訳ファイルの作成

2.1 POファイルの作成

language/ja.poを作成します:

mm"""""""""""#mmmmmm#mmmmmmssPRPPLLLMCCPssssssssssssggreOOaaaIoolggggggggggggisopT-snnMnnuisisisisisisdtjo-RtggEttrdtdtdtdtdtdtrerCe-uu-eearrrrrr"ctrvTaaVnnl""""""""t-eirggett-H"B"S"N"%"i""-Masaeer--Foreo1%tIstin-:sTTomoa$1edgiosTiyrrew"r"Rd$m-ionlejopam""scedsVdn-aaanensehs%%"e--Dtm\::s:""u22rBDao:nfl$$"suatr"1tentssigte:J.erps""ose:a0x-ln-:Yp\tEuF":T2oan/nroo20un"pcauY:02reloln25sadsdu5-Neii="rn-0a\nn1"01mn;g;T1-e":h-1\cpe13nh8lm3"abue1rir12staN2:e\la:0tn=m00="0e0+U;\+0T\n09Fn"90-"0080\\\nnn"""

2.2 MOファイルのコンパイル

POファイルをMOファイルにコンパイルします:

#####msmMUCgsabefgcunmf:nttmtOtbuSr//eDRweHlbEaiiLnna:gsnut:saauglsdeluo/djgoyaeu.tammtpoetix-nltgsaetntagluilangsgete/atjltale.xpgtoettext

ステップ3:テンプレートでの翻訳の使用

PHPテンプレート内での使用

<e$ee??ctcc>phrhhhoaosopnp$s$rst使ltip使harnritatisenfn-st>=lfta(r$t$ate使tnh(rsi'alsSna-est>alepra(lct'uheSg'(ei)'an;%r(1c'$htd'r)a%;n2s$lsa't)e,')$;count,$translate('items'));

実装例

<<!d/-id-vi<<vcb/b/ilububeatutuwst<tt<t/sostosts=nponpoe"ananabtn>tn>rty>y>cnp<p<h-e?e?/g====rr""eob$b$suututuptrtrl"tatat>ononsnsns-"l"lhaaeatatareredi(i(ea'a'r-G-L-lrlifaiasobdbtoe'e'tl)l)e==r"?"?.<><>p?<?<h=/=/tssm$p$pltatarnrna>a>nnssllaattee((''GLriisdtvviieeww''))??>>"">>

4. よくある間違いと解決方法

❌ 間違い1:Module.phpを作成する

classModuleextendsAbstractModule{}

解決: テーマではModule.phpは不要です。has_translations = "true"だけで十分です。

❌ 間違い2:大文字・小文字の不一致

mm<ss?gg=PisPOdtH$rPt"rG"arnisdl"a"te('grid')?>

解決: 翻訳キーは大文字・小文字を区別します。必ず一致させてください。

❌ 間違い3:言語コードの間違い

#l#laanngguuaaggee//jjaa_.JpPo.po##OmekaSja_使JP

5. 実装例

言語バッジの多言語表示

<$]$?<?l;l>spaaphnnapg'''''g?:nuejfdeuanaresa$scg'''''gltleearaN=====Dntsa>>>>>igosmsuu=e$$$$$pap"stttttlgpbrrrrraeea=aaaaayNrdnnnnna(g[sssss=m$elllllevaaaaaisabttttts[lgeeeees$u-(((((eves'''''taLeEJFGS(lacnarep$unogperalegnlanmnaL)dincaina;asehnsgnrhs''hugy'e))'a]")',,)g>,),e<,N?a=me$se[s$cvaapleu(e$Llaanngg]u)ageDisplay)?></span>

アイテム数の表示

[nvadohiaeuemanmrtsesfeshck_oiorat]=ori_rnpva"=tenY=irso"oslu"Yniar1oot.u=niT0r_oh."cne0NTosm"ahnemes=emtN"er"aatmdireenu"stec"r=ip"#t^i4o.n1".0"

0

6. トラブルシューティング

翻訳が反映されない場合のチェックリスト

  1. theme.iniの確認
[nvadohiaeuemanmrtsesfeshck_oiorat]=ori_rnpva"=tenY=irso"oslu"Yniar1oot.u=niT0r_oh."cne0NTosm"ahnemes=emtN"er"aatmdireenu"stec"r=ip"#t^i4o.n1".0"

1 2. MOファイルの確認

[nvadohiaeuemanmrtsesfeshck_oiorat]=ori_rnpva"=tenY=irso"oslu"Yniar1oot.u=niT0r_oh."cne0NTosm"ahnemes=emtN"er"aatmdireenu"stec"r=ip"#t^i4o.n1".0"

2 3. キャッシュのクリア

 * ブラウザ:Ctrl+Shift+R(Windows/Linux)、Cmd+Shift+R(Mac)
 * Docker使用時:コンテナを再起動
[nvadohiaeuemanmrtsesfeshck_oiorat]=ori_rnpva"=tenY=irso"oslu"Yniar1oot.u=niT0r_oh."cne0NTosm"ahnemes=emtN"er"aatmdireenu"stec"r=ip"#t^i4o.n1".0"

3 4. 言語設定の確認

 * Omeka S管理画面 → サイト設定 → 言語を「日本語」に設定
 * ユーザー設定 → 言語を「日本語」に設定

デバッグ方法

[nvadohiaeuemanmrtsesfeshck_oiorat]=ori_rnpva"=tenY=irso"oslu"Yniar1oot.u=niT0r_oh."cne0NTosm"ahnemes=emtN"er"aatmdireenu"stec"r=ip"#t^i4o.n1".0"

4

まとめ

Omeka Sテーマの多言語化は、以下の3つのステップで実現できます:

  1. theme.inihas_translations = "true"を追加
  2. language/ディレクトリに翻訳ファイルを配置
  3. テンプレート内で$translate()関数を使用

Module.phpやmodule.config.phpは不要で、シンプルな設定で多言語化が可能です。

参考リンク


この記事は実際のOmeka Sテーマ開発経験に基づいて作成されました。バージョン4.1.0で動作確認済みです。