How to make the .po template: find . -type f -not -name \*.po -not -name \*.txt | xgettext -LC -k_ -f- --from-code utf-8 How to compare the .po template against a language file: msgcmp ../../menu.dat.de.po messages.po How to merge the .po template into a language file: msgmerge -U ../../menu.dat.de.po messages.po Guideline: - do NOT translate strings in error() messages, or in dprint()! - delete obviously useless developer prints while at it - change obvious developer prints from print to dprint (even in comments), unless in developer-only functions (e.g. *dumptree*) - mark translatable strings with _() - if a translatable string is a strcat monster, change it to sprintf - if code loads files with text, use language_filename() - interesting vim macros: :map # /" :map ' i_(2f"a)/" Unresolved TODO: - translated campaigns client/bgmscript.qc client/casings.qc client/ctf.qc client/damage.qc client/effects.qc client/gibs.qc client/hook.qc client/hud.qc client/hud.qh client/laser.qc client/Main.qc client/main.qh client/mapvoting.qc client/miscfunctions.qc client/modeleffects.qc client/movetypes.qc client/noise.qh client/particles.qc client/prandom.qc client/projectile.qc client/scoreboard.qc client/target_music.qc client/teamplay.qc client/teamradar.qc client/tuba.qc client/View.qc client/wall.qc client/waypointsprites.qc