...

Package po

import "github.com/chai2010/gettext-go/po"
Overview
Index

Overview ▾

Package po provides support for reading and writing GNU PO file.

Examples:

import (
	"github.com/chai2010/gettext-go/po"
)

func main() {
	poFile, err := po.LoadFile("test.po")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%v", poFile)
}

The GNU PO file specification is at http://www.gnu.org/software/gettext/manual/html_node/PO-Files.html.

type Comment

Comment represents every message's comments.

type Comment struct {
    StartLine         int      // comment start line
    TranslatorComment string   // #  translator-comments // TrimSpace
    ExtractedComment  string   // #. extracted-comments
    ReferenceFile     []string // #: src/msgcmp.c:338 src/po-lex.c:699
    ReferenceLine     []int    // #: src/msgcmp.c:338 src/po-lex.c:699
    Flags             []string // #, fuzzy,c-format,range:0..10
    PrevMsgContext    string   // #| msgctxt previous-context
    PrevMsgId         string   // #| msgid previous-untranslated-string
}

func (*Comment) GetFuzzy

func (p *Comment) GetFuzzy() bool

GetFuzzy gets the fuzzy flag.

func (*Comment) SetFuzzy

func (p *Comment) SetFuzzy(fuzzy bool)

SetFuzzy sets the fuzzy flag.

func (Comment) String

func (p Comment) String() string

String returns the po format comment string.

type File

File represents an PO File.

See http://www.gnu.org/software/gettext/manual/html_node/PO-Files.html

type File struct {
    MimeHeader Header
    Messages   []Message
}

func Load

func Load(data []byte) (*File, error)

Load loads po file format data.

func LoadFile

func LoadFile(path string) (*File, error)

LoadFile loads a named po file.

func (*File) Data

func (f *File) Data() []byte

Save returns a po file format data.

func (*File) Save

func (f *File) Save(name string) error

Save saves a po file.

func (*File) String

func (f *File) String() string

String returns the po format file string.

Header is the initial comments "SOME DESCRIPTIVE TITLE", "YEAR" and "FIRST AUTHOR <EMAIL@ADDRESS>, YEAR" ought to be replaced by sensible information.

See http://www.gnu.org/software/gettext/manual/html_node/Header-Entry.html#Header-Entry

type Header struct {
    Comment                        // Header Comments
    ProjectIdVersion        string // Project-Id-Version: PACKAGE VERSION
    ReportMsgidBugsTo       string // Report-Msgid-Bugs-To: FIRST AUTHOR <EMAIL@ADDRESS>
    POTCreationDate         string // POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE
    PORevisionDate          string // PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
    LastTranslator          string // Last-Translator: FIRST AUTHOR <EMAIL@ADDRESS>
    LanguageTeam            string // Language-Team: golang-china
    Language                string // Language: zh_CN
    MimeVersion             string // MIME-Version: 1.0
    ContentType             string // Content-Type: text/plain; charset=UTF-8
    ContentTransferEncoding string // Content-Transfer-Encoding: 8bit
    PluralForms             string // Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;
    XGenerator              string // X-Generator: Poedit 1.5.5
    UnknowFields            map[string]string
}

func (Header) String

func (p Header) String() string

String returns the po format header string.

type Message

A PO file is made up of many entries, each entry holding the relation between an original untranslated string and its corresponding translation.

See http://www.gnu.org/software/gettext/manual/html_node/PO-Files.html

type Message struct {
    Comment               // Coments
    MsgContext   string   // msgctxt context
    MsgId        string   // msgid untranslated-string
    MsgIdPlural  string   // msgid_plural untranslated-string-plural
    MsgStr       string   // msgstr translated-string
    MsgStrPlural []string // msgstr[0] translated-string-case-0
}

func (Message) String

func (p Message) String() string

String returns the po format entry string.