[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#388824: select-with-translated-default-field may be a bit overzealous



tags 388824 patch
thanks

Hi,

Thijs Kinkhorst <thijs@debian.org> (22/09/2006):
> Our package uses a translated DefaultChoice field in the debconf
> templates, exactly as described in DevRef 6.5.4.4.
> 
> Lintian triggers a warning on this: select-with-translated-default-field.
> Since the warning doesn't apply, I'm overriding it. However, the warning
> is triggered for every occurrence in every po file. That means I'm now
> putting two overrides per language in our lintian-overrides file:
> 
> select-with-translated-default-field mailman/site_languages hu.utf-8
> select-with-translated-default-field mailman/default_server_language hu.utf-8
> select-with-translated-default-field mailman/site_languages ja.utf-8
> select-with-translated-default-field mailman/default_server_language ja.utf-8
> [...]
> 
> I think you'll get my point: we've got 13 languages already, equals 26
> overrides, and I expect this to only grow. Adding two overrides for
> every language that we add is not ideal.
> 
> So my question here is: is there a better way to solve this? Some ideas,
> in my order of preference, I don't know what's best or possible from
> your point of view though:
> 
> 1) Remove the test altogether. If I do not mark DefaultChoice as
>    translatable, then it will not appear in the .po file template, so
>    what's the chance of someone translating it nonetheless? And if they
>    do, it will be ignored so no harm done. I'm wondering what the test
>    tries to accomplish.
> 
> 2) If the test is actually needed, make sure it does not trigger if
>    DefaultChoice was marked as translatable. If it's marked as such, the
>    package maintainer intends for it to be translated.
> 
> 3) Trigger the warning only once for a package.
> 
> 4) Make the warning overridable categorically, i.e. I add
>    "select-with-translated-default-field mailman/site_languages" and all
>    those warnings will be overridden regardless of the last bit.

Attached is a patch that checks source packages instead of binary
packages. There are different advantages for this solution:
* it can easily ignore Default: fields with brackets (i.e. when the
  maintainer obviously wants this field translated). These brackets are
  not included in the binary packages.
* it catches the problem even if the package is not translated yet
* it includes other types (not only "select" and "multiselect", it is
  common to see things such as "Default: true" in case of boolean
  templates marked as translatable).

Cheers,

-- 
Thomas Huriaux
diff -ur /usr/share/lintian/checks/debconf checks/debconf
--- /usr/share/lintian/checks/debconf	2006-09-04 21:03:38.000000000 +0200
+++ checks/debconf	2006-09-26 15:01:06.000000000 +0200
@@ -215,10 +215,6 @@
 	# Tests on translations
 	my ($mainfield, $lang) = split m/-/, $field, 2;
 	if (defined $lang) {
-	    if ($isselect and $mainfield eq 'default') {
-	        tag "select-with-translated-default-field",
-	              "$template->{template} $lang";
-	    }
 	    $languages{$lang}{$mainfield}=1;
 	}
 	unless ($template_fields{$mainfield}) { # Ignore language codes here
diff -ur /usr/share/lintian/checks/debconf.desc checks/debconf.desc
--- /usr/share/lintian/checks/debconf.desc	2006-09-04 21:03:38.000000000 +0200
+++ checks/debconf.desc	2006-09-26 14:58:24.000000000 +0200
@@ -87,11 +87,6 @@
  is a duplicate of the short description. If you cannot provide a good
  extended description, it is better to leave it blank.
 
-Tag: select-with-translated-default-field
-Type: warning
-Info: You do not need to translate `Default:' fields of `select' or
- `multiselect' questions in templates.
-
 Tag: partially-translated-question
 Type: warning
 Info: If you translate the `Choices:' fields in a template, you should
diff -ur /usr/share/lintian/checks/po-debconf checks/po-debconf
--- /usr/share/lintian/checks/po-debconf	2006-05-17 04:09:04.000000000 +0200
+++ checks/po-debconf	2006-09-26 14:58:24.000000000 +0200
@@ -38,6 +38,13 @@
 	        $has_template = 1;
 		if ($file =~ m/templates\.\w\w(_\w\w)?$/) {
 			push (@lang_templates, $file);
+		} else {
+			open(PO, "< debfiles/$file")
+				or fail("Can't open debfiles/$file file.");
+			while (<PO>) {
+				tag "translated-default-field", "$file: $."
+					if (m/^_Default(Choice)?: [^[]*$/);
+			}
 		}
 	}
 }
diff -ur /usr/share/lintian/checks/po-debconf.desc checks/po-debconf.desc
--- /usr/share/lintian/checks/po-debconf.desc	2006-05-07 08:26:02.000000000 +0200
+++ checks/po-debconf.desc	2006-09-26 14:58:24.000000000 +0200
@@ -63,3 +63,14 @@
  This can be ensured by running debconf-updatepo in the 'clean' target
  of <tt>debian/rules</tt>. PO files will then always be up-to-date when
  building the source package.
+
+Tag: translated-default-field
+Type: warning
+Info: You should not mark as translatable `Default:' fields, unless
+ explicitly needed (e.g. default country, default language, etc.).
+ If this Default field really should be translated, you should explain
+ translators how they should translate it by using brackets.
+ For example:
+ .
+   _Default: English[ Default language name, but not translated]
+Ref: po-debconf(7)

Attachment: signature.asc
Description: Digital signature


Reply to: