Fill out the xliff exporter
This commit is contained in:
parent
0df0ff9419
commit
a8a61cf03f
7
l10n-db/i18n/TimeDistance.toml
Normal file
7
l10n-db/i18n/TimeDistance.toml
Normal file
@ -0,0 +1,7 @@
|
||||
key = "TimeDistance"
|
||||
description = "A summary of a workout or many workouts that involve a time and a distance"
|
||||
|
||||
[variants.en]
|
||||
locale = "en"
|
||||
content = "{distance} of {activity} in {hours, plural, =1 {{hours} hour}, other {{hours} hours} and {minutes, plural, =1 {{minutes} minute} other {{minutes} minutes}}"
|
||||
modified = "2025-02-24T14:09:17.361641899Z"
|
@ -19,16 +19,24 @@ pub fn export_fh(
|
||||
locale: LanguageIdentifier,
|
||||
fh: &mut File,
|
||||
) -> Result<(), WriteError> {
|
||||
let output = io::stdout();
|
||||
let mut writer = EmitterConfig::new()
|
||||
.perform_indent(true)
|
||||
.create_writer(output);
|
||||
.create_writer(fh);
|
||||
|
||||
writer.write(XmlEvent::start_element("xliff")).unwrap();
|
||||
writer.write(XmlEvent::start_element("file")).unwrap();
|
||||
writer
|
||||
.write(
|
||||
XmlEvent::start_element("xliff")
|
||||
.attr("xmlns", "urn:oasis:names:tc:xliff:document:2.0")
|
||||
.attr("version", "2.0")
|
||||
.attr("srcLang", &format!("{}", locale)),
|
||||
)
|
||||
.unwrap();
|
||||
writer
|
||||
.write(XmlEvent::start_element("file").attr("id", "main"))
|
||||
.unwrap();
|
||||
|
||||
for (key, message) in bundle.message_iter() {
|
||||
write_message(&mut writer, message, &locale);
|
||||
write_message(&mut writer, key, message, &locale);
|
||||
}
|
||||
|
||||
writer.write(XmlEvent::end_element()).unwrap();
|
||||
@ -36,13 +44,28 @@ pub fn export_fh(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn write_message<T>(writer: &mut EventWriter<T>, message: &Message, locale: &LanguageIdentifier)
|
||||
where
|
||||
fn write_message<T>(
|
||||
writer: &mut EventWriter<T>,
|
||||
key: &str,
|
||||
message: &Message,
|
||||
locale: &LanguageIdentifier,
|
||||
) where
|
||||
T: std::io::Write,
|
||||
{
|
||||
writer.write(XmlEvent::start_element("unit")).unwrap();
|
||||
writer.write(XmlEvent::start_element("segment")).unwrap();
|
||||
writer.write(XmlEvent::characters(message.variant(locale).unwrap().content())).unwrap();
|
||||
writer.write(XmlEvent::end_element()).unwrap();
|
||||
writer.write(XmlEvent::end_element()).unwrap();
|
||||
[
|
||||
XmlEvent::start_element("unit").attr("id", key).into(),
|
||||
XmlEvent::start_element("notes").into(),
|
||||
XmlEvent::start_element("note").into(),
|
||||
XmlEvent::characters(message.description()).into(),
|
||||
XmlEvent::end_element().into(),
|
||||
XmlEvent::end_element().into(),
|
||||
XmlEvent::start_element("segment").into(),
|
||||
XmlEvent::start_element("source").into(),
|
||||
XmlEvent::characters(message.variant(locale).unwrap().content()).into(),
|
||||
XmlEvent::end_element().into(),
|
||||
XmlEvent::end_element().into(),
|
||||
XmlEvent::end_element().into(),
|
||||
]
|
||||
.into_iter()
|
||||
.for_each(|elem: XmlEvent| writer.write(elem).unwrap());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user