Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problem mit Mehrsprachigkeit und friendly URLs - I18N
#1
Hallo,

ich bekomme immer eine falsche URL angezeigt (aus backend > pages):
http://localhost/onlinestuff/GetSimple/en/.html

Im akt. GS und IN18 und Innovation-Template habe ich zwei Seiten in en (default) und de:
Welcome
> contenta

als Klone die de-Seiten, entsprechend mit dem _de an der slug,
also sozusagen vier Seiten.


(frei) nach http://mvlcek.bplaced.net/get-simple/i18n:en/
steht in den GS-settings
Use Fancy URLs: ON
%language%/%parent%/%slug%.html



in der Innovation-Template header.inc.php
get_i18n_navigation(get_page_slug(FALSE),0,0); und
template.php
get_i18n_navigation(return_page_slug());



mod_rewrite enabled



in der htaccess, zu %language%,
...
Quote:RewriteBase /onlinestuff/GetSimple/


# above permalink structure, english and german languages
RewriteRule ^/?$ en/ [R,L] # optional
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(en|de)/(.*?/)?([A-Za-z0-9-]+)/?$ index.php?id=$3&lang=$1 [QSA,L]
RewriteRule ^(en|de)/?$ index.php?lang=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+).html?$ index.php?id=$1 [QSA,L]

# orig
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
Wenn ich die GS-language-settings rausnehme, funktioniert GS ...
http://localhost/onlinestuff/GetSimple/?lang=en



Wie muß die korrekte URL heißen?
Wieso wird sie nicht angezeigt? Habe ich etwas übersehen?
Ist die Beschreibung von mvlcek ggf. veraltet?


Best, B.
Reply
#2
Ich weiss nicht, geht bei dir z.B.

http://DeineSeite.de/index_en

bei mir geht das, aber die Navigationsbar wird nicht in englisch dargestellt.

Habe mich auch an die Anleitung gehalten.

get_component finde ich allerdings auch nicht zum tauschen gegen mit get_i18n_component(id)

in der htaccess habe ich nichts geändert
Reply
#3
Mvlcek,

kannst du mal schauen, was hier falsch läuft? Ich kenne mich da nicht aus...

Gruss, Connie
|--

Das deutschsprachige GetSimple-(Unter-)Forum:   http://get-simple.info/forums/forumdisplay.php?fid=18
Reply
#4
Hallo Markus,


Quote:get_component finde ich allerdings auch nicht zum Tauschen gegen mit get_i18n_component(id)
das hängt wohl vom Template ab, das Du benutzt. Wenns im Code nicht enthalten ist, brauchst du es wohl nicht - in dem Fall enthälts Template wohl keine Komponenten.
Wichtig, auch fürs Menue ist wohl das get_navigation da ist & geändert wird



bei mir läufts so einigermaßen:
http://get-simple.info/forum/topic/4552/...error-404/
allerdings mit solchen urls:
domainname.tld/gs/inhalt/
domainname.tld/gs/en/inhalt/
also ohne Erweiterung wie .html



zumindest in anderer einsprachiger Installation war wichtig, dass in der htaccess, die entsprechende Erweiterung eingefügt wird, hier hinter der Klammer der ...html... Teil:
#RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
RewriteRule /?([A-Za-z0-9_-]+)\.html$ index.php?id=$1 [QSA,L]
das läuft perfekt.


Gruß, B.
Reply
#5
Hallo,

bei mir ist es genau umgekehrt in der HTACCESS:
ansonsten geht nichts.

Im Admin Bereich habe ich folgende einstellungen angekreuzt:
Nutze freundliche URLs - Erfordert mod_rewrite auf Ihrem Server JA

Die Seiten beim direktaufruf z.B. meineURL.de/index_en werden korrekt angezeigt, jedoch fehlt die englische Menüstruktur.

Code:
AddDefaultCharset ISO-8859-1
AddDefaultCharset UTF-8
Options -Indexes

# blocks direct access to the XML files - they hold all the data!
<Files ~ "\.xml$">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
<Files sitemap.xml>
        Order allow,deny
    Allow from all
    Satisfy All
</Files>

RewriteEngine on

# Usually it RewriteBase is just '/', but
# replace it with your subdirectory path
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
#RewriteRule /?([A-Za-z0-9_-]+).html?$ index.php?id=$1 [QSA,L]
Reply
#6
das heißt, dass Du ohne Erweiterung arbeitest,
also in den GS-Einstellungen kein .html eingetragen hast. (z.B. %slug%.html)

Ich bin nur auf den Zusammenhang zwischen den beiden Einstellungen
hingewiesen worden. Du kannst eine beliebige Erweiterung eintragen.
Diesen ganzen kryptischen htaccess-Codes sind mir ansonsten leider völlig rätselhaft
#)

Das mit Erweiterung hat aber weniger mit Deinem Menue-Sprache-Umstellproblem zu tun.

Grüße, B.
Reply
#7
Ja genau, ich arbeite ohne .html

Finde das nicht so wichtig. Die Seite wird bereits sehr gut indexiert.

So ein umschalten geht nicht: meineseite.de/?lang=en

Vieleicht muss ja noch ein anderer Aufruf gemacht werden.

Hier mal ausschnitte aus dem Template

Code:
<?php if(!defined('IN_GS')){ die('you cannot load this page directly.'); }
/****************************************************
* @File:         template.php
* @Package:        GetSimple
* @Action:        Acidmind theme for GetSimple CMS
*****************************************************/
?>
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" > <!--<![endif]-->

<head>
    <?php get_i18n_header(); ?>
    
    
  
</head>

<body id="<?php get_page_slug(); ?>" >
    
    <div id="topwrapper">
        
        <div id="header">
            <a class="logo" href="<?php get_site_url(); ?>"><?php get_site_name(); ?></a>
        </div><!-- end header -->
        
        <div id="menu">
            <ul id="nav">
                <?php get_i18n_navigation(return_page_slug(),0,10,I18N_SHOW_MENU); ?>
            </ul>
        </div><!-- end menu -->
        
    
</body>
</html>
Reply
#8
du scheinst das Acidmind theme zu verwenden.
Wenn ich da in template.php ändere: "replace get_navigation(return_page_slug()) with get_i18n_navigation(return_page_slug()) and get_component(id) with get_i18n_component(id) and get_header() with get_i18n_header()." (nach http://mvlcek.bplaced.net/get-simple/i18n:en/ )

ggf.: get_i18n_navigation(return_page_slug(),0,10)


und in die htaccess das vom Posting 2012-09-22 13:31:23 eintrage http://get-simple.info/forum/topic/4552/...error-404/

und in der htaccess der Eintrag zur RewriteBase stimmt


und in GS-Einstellungen
Nutze freundliche URLs "Ja" und
%nondefaultlanguage%/%slug%/

sollte es laufen, soetwas herauskommen:
http://www.domaninname.tld/gs/en/inhalt/
?

Gruß, B.
Reply
#9
Hallo,

wo soll denn das rein?

%nondefaultlanguage%/%slug%/
Reply
#10
in GS > Einstellungen: "Gewünschte URL-Permalink-Struktur"

Siehe hier
http://mvlcek.bplaced.net/get-simple/i18n:en/
Punkt: "Include the Language in the URL"

Du hast die Wahl zwischen %language% und %nondefaultlanguage% ...

Gruß, B.
Reply
#11
So, ich habe die Umschaltung hinbekommen. In der gsconfig musste die RAUTE vor Canonical weg !!!!

Habe nur noch ein Problem, wenn ich umschalte, dann zeigt es mir das Menü zwar in englisch, aber nach dem auswählen schaltet es sich wieder um auf DEUTSCH
Reply
#12
Quote:> musste die RAUTE vor Canonical weg
bei mir nicht. Dann gab es eine Fehler.
& Wo denn? Hier
Code:
# Enable Canonical Redirects?
#define('GSCANONICAL', 1);
oder schätze hier
Code:
# Canonical URLs
# define('I18N_SEPARATOR',':');

Quote:> wenn ich umschalte
mit welchem Schalter? Wo machst Du das denn?
Quote:> auf DEUTSCH
weil Dein Browser mit dieser lang. läuft?

Gruß, B.
Reply
#13
Hallo Guten Morgen

den Umschalter habe ich selber gemacht. Bei der englischen Seite ging es mit dem

<a href="<?php echo htmlspecialchars(return_i18n_lang_url('en')); ?>">englisch</a>

zurück zur deutschen habe ich einfach auf die hauptseite verlinkt.

Ich habe jetzt das Problem, das bei einem Seitenaufruf, die Startseite angezeigt wir. Dann gehe ich weiter und es steht dort /de/ hinter meinem domain namen. Wenn ich dann wieder zurück auf den Home button (index) gehe, dann fehler weil er dann meine index hinter httB//meine DOmain.de/de sucht und da ist ja keine
Reply
#14
Der hier sit der überltäter:

%nondefaultlanguage%/%parent%/%slug%/

wenn es so ausieht habe ich keine Probleme mehr
Reply
#15
markus2012 Wrote:Hallo Guten Morgen

den Umschalter habe ich selber gemacht. Bei der englischen Seite ging es mit dem

<a href="<?php echo htmlspecialchars(return_i18n_lang_url('en')); ?>">englisch</a>

zurück zur deutschen habe ich einfach auf die hauptseite verlinkt.

Ich habe jetzt das Problem, das bei einem Seitenaufruf, die Startseite angezeigt wir. Dann gehe ich weiter und es steht dort /de/ hinter meinem domain namen. Wenn ich dann wieder zurück auf den Home button (index) gehe, dann fehler weil er dann meine index hinter httB//meine DOmain.de/de sucht und da ist ja keine

Zum permanenten Umschalten der Sprache musst Du return_i18n_setlang_url verwenden.
I18N, I18N Search, I18N Gallery, I18N Special Pages - essential plugins for multi-language sites.
Reply
#16
schaltet return_i18n_setlang_url; auch richtig GS´s Default-Sprache um bzw. beeinflußt sie?

Ich habe ein p01-contact-Problem, da die Form.-Label-Sprachen nicht umgeschaltet wird,
und es heißt, "For GetSimple, default is the language defined in GetSimple", also scheint das
setlang nicht ganz in die Default-Sprache einzugreifen?
In der Datei p01-contact.php, in der Funktion public function lang($key), bleibt das
$this->default_lang immer 'en'.

Weißt jemand, wie ich in der Datei p01-contact.php an die gesetzte i18n_setlang-Sprache kommen kann,
wie ich entsprechendes array oder var nutzen kann?




-----

ein anderes Verhalten bemerke ich grad:
bei de/en/fr-Seite und einer Permalinkstruktur %nondefaultlanguage%/%parent%/%slug%.html
und de als Standard, also pure 'slug', ohne ein z.B. 'slug_en':
Wenn man mit einem englischsprachigen Browser (Konqueror) die Seite aufrufe, ist sie englisch. Zurück auf 'de' kommt man mit o.g. Link aber nicht, nur zwischen 'en' und 'fr' kann man noch wechseln. ... Sad
Da fehlt wohl irgendwo die 'de'-Zuordnung in der slug?

Bei "nondefaultlanguage" nicht vorgesehen, aber wenn man in die
URL die Defautsprache einklinkt, z.B. ein /de/, dann kommt er wieder auf die deutschsprachige Version - bleibt allerdings aus "guten" Gründen nicht da, da ja engl. browser ....
Dann funktioniert return_i18n_setlang_url; mit der "nondefaultlanguage"-Permalinkstruktur also so nicht?


Gruß, Bell.
Reply




Users browsing this thread: 1 Guest(s)