Empfehlungen: Erweiterte Suche

Keine Umlaute trotz UTF 8

Unterstützung der Daten-Formatierung in den Views (DRY)

Keine Umlaute trotz UTF 8

Beitragvon Mathias » Sa 14. Feb 2009, 14:59

Hallo,

ich bin gerade am rumprobieren, meine Applikation etwas internationaler zu machen.
Ich hab also .po-Dateien erstellt und ein paar Strings eingetragen.

Der Header der deutschen Datei:
Code: Alles auswählen
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: keks <keks@dose.de>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: German\n"
"X-Poedit-Country: GERMANY\n"
"X-Poedit-SourceCharset: utf-8\n"

Also alles in UTF-8 abgespeichert.
In der View dann
Code: Alles auswählen
__('Delete', true)


Jedenfalls kommt da kein ö bei Löschen raus, sondern ö

Echo ich das ganze, wird es ohne Probleme dargestellt. Nur beim Return gibts dieses Problem.

Weiß jemand, woran das liegen kann?
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: Keine Umlaute trotz UTF 8

Beitragvon getit » Di 17. Feb 2009, 13:39

Hallo Mathias,

ich kann Dir leider nicht so ganz folgen:
1. Was hat es mit dem Code auf sich:
Code: Alles auswählen
__('Delete', true)

2.
Jedenfalls kommt da kein ö bei Löschen raus, sondern ö
Welchem löschen?
3.
Nur beim Return gibts dieses Problem.
Hä?

Also ich habe bei Datumfeldern mit i18n gearbeitet.
Aber ich habe nie mit irgendwelchen Headern oder sonstigem Code gearbeitet.

Das einzige was ich gemacht habe ist eine Datei "/app/locale/deu/LC_MESSAGES/default.po" anzulegen:
Code: Alles auswählen

msgid "January"
msgstr "Januar"

msgid "February"
msgstr "Februar"

msgid "March"
msgstr "März"

...
 


Vielleicht hilft Dir das ja schonmal weiter.
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: Keine Umlaute trotz UTF 8

Beitragvon Mathias » Di 17. Feb 2009, 14:16

Hi,

Das mit mit msgid und msgstr ist mir schon klar. Ich bin wahrscheinlich schon wieder weiter gewesen mit meinen Gedanken :)
Für Delete steht in der deutschen .po Löschen.

Der Header ist kein Muss, aber PoEdit erstellt nun mal für mich. Ich könnte ihn auch rauslöschen. Aber es könnte ja sein, dass, wenn der Header in einer Datei steht, dass man dort was falsches eintragen könnte.

zu 1.
__('Delete', true) ist Teil von I18n und lädt den String für 'Delete' in der ausgewählten Sprache. true bedeutet, dass der String returned wird. False bedeutet echo, somit wird der String an Ort und Stelle ausgegeben.
Es gibt also zwei Möglichkeiten, in der View diesen String auszugeben:
Code: Alles auswählen
<?php echo __('Delete', true);?>
ODER
Code: Alles auswählen
<?php __('Delete')?> /**bzw.**/ <?php __('Delete', false)?>

Im Controller/Model wird man nur die erste Variante verwenden, da man echo dort nicht braucht.

zu 2.
Damit meinte ich die Übersetzung für das Wort 'Delete'. Anstatt 'Löschen' erscheint 'Löschen'.

zu 3.
Benutze ich nun <?php __('Delete')?> /**bzw.**/ <?php __('Delete', false)?> wird Löschen ohne Probleme dargestellt, also 'Löschen'. Benutze ich aber <?php echo __('Delete', true);?>, kommt 'Löschen' bei raus. In der View mag das jetzt nicht das Problem sein, aber im Controller kann ich nun mal kein echo verwenden (z.B. für flash messages).


Und ich hab die Dateien in UTF-8 abgespeichert.
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: Keine Umlaute trotz UTF 8

Beitragvon euromark » Di 17. Feb 2009, 14:44

wenn auch die views, in denen du diese __() drin hast, in UTF8 kodiert sind, ist das natürlich sehr seltsam.
weil dann sollte (und tut es bei mir testweise) auch funzen...

aber ich verwende eh nur englische kurztexte als strings, und übersetze alles mit den .po files
euromark
 
Beiträge: 617
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Keine Umlaute trotz UTF 8

Beitragvon Mathias » Di 17. Feb 2009, 14:56

Naja, ich doch auch. __('No new Blog articles posted') führt zu 'Keine neuen Blog Beiträge eingetragen'.
Kann es sein, dass irgendeine Datei, die ich irgendwo inkludiere nicht UTF-8 ist und damit das ganze nicht funzt?

/edit: also ich denke, dass es an sowas liegt. Wenn ich im Firefox die Zeichenkodierung auf UTF-8 umstelle, funzt es. Standard ist aber westlich.
Und ich hab auch gerade gesehen, dass dummerweise viele Dateien nicht UTF-8 sondern westlich gespeichert wurden. Gibt es irgendwie ne Möglichkeit, alle Dateien in UTF-8 zu konvertieren ohne jede einzelne zu öffnen, zu konvertieren und neu abzuspeichern?

/edit²: EInfach mal den Wald vor lauter Bäumen nicht mehr sehen ;)
Code: Alles auswählen
<?php echo $html->charset('UTF-8'); ?>

Dennoch steht ja die Frage mit dem Massenkonvertieren noch.
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x


Zurück zu Helper

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron