View | Details | Raw Unified | Return to bug 25067
Collapse All | Expand All

(-)a/misc/translator/LangInstaller.pm (-25 / +20 lines)
Lines 148-181 sub po_filename { Link Here
148
}
148
}
149
149
150
sub get_trans_text {
150
sub get_trans_text {
151
    my ($self, $msgctxt, $msgid) = @_;
151
    my ($self, $msgid, $default) = @_;
152
152
153
    my $key = ($msgctxt // '') . ";$msgid";
153
    my $po = $self->{po}->{Locale::PO->quote($msgid)};
154
155
    my $po = $self->{po}->{$key};
156
    if ($po) {
154
    if ($po) {
157
        my $msgstr = Locale::PO->dequote($po->msgstr);
155
        my $msgstr = Locale::PO->dequote($po->msgstr);
158
156
        if ($msgstr and length($msgstr) > 0) {
159
        return $msgstr || $msgid;
157
            return $msgstr;
158
        }
160
    }
159
    }
161
160
162
    return $msgid;
161
    return $default;
163
}
162
}
164
163
165
sub get_translated_tab_content {
164
sub get_translated_tab_content {
166
    my ($self, $tab, $tab_content) = @_;
165
    my ($self, $file, $tab_content) = @_;
167
166
168
    if ( ref($tab_content) eq 'ARRAY' ) {
167
    if ( ref($tab_content) eq 'ARRAY' ) {
169
        return $self->get_translated_prefs($tab, $tab_content);
168
        return $self->get_translated_prefs($file, $tab_content);
170
    }
169
    }
171
170
172
    my $translated_tab_content = {
171
    my $translated_tab_content = {
173
        map {
172
        map {
174
            my $section = $_;
173
            my $section = $_;
175
            my $sysprefs = $tab_content->{$section};
174
            my $sysprefs = $tab_content->{$section};
176
            my $context = "$tab > $section";
175
            my $msgid = sprintf('%s %s', $file, $section);
177
176
178
            $self->get_trans_text($tab, $section) => $self->get_translated_prefs($context, $sysprefs);
177
            $self->get_trans_text($msgid, $section) => $self->get_translated_prefs($file, $sysprefs);
179
        } keys %$tab_content
178
        } keys %$tab_content
180
    };
179
    };
181
180
Lines 183-189 sub get_translated_tab_content { Link Here
183
}
182
}
184
183
185
sub get_translated_prefs {
184
sub get_translated_prefs {
186
    my ($self, $context, $sysprefs) = @_;
185
    my ($self, $file, $sysprefs) = @_;
187
186
188
    my $translated_prefs = [
187
    my $translated_prefs = [
189
        map {
188
        map {
Lines 192-198 sub get_translated_prefs { Link Here
192
191
193
            my $translated_syspref = [
192
            my $translated_syspref = [
194
                map {
193
                map {
195
                    $self->get_translated_pref("$context > $pref_name", $_ );
194
                    $self->get_translated_pref($file, $pref_name, $_);
196
                } @$_
195
                } @$_
197
            ];
196
            ];
198
197
Lines 204-213 sub get_translated_prefs { Link Here
204
}
203
}
205
204
206
sub get_translated_pref {
205
sub get_translated_pref {
207
    my ($self, $context, $syspref) = @_;
206
    my ($self, $file, $pref_name, $syspref) = @_;
208
207
209
    unless (ref($syspref)) {
208
    unless (ref($syspref)) {
210
        return $self->get_trans_text($context, $syspref // '');
209
        $syspref //= '';
210
        my $msgid = sprintf('%s#%s# %s', $file, $pref_name, $syspref);
211
        return $self->get_trans_text($msgid, $syspref);
211
    }
212
    }
212
213
213
    my $translated_pref = {
214
    my $translated_pref = {
Lines 219-225 sub get_translated_pref { Link Here
219
            if (($key eq 'choices' || $key eq 'multiple') && ref($value) eq 'HASH') {
220
            if (($key eq 'choices' || $key eq 'multiple') && ref($value) eq 'HASH') {
220
                $translated_value = {
221
                $translated_value = {
221
                    map {
222
                    map {
222
                        $_ => $self->get_trans_text($context, $value->{$_})
223
                        my $msgid = sprintf('%s#%s# %s', $file, $pref_name, $value->{$_});
224
                        $_ => $self->get_trans_text($msgid, $value->{$_})
223
                    } keys %$value
225
                    } keys %$value
224
                }
226
                }
225
            }
227
            }
Lines 239-251 sub install_prefs { Link Here
239
        exit;
241
        exit;
240
    }
242
    }
241
243
242
    my @po_entries = @{ Locale::PO->load_file_asarray($self->po_filename("-pref.po"), 'utf8') };
244
    $self->{po} = Locale::PO->load_file_ashash($self->po_filename("-pref.po"), 'utf8');
243
    $self->{po} = { map {
244
        my $msgctxt = $_->msgctxt ? Locale::PO->dequote($_->msgctxt) : '';
245
        my $msgid = Locale::PO->dequote($_->msgid);
246
247
        "$msgctxt;$msgid" => $_;
248
    } @po_entries };
249
245
250
    for my $file ( @{$self->{pref_files}} ) {
246
    for my $file ( @{$self->{pref_files}} ) {
251
        my $pref = LoadFile( $self->{path_pref_en} . "/$file" );
247
        my $pref = LoadFile( $self->{path_pref_en} . "/$file" );
Lines 255-261 sub install_prefs { Link Here
255
                my $tab = $_;
251
                my $tab = $_;
256
                my $tab_content = $pref->{$tab};
252
                my $tab_content = $pref->{$tab};
257
253
258
                $self->get_trans_text(undef, $tab) => $self->get_translated_tab_content($tab, $tab_content);
254
                $self->get_trans_text($file, $tab) => $self->get_translated_tab_content($file, $tab_content);
259
            } keys %$pref
255
            } keys %$pref
260
        };
256
        };
261
257
262
- 

Return to bug 25067