Menu

Tree [cbad19] master backup/ubuntu-24.04-synced-to-master-20260706T144807Z backup/ubuntu-26.04-synced-to-master-20260706T144807Z /
 History

HTTPS access


File Date Author Commit
 .github 2022-03-14 Hegel3DReloaded Hegel3DReloaded [68135a] Create FUNDING.yml
 ac-aux 2023-08-25 Hegel3DReloaded Hegel3DReloaded [715633] Start work on 2.4, add monitor blanking to FP L...
 bin 2023-08-25 Hegel3DReloaded Hegel3DReloaded [715633] Start work on 2.4, add monitor blanking to FP L...
 data 2023-11-06 Hegel3DReloaded Hegel3DReloaded [3552a7] Include Picom.conf in data/config_templates/Mak...
 doc 2023-09-09 Hegel3DReloaded Hegel3DReloaded [486e8e] Typo dinamically fix
 lib 2023-09-09 Hegel3DReloaded Hegel3DReloaded [486e8e] Typo dinamically fix
 nscde_tools 2023-09-09 Hegel3DReloaded Hegel3DReloaded [486e8e] Typo dinamically fix
 patches 2021-10-24 Ron Jeremy Ron Jeremy [b4b81f] Beginning of autoconf/automake
 pkg 2026-06-15 Reaper Reaper [48ace4] pkg/debian: add manual pages and source cleanup...
 po 2023-09-09 Hegel3DReloaded Hegel3DReloaded [486e8e] Typo dinamically fix
 src 2023-08-25 Hegel3DReloaded Hegel3DReloaded [715633] Start work on 2.4, add monitor blanking to FP L...
 xdg 2026-06-15 Reaper Reaper [ebf702] Fix workspace manager desktop entry categories
 .gitignore 2023-09-09 Hegel3DReloaded Hegel3DReloaded [20424b] Add configure~ to .gitignore
 COPYING 2019-03-19 root root [744ab8] Initial upload
 ChangeLog 2022-07-24 Hegel3DReloaded Hegel3DReloaded [24f643] Prepare for release of 2.2
 INSTALL.md 2023-10-13 Jaedeok Kim Jaedeok Kim [2d3e14] Remove `libstroke`-related commands from the "V...
 Makefile.am 2021-11-11 Hegel3DReloaded Hegel3DReloaded [2d2f2c] Tune debian package build end
 Makefile.in 2023-08-25 Hegel3DReloaded Hegel3DReloaded [715633] Start work on 2.4, add monitor blanking to FP L...
 NsCDE.png 2021-12-18 Hegel3DReloaded Hegel3DReloaded [8e6271] Update front page screenshot for 2.0
 README.localization 2021-10-20 Hegel3DReloaded Hegel3DReloaded [f27bb0] Further work on FHS standards #16
 README.md 2026-07-05 Hegel3DReloaded Hegel3DReloaded [a4ba2f] Notice of project return in autumn
 ReleaseNotes.txt 2023-09-09 Hegel3DReloaded Hegel3DReloaded [486e8e] Typo dinamically fix
 TODO 2023-06-05 Hegel3DReloaded Hegel3DReloaded [67761a] Write ReleaseNotes.txt, update packaging files,...
 aclocal.m4 2023-08-25 Hegel3DReloaded Hegel3DReloaded [715633] Start work on 2.4, add monitor blanking to FP L...
 autogen.sh 2021-10-24 Ron Jeremy Ron Jeremy [b4b81f] Beginning of autoconf/automake
 configure 2023-09-09 Hegel3DReloaded Hegel3DReloaded [486e8e] Typo dinamically fix
 configure.ac 2023-09-09 Hegel3DReloaded Hegel3DReloaded [486e8e] Typo dinamically fix
 LICENSE 2021-11-09 Hegel3DReloaded Hegel3DReloaded [2ab227] Rearrange docs hierarchy

Read Me

Notices about localization
==========================

Introduction
------------

NsCDE supports localization by custom LocalePath for fvwm and UseGettext
directives in the FvwmScript scripts.

All part of visible text provided by NsCDE has localization ability with
the restriction of the Workspace names, which are localized according to
locale present during user's first setup. That is: "One", "Two", "Three"
and "Four" are translated by catching text with gettext(1). Later this
workspaces can be renamed by user as needed.

LANGUAGE and/or LC_MESSAGES must be set for localization to work correctly.

First translated language from original English is Croatian. Other
translations are welcome.

Both .po and .mo localization files are provided in the installation path
$NSCDE_ROOT/share/locale/<lang>/LC_MESSAGES

There are some pitfalls and things which must be observed when translating
to the new languages. Existing .po files in "hr" can serve as a template for
new translations since just msgstr lines must be replaced and msgid's are
already there.


Warnings
--------

This are the things for which translator must be careful:

- FvwmScript based programs and dialogs are unflexible. This means text must
  somehow fit in dozen of the spaces english size of the phrases and sentences.
  This is not always the case, but visual testing should be made to see if new
  text breaks widget sizes or maybe exceeds in visually ugly way on some side.
  This means alternative wording in new language must be considered, or even at
  some places abbrevations deployed for things to stay smooth.

- Some smaller child FvwmScript dialogs are using parent ".po" files. For
  example, NColorsDialog and ModifyColor are using NsCDE-ColorMgr.po, while
  PaletteDialog is using BackdropMgr from the parent etc etc ...


Notifier
--------

- Notifier dialogs are flexible. Size of the text doesn't matter here. Only
  thing that can go wrong is that on the 7-10 places, there are split
  sentences which if translated literally, can break the logic of the sentence
  in a new language. Search "f_Notifier" FVWM function call in config, libexec
  and lib/scripts directories (Functions.fvwmconf specially) and try to
  reproduce them from command line with FvwmCommand or FvwmConsole. For example,
  you can wrote ~/Test.conf with the content 

f_Notifier "FpLite Function Error" "Dismiss" "NsCDE/Error.xpm" \
 "$[gt.Error: Func:f_FpLiteClickAction: Cannot find top(1), prstat(1m) or topas(5) in PATH] $[PATH]."

  ... and then call it with FvwmCommand 'Read $[HOME]/Test.conf'. You should see
  the dialog in english, and after it is localized, in other language. By picking
  this messages from the code and main system configuration, you can test it in
  the relatively easy way. Notifier translations are in the main "NsCDE.po".

  Warning: when recompiling "NsCDE.po" into "NsCDE.mo", NsCDE should be
  restarted immediately, or you rish the crash with the segfault. Looks like
  Compiled locale file are treated like dlopened libraries by FVWM.

  Other ".po" files can be msgfmt'ed without restarting NsCDE (FVWM).

- All Notifier translations are in NsCDE.po, either from this used by the FVWM
  functions or by the FvwmScript programs and dialogs.


Other Dialogs
-------------

- InputForm is also reading "NsCDE.mo" - used in FontMgr and ColorMgr for now.


Menus
-----
- FVWM menus are also flexible, but following should be observed:
  - acceleration key is choosen by prefixing accelerator key with a "&" sign.
    For example "R&aise" means if menu is opened and "a" typed, Raise will
    be executed. This "a" after "&" is underlined. In many cases, different words
    from english may not have that letter, or other options on the same menu
    can have it, even multiple times. It is on translator to introduce new
    acceleration keys here. Sign "&" is written in "NsCDE.po" file with the
    words in msgid and msgstr lines. See existing example, and consult fvwm(1)
    for more about FVWM menus.

- While menus are flexible, they can become excessingly fat if some translation
  considerably differs from english in length. As with FvwmScript, combine
  different wording and if nothing fits, try to use abbrevations.


Initial Setup
-------------

Initial user setup script is using "nscde-bootstrap.po".


Misc
----

- Probably you will run into double definitions, specially for some short string
  translations. If you see error from msgfmt, handle it. This is specially the
  true for the main NsCDE.po

- Test every translation. Do not assume it is ok until you don't see it.

- Many of the original messages are using over-capitalization of terms as in
  original CDE. In first (croatian) translation this is mimicked. It is up to
  the translator to decide if this questionable style is going to be followed
  or not, but if you decide not to follow, remember that some terms are names
  and must be capitalized anyway.

- Calendar applet does not have translation. LC_CTYPE (or overlapping LC_ALL)
  from the user's environment will set abbrevated month name automatically.

- Good place for LANGUAGE and/or LC_MESSAGES are ~/.bash_profile (or equivalent
  in other shells) or $FVWM_USERDIR/NsCDE.conf in the form of FVWM "SetEnv"
  directives for setting environment variables.

- Translations should be complete, or at least 90% complete. There is no point
  to have half translated localizations.