Bug 158438

Summary: Please avoid sentence splitting in system-config-bind
Product: [Fedora] Fedora Reporter: Christian Rose <menthos>
Component: system-config-bindAssignee: Jason Vas Dias <jvdias>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 4CC: goeran
Target Milestone: ---Keywords: i18n, StringChange
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 4.0.0-20 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-03-14 10:05:14 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Christian Rose 2005-05-22 12:13:05 UTC
system-config-bind as of lately includes an insane amount of chopped-up
translateable messages; that is, parts of translateable sentences that appear to
have been marked for translation seperately with seperate gettext calls.
Below is a fictive example of the problem to illustrate it:

  _("Doing") + _(" like this ") + _(" is ") + _("so") + _(" enormously ") +
_("fundamentally") + _(" broken") + _(" from ") + _("any translation point of
view.")

Sentences can *only* be properly be translated in full! There's no way proper
grammar, genders, or word order can be translated into another language without
complete access to the full sentence, like so:

  _("Doing like this is the only way a complete sentence can be properly
translated.")

You can read more about the endless amount of problems that sentence splitting
causes at
http://developer.gnome.org/doc/tutorials/gnome-i18n/developer.html#split-sentences.

Below is a non-complete list of weird sentence fragments that make no sense on
their own:

#: ../BIND.py:116 ../BIND.py:126
msgid "Zone "

#: ../BIND.py:116 ../BIND.py:126 ../BIND.py:134 ../BIND.py:136 ../Zone.py:167
msgid "file"

#: ../BIND.py:116
msgid "load error:"

#: ../BIND.py:174
msgid "contains a reference to an undefined ACL"

#: ../DNS.py:148
msgid "not allowed"

#: ../DNS.py:152
msgid "too long - it is over the 63 character limit"

#: ../DNS.py:287
msgid " weeks "

#: ../DNS.py:289
msgid " week "

#: ../DNS.py:293
msgid " days "

#: ../DNS.py:295
msgid " day "

#: ../DNS.py:299
msgid " hours "

#: ../DNS.py:301
msgid " hour "

#: ../DNS.py:305
msgid " minutes "

#: ../DNS.py:307
msgid " minute "

#: ../DNS.py:311
msgid " seconds "

#: ../DNS.py:313
msgid " second "

#: ../DNSsec.py:743
msgid "has zone"

#: ../DNSsec.py:752
msgid "contains zone"

#: ../DNSsec.py:250
msgid "for zone:"

#: ../DNSsec.py:742
msgid "Check that Remote Server"

#: ../DNSsec.py:751
msgid "Check that the directory"

#: ../DNSsec.py:744
msgid "in its $ROOTDIR/var/named directory."

#: ../DNSsec.py:330
msgid "was not found after dnssec-keygen completed."

#: ../DNSsec.py:725
msgid "and Zone Origin strings."

#: ../EditDialog.py:88
msgid "cannot be removed from this"

#: ../EditDialog.py:101
msgid "cannot be added to this"

#: ../EditDialog.py:87 ../EditDialog.py:100
msgid "The"

#: ../IPV4.py:203
msgid "is out of zone"

#: ../NamedConfOptions.py:170
msgid "Doesn't Have"

#: ../NamedConfOptions.py:170
msgid "Has"

#: ../NewView.py:26 ../RRGUI.py:2234 ../RRGUI.py:2959
msgid "already exists."

#: ../NewZone.py:72
msgid "already exists. Specify another Zone Origin."

#: ../NewZone.py:72
msgid "of class"

: ../RRGUI.py:122
msgid "or should I append a '.'?"

#: ../RRGUI.py:129
msgid " is out-of-zone "

#: ../RRGUI.py:507
msgid " contains invalid hex digits : only [0-9] [A-Z] [a-z] allowed."

#: ../RRGUI.py:972 ../RRGUI.py:977
msgid "removed."

#: ../RRGUI.py:1021 ../RRGUI.py:1024
msgid "is out-of-zone"

#: ../RRGUI.py:1924 ../RRGUI.py:1926
msgid "for"

#: ../RRGUI.py:2239
msgid "is an Access Control List name."

#: ../Zone.py:167
msgid "does not exist"

#: ../Zone.py:309 ../Zone.py:317
msgid "Save of Zone File "

#: ../ZoneTree.py:143
msgid "already exists. Specify another address."

#: ../ZoneTree.py:510 ../ZoneTree.py:513
msgid "and all its contents"

#: ../ZoneTree.py:528
msgid "Do you really want to delete"

#: ../ZoneTree.py:591
msgid "already exists in view"

Comment 1 Jason Vas Dias 2005-05-23 16:25:50 UTC
Do I need to modify s-c-b to join split sentences or can translation
be accomplished as is ?

Comment 2 Christian Rose 2005-05-23 22:44:46 UTC
Well, the answer depends...

Theoretically, a translator with access to the source code to be able
to reverse the sentence puzzle and nothing better to do, could in some
cases be able to retrofit translated sentence fragments as
translations of the existing messages with the existing message
design. This would still only hold for a very few languages though;
for many languages it would still be impossible to provide a correct
translation, especially if there are many conflicts (sentence
fragments used in different linguistic contexts).

Realistically, many translators wouldn't want to touch these messages
with a ten feet pole, since the time needed to reverse engineer these
sentence fragments could be better spent translating other pieces of
software instead. And the brave souls who try to translate this as-is
will probably in most cases produce translations that would make
Babelfish translations look like Shakespeare literature in comparison,
simply because they lack the time nor the patience to reverse engineer
the sentence puzzle, or, because it is impossible to provide a correct
translation for linguistic reasons with the current design.

Comment 3 Jason Vas Dias 2005-07-26 00:03:42 UTC
This is now fixed with system-config-bind-4.0.0-20 / redhat-config-bind-4.0.0-20.

I've done my best to avoid sentence splitting wherever possible without 
radical redesign.

Note that many strings that appear to be sentence fragments are actually 
proper nouns (eg. "Zone", "View"), dialog titles (eg. "Initializing to
defaults"), definitions (eg. "Processing of client requests." ) or are 
verbs / menu elements (eg. "Edit", "New", "Delete").

Let me know if you've any further issues with system-config-bind translation.

Thank You!




Comment 4 Göran Uddeborg 2006-03-14 10:05:14 UTC
Christian, I thinkt this is fine now.  I have around 10% still to do in my
update of system-config-bind, but it looks fine.  So I'll close this.