英語での多言語ページを開発したいと思います。ドイツ語をクリックするとページ言語がドイツ語に変わり、英語が変わります英語に。これを私に指示してください。事前に感謝....PHPで多言語を使用したWebページを作成する
答えて
セッションを使用して、ユーザーが設定した言語を保存できます。
$_SESSION["lang"] = "en";
$_SESSION["lang"] = $_GET["lang"];
// or this way, then you can do example.com/?lang=en
次に、翻訳の配列を含むファイルを作成します。
$lang["en"]["welcome"] = "Welcome to the site";
し、別のファイルには、ドイツ語の翻訳
$lang["de"]["welcome"] = "Willkommen auf der Webseite";
を持つことができます。そして、あなただけのセッション
echo $lang[$_SESSION["lang"]]["welcome"];
これはこれの簡易版であると$ LANG配列を呼ぶだろうオブジェクトを使用して翻訳を保存することもできます。 しかし、これは非常に大きなSELECTか非常に多くのものが含まれているので、データベースを使用して翻訳を保存することをお勧めしません。
最後のエコーでは意味しません:$ lang [$ _ SESSION ['lang'] ] ['ようこそ']; –
実際には、そのページのすべてのコンテンツを変更する必要があります。 http://www.google.co.in/ – Sakthivel
のように@sakthioprのウェブサイトは通常この方法で翻訳されていますこれは単に特定の場所に出力する必要がある文字列の集まりです –
私は個人的に私の完全な意見を翻訳します。したがって、ファイル構造は次のようになります。
そして、Olafurの提案によれば、セッション変数に言語を格納し、このようなことをします。
session_start(); //dont forget to call this somewhere
$_SESSION['lang'] = 'en';
//and then in somewehere else:
include 'views/'.$_SESSION['lang'].'/someView.php'; //or whatever method is used to include views.
EDIT
あなたのスクリプトからあなたの出力を区切る必要があります。今、私たちは直接以下のすべての出力を追加することができ
//someScript.php
$timestamp = time();
、それ:したがって、あなたがcurrect UNIXタイムスタンプを取得するように、いくつかのスクリプトのものを行うスクリプトを持つことになり、これは上記の例でsomeScript.phpになりメンテナンス性が非常に難しくなりますので、ここではいくつかのViewView.phpファイルとなる別のファイルで出力します。だから、「エン」フォルダ内someView.phpは次のようになります。
<html>
<head>
<title>Currect UNIX timestamp!</title>
</head>
<body>
<p>The current UNIX timestamp is: <?php echo $timestamp; ?> seconds</p>
</body></html>
そして、それはpracticly同じファイルになり「デ・フォルダ内のが、ドイツのすべてのテキストを持ちます。あなたがここにMVCの詳細をお読みください
include '../views/'.$_SESSION['lang'].'/someView.php';
:http://www.onlamp.com/pub/a/php/2005/09/15/mvc_intro.html
は、今、私たちが行う必要があるすべては、このように我々は、そのスクリプトの一番下に次の行を追加し、当社のsomeScript.phpでこれらの出力ファイルが含まれています
注:この例は厳密なMVCではありませんが、これはあなたに考えを与えるはずです。
ほとんどのフレームワークには、これを支援するヘルパーが用意されています。ここにはCodeigniterとcakePHPがあります。
http://php.net/manual/en/intro.gettext.phpの方法を使用します。うまく動作し、他のプロジェクト(非PHPプロジェクト)ですでにhttp://www.gnu.org/software/gettext/manual/gettext.htmlで作業しました。だから始めるのは簡単でした。
正しい方法は誰がテキストを翻訳するかによって異なります。開発者の場合は、各言語ごとに独自の見解を持つことができます。しかし、テキストを翻訳する他の人々がいる場合は、gettext(翻訳は専用ファイルにあり、この種のファイルを扱うツールがあります)のようなものが正しい選択です!
Gettextは絶対に行く方法です。それは第三者があなたのウェブサイトを翻訳するのをはるかに容易にします。 基本的には、あなたのウェブサイトをgettext-iseし、.poファイルを翻訳者に送り、翻訳されたすべての文字列を含む.poファイルを返します。コードの変更はありません。 –
通常、UTF-8対応のWebサイトが必要です。これは、ファイルのヘッダーを介して設定されます。 (また、header())を使って設定することもできます。
私は、サイトを英語と中国語にしたいと思っています。それから、言語ファイルを用意することをお勧めします。おそらく、配列や、サイトに表示する段落を格納するオブジェクトです。そして、あなたはその段落を印刷します。
次に、ユーザーが要求している言語を知るために、私は$ _SESSIONを使用してユーザーの選択した言語を格納します。
その後、あなたの言語ファイルは、この
$lang["en"]["Welcome"] = "Welcome to the site";
のようになります。そして、中国の歓迎ファイルはあなたがこれをプリントアウトしたい場所に続いて、この
$lang["ch"]["Welcome"] = "歡迎";
のようなものを持っているでしょう。あなたはそうするでしょう
echo $lang[$_SESSION["lang"]]["Welcome"];
複数の動的ページを含む40ページ以上のページでは、時間がかかります。私はディレクトリと言語を分離するのが最善だと思います。だからwebsite.com/englishはenglish website/englishになります –
私はその情報が質問に役立つかもしれないと思います:) –
あなたが望む任意の文字セットでHTMLのコンテンツ部分を入力することができます。ちょうどset the charset and content encoding properlyにしてください。たとえば、単純なUnicodeの場合はUTF-8に設定します。
Railsが扱うのはwellです。これを行う方法のアイデアについては、それをチェックしてみてください。
奇妙なことに、多くのPHP開発者は、すべての自然言語が同じ文法を持っていると思っているようです。パラメータを持たない翻訳フレームワークを作ることは、単に不可能です。文字列$lang['welcomeTo'] $sitename
はほとんどの言語(歓迎stackoverflow)のために正しく翻訳するかもしれませんが、それは$sitename $lang['welcomeTo']
(stackoverflow'a hos geldiniz)またはどちらかの方法が可能なドイツ語のために、例えばトルコ語のために失敗します(Willkommen auf stackoverflow/Stackoverflowheißt Sie willkommen)。そして、複数の変数で文章を翻訳しようとすると、これは悪化します。要するに
Language::getCurrentLanguage()->translate('welcomeTo', array('sitename' => $sitename));
# Translation file for english (configfile-style):
welcomeTo=Welcome to $sitename
# Translation file for turkish:
welcomeTo=$sitename'a hos geldiniz
# Translation file for german:
welcomeTo=Willkommen auf $sitename
# Or
welcomeTo=$sitename heißt sie willkommen
:
唯一のオプションは、パラメータ変換(関数発言を):使用することですあなたは本当の国際化をしたい場合は、あなたの翻訳ではなく、変数を取得する関数を使用します。 PHPのintl拡張子を調べることもできます。
本当に素晴らしいことは考えられませんでした – Geomorillo
多言語ウェブサイトを構築する有効な方法の1つは、ハードコードされたラベルを使用せず、適切な言語ファイルから検索することです。データベースに格納するデータが表示されている場合は、異なる言語で翻訳を格納するデータベーステーブルを追加することを検討する必要があります。たとえば、C#で作業を行うには、ラベル値を格納しているリソースファイルを使用できます。
グレゴールが言ったように、 gettextは私のためのproffesional方法です...ここ
Windowsでpoファイルを作成する場合uはの.poや.moのファイルを使用する必要がありますlink
良い記事ですが、私はこの方法では、いくつかの重要なポイント
I-を追加します、あなたはLinuxの下でそれを使用することはできません。または、linuxの下で作成された.poファイルは、Windowsでは使用できません。
II- Linuxは.poファイル自体を作成することができますが、Windowsで私はあなたが(uはそのサイトからそれを得ることができた:http://www.poedit.net/)などpoeditなどのプログラムを使用することをお勧め
III-いくつかのロケールでは、文字の問題を抱えています。しかし、私はどちらが覚えていないのですか?:(
- 1. phpで多言語ウェブサイトを作成
- 2. データベースを使用してasp.netで多言語のWebサイトを作成する
- 3. プラグインサポート(MEF)を使用してC#多言語アプリケーションを作成
- 4. zendフレームワークを使用した多言語コンテンツ管理Webサイト(CMS)
- 5. SQLAlchemyを使用した多言語テキストフィールド
- 6. 多言語PHP
- 7. PHP多言語
- 8. データベースを使用している多言語Webサイト
- 9. 多言語HTMLページ
- 10. Php多言語ウェブサイト
- 11. 多言語PHPサイト
- 12. DataAnnotationsと多言語Webアプリケーション
- 13. C#/ WinFormsで多言語アプリケーションを作成するベストプラクティス?
- 14. 多言語ActionScript 3.0サイトの作成
- 15. 多言語JavaDocsの作成方法は?
- 16. jqueryを使ってページをリフレッシュする多言語ウェブサイト
- 17. 多言語PHPスクリプト質問
- 18. 英語以外の言語を使用したPHP Curl投稿
- 19. mysql php多言語アラビア語とヒンディー
- 20. smartyテンプレートを使用した多言語サポート
- 21. CodeIgniterを使用したデータベースの多言語
- 22. Joomlaを使用した多言語サイトSugesstion
- 23. C#.NETを使用した多言語ウィンドウアプリケーション
- 24. jQuery Mobileを使用した多言語アプリ
- 25. ZendとDoctrineを使用した多言語データベースアプリケーション
- 26. Laravel 5.2 multilsav/laravel-translatableを使用した多言語
- 27. PILを使用して多言語テキストを描画する
- 28. 多くのリソースと多くの言語を使用した大規模ソリューション用のサテライトアセンブリを生成
- 29. java用のPHPを使用したWebサービス(XML)の作成
- 30. PHPで言語を作成する方法
あなた自身が翻訳を提供していますか? – Rob