Thank for you explication, but still, there is probably a better way to do it. I'm not en expert on translation update packaging (even if I am a GNOME Project translator), but here is two small idea : Idea 1 : Why not just split the *-lang spec from the main spec? -> Case 1 : We want to update the translation - We add/update a patch in the *-lang spec. No full rebuild needed. -> Case 2 : Upstream update their translation - If they release a point release, we probably have to rebuild anyway, so we rebuild the two package. - If they don't, we take the updated .po/.mo, and we only update the *-lang package. No conflict, no unnecessary full rebuild. We'll need to maintain two spec file, but the *-lang will probably be really short (something like "open source", "patch source with new translation", "find *.po files", then "make *.mo from *.po files", and we package it. And on the main package, we'll do "find *.mo/*.po", "remove them"). Idea 2 : instal the N-1 source package, compare them with the N sources, and build only if there are change between N-1 source and N source. After that, try updating the *-lang package (if there is difference). Still a rebuild, but much shorter (only *.mo will be "build" if there is no change). There is probably a way to do a RPM macro for this.