Closed egijasp closed 1 year ago
for me it seems we cannot do anything without modifying model.Messages
structure
so the situation:
XLIFF 1.2
to model.Messages
there is an original extracted xliff1.2
file
...
<file source-language="en" > // <- messages.language
<trans-unit id="1"> // <- messages[n].id
<source>Hello, world!</source> // <- messages[n].message
</trans-unit>
...
now if someone already translated it
...
<file source-language="en" target-language="ru"> // <- messages.language = ???
<trans-unit id="1"> // <- messages[n].id
<source>Hello, world!</source>
<target>ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!</target> // <- message[n].message ???
</trans-unit>
...
and more fun when only partial translation is in file
<file source-language="en" target-language="ru">// <- messages.language = ???
<trans-unit id="1"> // <- messages[n].id
<source>Hello, world!</source>
<target>ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!</target> // <- message[n].message ???
</trans-unit>
<trans-unit id="2"> // <- messages[n].id
<source>Hello, world2!</source> // <- ???
</trans-unit>
if we use target as message[n].message
then there could be situations where we loose messages, which should be unacceptable
model.Messages
to XLIFF 1.2
An XLIFF document is normally a bilingual file. It has one source language (the language of the original extracted file), and one target language.
as model.Messages
has only one message, then we cannot properly transform our modell.Message
to XLIFF1.2
.
<trans-unit id="1">
<source>Hello, world!</source>
<target>ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!</target>
</trans-unit>
model.Messages
<trans-unit id="1">
<source>Hello, world!</source> // or <source>ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!</source>
</trans-unit>
or
<trans-unit id="1">
<target>Hello, world!</target> // or <target>ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!</target>
</trans-unit>
Change our models
type Messages struct {
Language language.Tag
OriginalLang language.Tag // or just a bool
Messages []Message
}
type Message struct {
ID string
PluralID string
Source string // text to be translated in original language
Translated string // translated text in wanted language (Messages.Language)
Description string
Fuzzy bool
}
Same thing goes for XLIFF2
Reality is simpler:
file[source-language]
or file[source-language][target-language]
.Messages
as the original translation.file[source-language][target-language]
we require both Messages - original and translated one.
uploaded two schema=xliff_12 files, source language en-US (https://github.com/localizely/angular-i18n-example/blob/main/src/locale/messages.xlf), target language fr (https://github.com/localizely/angular-i18n-example/blob/main/src/locale/messages.fr.xlf).
returned listMessages, but in the fr file the message are in english :