Ich recherchiere stundenlang, aber ich konnte keinen klaren und effizienten Weg finden, dies zu erreichen: /
Ich habe eine Codeigniter-Basis-Website in Englisch und muss jetzt eine polnische Sprache hinzufügen. Was ist der beste Weg, um meine Website je nach Besucherauswahl in zwei Sprachen zu erstellen?
Gibt es eine Möglichkeit, Array-Dateien für jede Sprache zu erstellen und sie in Ansichtsdateien aufzurufen, abhängig von der Sitzung aus der Lang-Auswahl? Ich möchte keine Datenbank verwenden.
Schätzen hilft! Ich habe keine Frist mehr: / danke !!
arrays
session
codeigniter
multilingual
Designer-Trying-Coding
quelle
quelle
Antworten:
Haben Sie die Sprachbibliothek von CodeIgniter gesehen ?
In deinem Fall...
polish_lang.php
undenglish_lang.php
innen erstellenapplication/language/polish
$lang['hello'] = "Witaj";
$this->lang->load('polish_lang', 'polish');
$this->lang->line('hello');
Speichern Sie einfach den Rückgabewert dieser Funktion in einer Variablen, damit Sie sie in Ihrer Ansicht verwenden können.Wiederholen Sie die Schritte für die englische Sprache und alle anderen Sprachen, die Sie benötigen.
quelle
Um die Sprache zur Sitzung hinzuzufügen, würde ich einige Konstanten für jede Sprache definieren und dann sicherstellen, dass die Sitzungsbibliothek in config / autoload.php automatisch geladen ist, oder Sie laden sie, wann immer Sie sie benötigen. Fügen Sie der Sitzung die gewünschte Sprache des Benutzers hinzu:
Dann können Sie es jederzeit so greifen:
quelle
Fügen Sie im Controller die folgenden Zeilen hinzu, wenn Sie den Cunstructor erstellen
dh nach
parent :: Controller ();
Fügen Sie die folgenden Zeilen hinzu
Erstellen Sie die Hilfsdatei lang_translate_helper.php mit der folgenden Funktion und legen Sie sie im Verzeichnis system \ application \ helpers ab
Erstellen Sie für jede Sprache ein Verzeichnis mit Sprachabkürzungen wie en, nl, fr usw. unter system \ application \ language
Erstellen Sie eine Sprachdatei im obigen (jeweiligen) Verzeichnis, die das Array $ lang enthält, das Paare enthält. label => language_value (siehe unten)
nl_site_lang.php
en_site_lang.php
Sie können mehrere Dateien für dieselbe Sprache mit unterschiedlichen Anforderungen speichern. Wenn Sie beispielsweise eine separate Sprachdatei für die Verwaltung des Backends (Administratorabschnitt) benötigen, können Sie diese im Controller als $ this-> lang-> load ('nl_admin', 'verwenden.) nl ');
nl_admin_lang.php
und schließlich, um das Etikett in der gewünschten Sprache zu drucken, greifen Sie auf die Etiketten wie unten in der Ansicht zu
label ('welcome', $ this);
ODER
label ('Hallo Wort', $ this);
Beachten Sie das Leerzeichen in Hallo & Wort, das Sie auch so verwenden können :)
Wenn in der Sprachdatei kein Etikett definiert ist, wird einfach das gedruckt, was Sie an das Funktionsetikett übergeben haben.
quelle
Ich stimme Randells Antwort zu.
Man könnte jedoch immer ein GeoIP wie http://www.maxmind.com/app/php oder http://www.ipinfodb.com/ integrieren . Anschließend können Sie die Ergebnisse mit der Codeigniter-Sitzungsklasse speichern.
Wenn Sie die API ipinfodb.com verwenden möchten, können Sie die Datei ip2locationlite.class.php zu Ihrem Codeigniter-Anwendungsbibliotheksordner hinzufügen und dann eine Modellfunktion erstellen, um die für Ihre Anwendung erforderliche Geoip-Logik auszuführen, z.
quelle
Zur einfacheren Verwendung hat CI dies aktualisiert, sodass Sie es einfach verwenden können
und Text zu übersetzen
Wenn Sie es innerhalb des Etiketts verziehen möchten, verwenden Sie den optionalen Parameter
Dies wird ausgegeben
Zum guten Lesen http://ellislab.com/codeigniter/user-guide/helpers/language_helper.html
quelle
Ich habe die MY_Language-Klasse von Wiredesignz mit großem Erfolg verwendet.
Ich habe es gerade auf Github veröffentlicht, da ich anscheinend nirgendwo eine Spur davon finde.
https://github.com/meigwilym/CI_Language
Meine einzigen Änderungen bestehen darin, die Klasse gemäß den neuen Änderungen in Version 2 in CI_Lang umzubenennen.
quelle
Bei der Verwaltung der eigentlichen Dateien kann es leicht zu Synchronisierungen kommen, wenn Sie nicht wirklich wachsam sind. Deshalb haben wir einen (Beta) kostenlosen Dienst namens gestartet String , mit dem Sie Ihre Sprachdateien einfach verfolgen und mit Übersetzern zusammenarbeiten können.
Sie können entweder vorhandene Sprachdateien (in den Formaten PHP Array, PHP Define, Ini, Po oder .strings) importieren oder eigene Abschnitte von Grund auf neu erstellen und Inhalte direkt über das System hinzufügen.
Die Zeichenfolge ist völlig kostenlos. Bitte probieren Sie sie aus und teilen Sie uns Ihre Meinung mit.
Es basiert tatsächlich auch auf Codeigniter! Schauen Sie sich die Beta unter http://mygengo.com/string an
quelle
Folgen Sie diesem https://github.com/EllisLab/CodeIgniter/wiki/CodeIgniter-2.1-internationalization-i18n
Lesen Sie auch das Dokument unter http://ellislab.com/codeigniter/user-guide/libraries/language.html
sein Weg einfacher als
quelle
Ich verwende solchen Code in config.php:
.... und dann benutze ich normalerweise die interne Mechanik von CI
o, fast vergessen! In Ansichten verwende ich Schaltflächen, die die vom Benutzer bevorzugte Cookie-Sprache mit der Sprache festlegen.
Also, zuerst versucht dieser Code, "bevorzugte Sprache" zu erkennen, die im Useragent (Browser) des Benutzers festgelegt ist. Dann versuchen Sie mit dem Code, die Cookie-Sprache zu lesen. Und schließlich - Schalter legt die Sprache für die CI-Anwendung fest
quelle
Sie können eine Funktion wie diese erstellen
quelle
isset($lang[$language][$word]) == FALSE
würde der Code einfach so ausreichenisset($lang[$language][$word])
, da isset nur true und false zurückgibt. Und drittens, wenn Sie bewerten, ob etwas falsch ist, verwenden Sie IMMER===
, um den Typ zu überprüfen .Freund, keine Sorge, wenn Sie eine in Codeigniter integrierte Anwendung installiert haben und ein Sprachpaket hinzufügen möchten, gehen Sie einfach wie folgt vor:
1. Fügen Sie Sprachdateien im Ordner application / language / arabic hinzu (ich füge arabisch lang in sma2 in ci hinzu)
2. Gehen Sie auf die Datei mit dem Namen
setting.php
in application / modules / Einstellungen / views / setting.php . Hier finden Sie das ArraySpeichern Sie nun die Anwendung und führen Sie sie aus. Es hat gut funktioniert.
quelle
setting.php
wenn Sie eine Bibliothek oder einen Helfer verwendet haben. Bitte teilen Sie diese zuerst mit.