2016-05-27 7 views
1

Mein Ziel ist es, eine mehrsprachige Website mit hugo erstellen. Denn dies würde Ich mag an:Verwenden Sie variable Sprache spezifische Zeichenfolgen in Hugo-Konfigurationsdatei

  • das Thema Datei nicht berühren
  • eine Konfigurationsdatei haben, die für alle Sprachen (config.toml)
  • haben eine „string“ Datei für alle Sprachen die Gesamtstruktur definiert

So zum Beispiel, würde ich eine config.toml Datei wie diese:

[params.navigation] 
    brand = "out-website" 

    [params.navigation.links] 
     about  = $ABOUT_NAME 
     services = $SERVICES_NAME 
     team  = $TEAM_NAME 
     impressum = $IMPRESSUM_NAME 

ein Englisch Sprache Datei:

ABOUT_NAME=About 
SERVICES_NAME=Services 
TEAM_NAME=Team 
IMPRESSUM_NAME=Impressum 

und ein Deutsch-Sprachdatei wie folgt aus:

ABOUT_NAME=Über uns 
SERVICES_NAME=Dienste 
TEAM_NAME=Mitarbeiter 
IMPRESSUM_NAME=Impressum 

Und dann will ich das Projekt für Englisch kompilieren, muss ich etwas entlang der Linie:

hugo --theme=... --config=config.toml --config=english.toml 

und deutsch:

hugo --theme=... --config=config.toml --config=german.toml 

Oder auf die gleiche Art und Weise.

Dafür brauche ich Variablen in der config.toml zu verwenden, die in english.toml definiert sind oder

Meine Google-Suche bisher sagen german.toml, dass ich nicht Variablen in TomL verwenden kann. Gibt es also einen anderen Ansatz, mit dem ich das erreichen könnte?

Antwort

0

Ihr Ansatz mit Variablen ist nicht optimal, verwenden Sie das folgende Tutorial.

Mehrsprachige Sites kommen als Feature auf Hugo 0.16, aber ich habe es geschafft, eine mehrsprachige Seite auf aktuellen Hugo mit this Tutorial und ein paar Hacks zu bauen.

Das obige Lernprogramm erfordert "einen separaten Domänennamen für jede Sprache". Ich habe es geschafft, das zu umgehen und Websites zu haben, einen im root (EN) und einen im Ordner (/ LT /).

Hier sind die Schritte, die ich verwendet habe.

  1. Richten Sie einen zuverlässigen Build Runner ein, Sie können Grunt/Gulp verwenden, aber ich habe npm-Skripte verwendet. Ich hackte npm-build-boilerplate und outsourced Rendering von Hugo. Hugo wird nur zum Generieren von Dateien verwendet. Das ist wichtig, weil 1) wir zwei Seiten erzeugen werden; 2) Hacks erfordern Operationen auf Ordnern, was ist einfach auf npm (ich bin nicht kompetent beim Erstellen von benutzerdefinierten Grunt/Gulp-Skripte).

  2. Richten Sie config_en.toml und config_de.toml im Stammordner ein, wie im Lernprogramm beschrieben.

Hier ist Auszug aus meiner Config_en.TomL:

contentdir = "content/en" 
publishdir = "public" 

Hier Auszug aus meinem config_lt.toml (es ist in Ihrem Fall DE ändern):

contentdir = "content/lt" 
publishdir = "public/lt" 

Grundsätzlich möchte ich meine website.com DE Version zeigen, und website.com/lt/ LT Version zeigen . Dies weicht vom Tutorial ab und erfordert Hacks.

  1. einrichten Übersetzungen in /data Ordner per Tutorial.

  2. Bonus: set-Snippet auf Dash up:

    {. {(Index $ .Site.Data.translations $ .Site.Params.locale) @ Cursor}}

Immer, wenn ich Geben Sie "trn" ein, ich bekomme das obige, was übrig bleibt, ist den Schlüssel aus der Übersetzungsdatei einzufügen und ich bekomme den Wert in der richtigen Sprache.

  1. Hack Teil. Der Blog Beiträge funktioniert gut auf /lt/, aber nicht statische Seiten (Landing pages). Ich benutze this Anweisung.

Grundsätzlich ist jede statische Seite, zum Beispiel content/lt/duk.md wird Slug gesetzt haben:

slug: "lt/duk" 

Aber diese Schnecke wird in Doppel URL-Pfad führen, zum Beispiel lt/lt/duk.

ich wiederherstellen diese meine npm Skripte Aufgabe mit rsync und manuellen Befehl redundanten Ordner löschen:

"restorefolders": "rsync -a public/lt/lt/ public/lt/ && rm -rf public/lt/lt/", 
Verwandte Themen