Translate desktop and metainfo with xdgen

This commit is contained in:
Jeremy Soller 2026-02-25 09:25:51 -07:00 committed by Jacob Kauffmann
parent f3d6469bed
commit fab830c994
19 changed files with 164 additions and 63 deletions

60
Cargo.lock generated
View file

@ -1139,6 +1139,7 @@ dependencies = [
"tokio",
"url",
"vergen",
"xdgen",
]
[[package]]
@ -1887,6 +1888,16 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "freedesktop_entry_parser"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b368437186ec63ceb50d0832ee1ebcb5878037fe16ead1c68081d4aee0d140a"
dependencies = [
"indexmap",
"nom",
]
[[package]]
name = "fsevent-sys"
version = "4.1.0"
@ -2480,12 +2491,6 @@ dependencies = [
"foldhash 0.2.0",
]
[[package]]
name = "hashbrown"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51"
[[package]]
name = "heck"
version = "0.4.1"
@ -3058,12 +3063,12 @@ checksum = "40fac9d56ed6437b198fddba683305e8e2d651aa42647f00f5ae542e7f5c94a2"
[[package]]
name = "indexmap"
version = "2.14.0"
version = "2.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5"
dependencies = [
"equivalent",
"hashbrown 0.17.0",
"hashbrown 0.16.1",
"serde",
"serde_core",
]
@ -5457,7 +5462,7 @@ dependencies = [
"cfg-expr",
"heck 0.5.0",
"pkg-config",
"toml 1.1.2+spec-1.1.0",
"toml 1.1.0+spec-1.1.0",
"version-compare",
]
@ -5703,9 +5708,9 @@ dependencies = [
[[package]]
name = "toml"
version = "1.1.2+spec-1.1.0"
version = "1.1.0+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
checksum = "f8195ca05e4eb728f4ba94f3e3291661320af739c4e43779cbdfae82ab239fcc"
dependencies = [
"indexmap",
"serde_core",
@ -5727,9 +5732,9 @@ dependencies = [
[[package]]
name = "toml_edit"
version = "0.25.11+spec-1.1.0"
version = "0.25.6+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b"
checksum = "0db3bae107c9522f86d361697dee1d7386a2ddcf659d5aea5159819a21a3c4a7"
dependencies = [
"indexmap",
"toml_datetime",
@ -7360,6 +7365,18 @@ version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5"
[[package]]
name = "xdgen"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25af88f104f06d5aeb80c77e5eb85e6f6f355f86f6e34307a14befd716efe4bf"
dependencies = [
"fluent",
"freedesktop_entry_parser",
"unic-langid",
"xmltree",
]
[[package]]
name = "xkbcommon"
version = "0.7.0"
@ -7404,12 +7421,27 @@ dependencies = [
"bytemuck",
]
[[package]]
name = "xml"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "636f85e5ca6488e96401b61eb7de54f4e44755c988af0f52cf90230c312a1a89"
[[package]]
name = "xml-rs"
version = "0.8.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"
[[package]]
name = "xmltree"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbc04313cab124e498ab1724e739720807b6dc405b9ed0edc5860164d2e4ff70"
dependencies = [
"xml",
]
[[package]]
name = "xmlwriter"
version = "0.1.0"

View file

@ -6,6 +6,7 @@ rust-version = "1.93"
[build-dependencies]
vergen = { version = "8", features = ["git", "gitcl"] }
xdgen = "0.1"
[dependencies]
ashpd = { version = "0.12", optional = true }

View file

@ -1,5 +1,27 @@
use vergen::EmitBuilder;
use std::{env, fs, path::PathBuf};
use xdgen::{App, Context, FluentString};
fn main() {
EmitBuilder::builder().git_sha(true).emit().unwrap();
let id = "com.system76.CosmicPlayer";
let ctx = Context::new("i18n", env::var("CARGO_PKG_NAME").unwrap()).unwrap();
let app = App::new(FluentString("xdg-name"))
.comment(FluentString("xdg-comment"))
.keywords(FluentString("xdg-keywords"));
let output = PathBuf::from("target/xdgen");
fs::create_dir_all(&output).unwrap();
fs::write(
output.join(format!("{}.desktop", id)),
app.expand_desktop(format!("res/{}.desktop", id), &ctx)
.unwrap(),
)
.unwrap();
fs::write(
output.join(format!("{}.metainfo.xml", id)),
app.expand_metainfo(format!("res/{}.metainfo.xml", id), &ctx)
.unwrap(),
)
.unwrap();
}

View file

@ -46,3 +46,9 @@ ab-repeat = تكرار A-B
ab-repeat-set-a = تكرار A-B (A)
ab-repeat-set-b = تكرار A-B (B)
ab-repeat-clear = امحُ تكرار A-B
# XDG Metadata
xdg-name = مشغّل وسائط COSMIC
xdg-comment = مشغّل وسائط لسطح مكتب COSMIC
xdg-keywords = فيلم;مقطع;فيديو;صوت

View file

@ -31,3 +31,9 @@ ab-repeat = Opakování A-B
ab-repeat-set-a = Opakování A-B (A)
ab-repeat-set-b = Opakování A-B (B)
ab-repeat-clear = Vymazat opakování A-B
# XDG Metadata
xdg-name = Přehrávač médií COSMIC
xdg-comment = Přehrávač médií pro pracovní prostředí COSMIC
xdg-keywords = audio;film;hudba;video;média;zvuk;

View file

@ -45,3 +45,9 @@ ab-repeat = A-B Repeat
ab-repeat-set-a = A-B Repeat (A)
ab-repeat-set-b = A-B Repeat (B)
ab-repeat-clear = Clear A-B Repeat
# XDG Metadata
xdg-name = COSMIC Media Player
xdg-comment = Media player for the COSMIC desktop
xdg-keywords = Audio;Film;Movie;Music;Sound;Video;

View file

@ -36,3 +36,9 @@ open-recent-media-folder = Abrir carpetas multimedia recientes
close-media-folder = Cerrar carpeta multimedia
quit = Salir
off = Apagado
# XDG Metadata
xdg-name = Reproductor de medios COSMIC
xdg-comment = Reproductor de medios para el escritorio COSMIC
xdg-keywords = Audio;Película;Música;Vídeo;Sonido;Reproductor;

View file

@ -46,3 +46,9 @@ ab-repeat = AB ismétlés
ab-repeat-set-a = AB ismétlés (A)
ab-repeat-set-b = AB ismétlés (B)
ab-repeat-clear = AB ismétlés törlése
# XDG Metadata
xdg-name = COSMIC Médialejátszó
xdg-comment = Médialejátszó a COSMIC asztali környezethez
xdg-keywords = hang;film;zene;videó;média;lejátszó;

View file

@ -36,3 +36,9 @@ open-recent-media-folder = Apri cartella multimediale recente
close-media-folder = Chiudi cartella multimediale
quit = Esci
off = Off
# XDG Metadata
xdg-name = COSMIC Media Player
xdg-comment = Lettore multimediale di COSMIC
xdg-keywords = Audio;Video;Musica;Film;Suoni;Riproduzione;

View file

@ -46,3 +46,9 @@ ab-repeat-set-a = A-B Powtarzanie (A)
ab-repeat-set-b = A-B Powtarzanie (B)
ab-repeat-clear = Wyczyść Powtarzanie A-B
previous-frame = Poprzednia Klatka
# XDG Metadata
xdg-name = Odtwarzacz Multimediów COSMIC
xdg-comment = Odtwarzacz Multimediów dla środowiska graficznego COSMIC
xdg-keywords = Audio;Dźwięki;Filmy;Muzyka;Vídeo;Media;Odtwarzacz;Multimedia;

View file

@ -46,3 +46,9 @@ ab-repeat = Repetir A-B
ab-repeat-set-a = Repetir A-B (A)
ab-repeat-set-b = Repetir A-B (B)
ab-repeat-clear = Limpar repetição A-B
# XDG Metadata
xdg-name = Reprodutor de Mídia
xdg-comment = Reprodutor de mídia do desktop COSMIC
xdg-keywords = Audio;Filme;Música;Som;Vídeo;Media;Player;

View file

@ -35,3 +35,9 @@ open-media-folder = Abrir pasta de multimédias...
open-recent-media-folder = Abrir pasta recente de multimédias
close-media-folder = Fechar pasta de multimédia
quit = Sair
# XDG Metadata
xdg-name = Reprodutor de Mídia
xdg-comment = Reprodutor de mídia do desktop COSMIC
xdg-keywords = Audio;Filme;Música;Som;Vídeo;Media;Player;

View file

@ -39,3 +39,8 @@ ab-repeat = Повтор AB
ab-repeat-set-a = Повтор AB (уст. A)
ab-repeat-set-b = Повтор AB (уст. B)
ab-repeat-clear = Повтор AB (очистить)
# XDG Metadata
xdg-name = Медиаплеер
xdg-keywords = Аудио;Фильм;Музыка;Видео;Медиа;Звук;Мультимедиа;Медиаплеер;

View file

@ -30,3 +30,9 @@ open-media-folder = Otvoriť priečinok s médiami...
open-recent-media-folder = Otvoriť posledný priečinok s médiami
close-media-folder = Zatvoriť priečinok s médiami
quit = Ukončiť
# XDG Metadata
xdg-name = Prehrávač Médií COSMIC
xdg-comment = Prehrávač médií pre pracovné prostredie COSMIC
xdg-keywords = audio;film;hudba;video;prehrávač;média;zvuk;

View file

@ -46,3 +46,9 @@ ab-repeat = A-B-upprepning
ab-repeat-set-a = A-B-upprepning (A)
ab-repeat-set-b = A-B-upprepning (B)
ab-repeat-clear = Rensa A-B-upprepning
# XDG Metadata
xdg-name = COSMIC Mediaspelare
xdg-comment = Mediaspelare för skrivbordsmiljön COSMIC
xdg-keywords = Ljud;Film;Musik;Video;Media;

View file

@ -46,3 +46,7 @@ ab-repeat = A-B 重复
ab-repeat-set-a = A-B 重复A
ab-repeat-set-b = A-B 重复B
ab-repeat-clear = 清除 A-B 重复
# XDG Metadata
xdg-name = COSMIC 媒体播放器

View file

@ -13,11 +13,11 @@ bin-src := cargo-target-dir / 'release' / name
bin-dst := base-dir / 'bin' / name
desktop := APPID + '.desktop'
desktop-src := 'res' / desktop
desktop-src := 'target/xdgen' / desktop
desktop-dst := clean(rootdir / prefix) / 'share' / 'applications' / desktop
metainfo := APPID + '.metainfo.xml'
metainfo-src := 'res' / metainfo
metainfo-src := 'target/xdgen' / metainfo
metainfo-dst := clean(rootdir / prefix) / 'share' / 'metainfo' / metainfo
thumbnailer := APPID + '.thumbnailer'

View file

@ -1,18 +1,6 @@
#TODO: more build-out, desktop actions, translations?
[Desktop Entry]
Name=COSMIC Media Player
Name[ar]=مشغّل وسائط COSMIC
Name[cs]=Přehrávač médií COSMIC
Name[zh_CN]=COSMIC
Name[hu]=COSMIC Médialejátszó
Name[pl]=Odtwarzacz Multimediów COSMIC
Name[pt_BR]=Reprodutor de Mídia
Name[pt]=Reprodutor de Mídia
Name[ru]=Медиаплеер
Name[sk]=Prehrávač Médií COSMIC
Name[sv]=COSMIC Mediaspelare
Name[es]=Reproductor de medios COSMIC
Name[it]=COSMIC Media Player
Comment=Media player for the COSMIC desktop
Exec=cosmic-player %U
Terminal=false
Type=Application
@ -21,14 +9,3 @@ MimeType=application/mxf;application/ram;application/sdp;application/vnd.apple.m
Icon=com.system76.CosmicPlayer
Categories=COSMIC;AudioVideo;Player;Video;
Keywords=Audio;Film;Movie;Music;Sound;Video;
Keywords[ar]=فيلم;مقطع;فيديو;صوت
Keywords[cs]=audio;film;hudba;video;média;zvuk;
Keywords[hu]=hang;film;zene;videó;média;lejátszó;
Keywords[pl]=Audio;Dźwięki;Filmy;Muzyka;Vídeo;Media;Odtwarzacz;Multimedia;
Keywords[pt_BR]=Audio;Filme;Música;Som;Vídeo;Media;Player;
Keywords[ru]=Аудио;Фильм;Музыка;Видео;Медиа;Звук;Мультимедиа;Медиаплеер;
Keywords[pt]=Audio;Filme;Música;Som;Vídeo;Media;Player;
Keywords[sk]=audio;film;hudba;video;prehrávač;média;zvuk;
Keywords[sv]=Ljud;Film;Musik;Video;Media;
Keywords[es]=Audio;Película;Música;Vídeo;Sonido;Reproductor;
Keywords[it]=Audio;Video;Musica;Film;Suoni;Riproduzione;

View file

@ -9,33 +9,15 @@
<url type="homepage">https://github.com/pop-os/cosmic-player</url>
<url type="bugtracker">https://github.com/pop-os/cosmic-player</url>
<name>COSMIC Media Player</name>
<name xml:lang="ar">مشغّل وسائط COSMIC</name>
<name xml:lang="cs">Přehrávač médií COSMIC</name>
<name xml:lang="hu">COSMIC Médialejátszó</name>
<name xml:lang="pl">Odtwarzacz Multimediów COSMIC</name>
<name xml:lang="pt_BR">Reprodutor de Mídia</name>
<name xml:lang="pt">Reprodutor de Mídia</name>
<name xml:lang="sk">Prehrávač Médií COSMIC</name>
<name xml:lang="es">Reproductor de medios COSMIC</name>
<name xml:lang="it">COSMIC Media Player</name>
<name xml:lang="sv">COSMIC Mediaspelare</name>
<summary>Media player for the COSMIC desktop</summary>
<summary xml:lang="ar">مشغّل وسائط لسطح مكتب COSMIC</summary>
<summary xml:lang="cs">Přehrávač médií pro pracovní prostředí COSMIC</summary>
<summary xml:lang="hu">Médialejátszó a COSMIC asztali környezethez</summary>
<summary xml:lang="pl">Odtwarzacz Multimediów dla środowiska graficznego COSMIC</summary>
<summary xml:lang="pt_BR">Reprodutor de mídia do desktop COSMIC</summary>
<summary xml:lang="pt">Reprodutor de mídia do desktop COSMIC</summary>
<summary xml:lang="sk">Prehrávač médií pre pracovné prostredie COSMIC</summary>
<summary xml:lang="es">Reproductor de medios para el escritorio COSMIC</summary>
<summary xml:lang="it">Lettore multimediale di COSMIC</summary>
<summary xml:lang="sv">Mediaspelare för skrivbordsmiljön COSMIC</summary>
<description>
<p>Media player for the COSMIC desktop</p>
<p xml:lang="ar">مشغّل وسائط لسطح مكتب COSMIC</p>
<p xml:lang="cs">Přehrávač médií pro pracovní prostředí COSMIC</p>
<p xml:lang="hu">Médialejátszó a COSMIC asztali környezethez</p>
<p xml:lang="pl">Odtwarzacz Multimediów dla środowiska graficznego COSMIC</p>
<p
xml:lang="pl"
>Odtwarzacz Multimediów dla środowiska graficznego COSMIC</p>
<p xml:lang="pt_BR">Reprodutor de mídia do desktop COSMIC</p>
<p xml:lang="pt">Reprodutor de mídia do desktop COSMIC</p>
<p xml:lang="sk">Prehrávač médií pre pracovné prostredie COSMIC</p>
@ -43,8 +25,20 @@
<p xml:lang="es">Reproductor de medios para el escritorio COSMIC</p>
<p xml:lang="sv">Mediaspelare för skrivbordsmiljön COSMIC</p>
</description>
<keywords>
<keyword>Audio</keyword>
<keyword>Film</keyword>
<keyword>Movie</keyword>
<keyword>Music</keyword>
<keyword>Sound</keyword>
<keyword>Video</keyword>
</keywords>
<launchable type="desktop-id">com.system76.CosmicPlayer.desktop</launchable>
<icon type="remote" height="256" width="256">https://raw.githubusercontent.com/pop-os/cosmic-player/master/res/icons/hicolor/256x256/apps/com.system76.CosmicPlayer.svg</icon>
<icon
type="remote"
height="256"
width="256"
>https://raw.githubusercontent.com/pop-os/cosmic-player/master/res/icons/hicolor/256x256/apps/com.system76.CosmicPlayer.svg</icon>
<provides>
<id>com.system76.CosmicApplication</id>
<binaries>