~ubuntu-branches/ubuntu/utopic/vice/utopic

« back to all changes in this revision

Viewing changes to src/translate.c

  • Committer: Package Import Robot
  • Author(s): Logan Rosen
  • Date: 2014-05-10 21:08:23 UTC
  • mfrom: (17.2.1 utopic-proposed)
  • Revision ID: package-import@ubuntu.com-20140510210823-r7x98jmpl1x7rgop
Tags: 2.4.dfsg+2.4.6-1ubuntu1
Use autotools-dev to update config.{sub,guess} for new arches.

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
 
65
65
static char *get_string_by_id(int id)
66
66
{
67
 
  unsigned int k;
 
67
    unsigned int k;
68
68
 
69
 
  for (k = 0; k < countof(string_table); k++)
70
 
  {
71
 
    if (string_table[k].resource_id==id)
72
 
      return string_table[k].text;
73
 
  }
74
 
  return NULL;
 
69
    for (k = 0; k < countof(string_table); k++) {
 
70
        if (string_table[k].resource_id == id) {
 
71
            return string_table[k].text;
 
72
        }
 
73
    }
 
74
    return NULL;
75
75
}
76
76
 
77
77
static char *sid_return = NULL;
136
136
    old = new;
137
137
#endif
138
138
 
139
 
#ifdef HAVE_RESID_FP
140
 
    /* add resid-fp options if available */
141
 
    if (en_resource != IDCLS_SPECIFY_SIDCART_ENGINE_MODEL) {
142
 
        new = util_concat(old, ", ", translate_text(IDCLS_RESIDFP_ENGINE_MODEL), NULL);
143
 
        lib_free(old);
144
 
        old = new;
145
 
    }
146
 
#endif
147
 
 
148
139
    /* add ending bracket */
149
140
    new = util_concat(old, ")", NULL);
150
141
    lib_free(old);
161
152
 
162
153
static void translate_text_init(void)
163
154
{
164
 
  unsigned int i,j;
165
 
  char *temp;
 
155
    unsigned int i, j;
 
156
    char *temp;
166
157
 
167
 
  for (i = 0; i < countof(language_table); i++)
168
 
  {
169
 
    for (j = 0; j < countof(translate_text_table); j++)
170
 
    {
171
 
      if (translate_text_table[j][i]==0)
172
 
        text_table[j][i]=NULL;
173
 
      else
174
 
      {
175
 
        temp=get_string_by_id(translate_text_table[j][i]);
176
 
        text_table[j][i]=intl_convert_cp(temp, language_cp_table[i]);
177
 
      }
 
158
    for (i = 0; i < countof(language_table); i++) {
 
159
        for (j = 0; j < countof(translate_text_table); j++) {
 
160
            if (translate_text_table[j][i] == 0) {
 
161
                text_table[j][i] = NULL;
 
162
            } else {
 
163
                temp = get_string_by_id(translate_text_table[j][i]);
 
164
                text_table[j][i] = intl_convert_cp(temp, language_cp_table[i]);
 
165
            }
 
166
        }
178
167
    }
179
 
  }
180
168
}
181
169
 
182
170
char translate_id_error_text[30];
183
171
 
184
172
char *translate_text(int en_resource)
185
173
{
186
 
  unsigned int i;
187
 
  char *retval = NULL;
188
 
 
189
 
  if (en_resource == IDCLS_UNUSED)
190
 
      return NULL;
191
 
 
192
 
  if (en_resource == 0)
193
 
  {
194
 
    log_error(LOG_DEFAULT, "TRANSLATE ERROR: ID 0 was requested.");
195
 
    return "ID 0 translate error";
196
 
  }
197
 
 
198
 
  /* handle sid cmdline special case translations */
199
 
  if (en_resource == IDCLS_SPECIFY_SIDCART_ENGINE_MODEL ||
200
 
      en_resource == IDCLS_SPECIFY_SID_ENGINE_MODEL ||
201
 
      en_resource == IDCLS_SPECIFY_SIDDTV_ENGINE_MODEL) {
202
 
      return translate_and_build_sid_cmdline_option(en_resource);
203
 
  }
204
 
 
205
 
  if (en_resource < 0x10000)
206
 
  {
207
 
    retval = intl_translate_text(en_resource);
208
 
  }
209
 
  else
210
 
  {
211
 
    for (i = 0; i < countof(translate_text_table); i++)
212
 
    {
213
 
      if (translate_text_table[i][0] == en_resource)
214
 
      {
215
 
        if (translate_text_table[i][current_language_index]!=0 &&
216
 
            text_table[i][current_language_index]!=NULL &&
217
 
            strlen(text_table[i][current_language_index])!=0)
218
 
          retval = text_table[i][current_language_index];
219
 
        else
220
 
          retval = text_table[i][0];
221
 
      }
222
 
    }
223
 
  }
224
 
 
225
 
  if (retval == NULL)
226
 
  {
227
 
    log_error(LOG_DEFAULT, "TRANSLATE ERROR: ID %d was requested, and would be returning NULL.",en_resource);
228
 
    sprintf(translate_id_error_text,"ID %d translate error",en_resource);
229
 
    retval = translate_id_error_text;
230
 
  }
231
 
 
232
 
  return retval;
 
174
    unsigned int i;
 
175
    char *retval = NULL;
 
176
 
 
177
    if (en_resource == IDCLS_UNUSED) {
 
178
        return NULL;
 
179
    }
 
180
 
 
181
    if (en_resource == 0) {
 
182
        log_error(LOG_DEFAULT, "TRANSLATE ERROR: ID 0 was requested.");
 
183
        return "ID 0 translate error";
 
184
    }
 
185
 
 
186
    /* handle sid cmdline special case translations */
 
187
    if (en_resource == IDCLS_SPECIFY_SIDCART_ENGINE_MODEL ||
 
188
        en_resource == IDCLS_SPECIFY_SID_ENGINE_MODEL ||
 
189
        en_resource == IDCLS_SPECIFY_SIDDTV_ENGINE_MODEL) {
 
190
        return translate_and_build_sid_cmdline_option(en_resource);
 
191
    }
 
192
 
 
193
    if (en_resource < 0x10000) {
 
194
        retval = intl_translate_text(en_resource);
 
195
    } else {
 
196
        for (i = 0; i < countof(translate_text_table); i++) {
 
197
            if (translate_text_table[i][0] == en_resource) {
 
198
                if (translate_text_table[i][current_language_index] != 0 &&
 
199
                    text_table[i][current_language_index] != NULL &&
 
200
                    strlen(text_table[i][current_language_index]) != 0) {
 
201
                    retval = text_table[i][current_language_index];
 
202
                } else {
 
203
                    retval = text_table[i][0];
 
204
                }
 
205
            }
 
206
        }
 
207
    }
 
208
 
 
209
    if (retval == NULL) {
 
210
        log_error(LOG_DEFAULT, "TRANSLATE ERROR: ID %d was requested, and would be returning NULL.", en_resource);
 
211
        sprintf(translate_id_error_text, "ID %d translate error", en_resource);
 
212
        retval = translate_id_error_text;
 
213
    }
 
214
 
 
215
    return retval;
233
216
}
234
217
 
235
218
int translate_res(int en_resource)
236
219
{
237
 
  return intl_translate_res(en_resource);
 
220
    return intl_translate_res(en_resource);
238
221
}
239
222
 
240
223
/* --------------------------------------------------------------------- */
246
229
    util_string_set(&current_language, "en");
247
230
    current_language_index = 0;
248
231
 
249
 
    if (strlen(lang) != 2)
 
232
    if (strlen(lang) != 2) {
250
233
        return 0;
 
234
    }
251
235
 
252
236
    for (i = 0; i < countof(language_table); i++) {
253
 
        if (!strcasecmp(lang,language_table[i])) {
254
 
            current_language_index=i;
 
237
        if (!strcasecmp(lang, language_table[i])) {
 
238
            current_language_index = i;
255
239
            util_string_set(&current_language, language_table[i]);
256
240
            intl_update_ui();
257
241
            return 0;
269
253
 
270
254
int translate_resources_init(void)
271
255
{
272
 
  intl_init();
273
 
  translate_text_init();
 
256
    intl_init();
 
257
    translate_text_init();
274
258
 
275
 
  return resources_register_string(resources_string);
 
259
    return resources_register_string(resources_string);
276
260
}
277
261
 
278
262
void translate_resources_shutdown(void)
279
263
{
280
 
  unsigned int i,j;
281
 
 
282
 
  for (i = 0; i < countof(language_table); i++)
283
 
  {
284
 
    for (j = 0; j < countof(translate_text_table); j++)
285
 
    {
286
 
      lib_free(text_table[j][i]);
287
 
    }
288
 
  }
289
 
  intl_shutdown();
290
 
  lib_free(current_language);
291
 
 
292
 
  /* check if sid_return is already built */
293
 
  if (sid_return != NULL) {
294
 
      lib_free(sid_return);
295
 
  }
 
264
    unsigned int i, j;
 
265
 
 
266
    for (i = 0; i < countof(language_table); i++) {
 
267
        for (j = 0; j < countof(translate_text_table); j++) {
 
268
            lib_free(text_table[j][i]);
 
269
        }
 
270
    }
 
271
    intl_shutdown();
 
272
    lib_free(current_language);
 
273
 
 
274
    /* check if sid_return is already built */
 
275
    if (sid_return != NULL) {
 
276
        lib_free(sid_return);
 
277
    }
296
278
}
297
279
 
298
280
static const cmdline_option_t cmdline_options[] =
312
294
 
313
295
void translate_arch_language_init(void)
314
296
{
315
 
  char *lang;
 
297
    char *lang;
316
298
 
317
 
  lang=intl_arch_language_init();
318
 
  set_current_language(lang, "");
 
299
    lang = intl_arch_language_init();
 
300
    set_current_language(lang, "");
319
301
}
320
302
#else
321
303
 
322
304
char *translate_text(int en_resource)
323
305
{
324
 
  if (en_resource == IDCLS_UNUSED)
325
 
      return NULL;
326
 
 
327
 
  if (en_resource == 0)
328
 
  {
329
 
    log_error(LOG_DEFAULT, "TRANSLATE ERROR: ID 0 was requested.");
330
 
    return "ID 0 translate error";
331
 
  }
332
 
 
333
 
  /* handle sid cmdline special case translations */
334
 
  if (en_resource == IDCLS_SPECIFY_SIDCART_ENGINE_MODEL ||
335
 
      en_resource == IDCLS_SPECIFY_SID_ENGINE_MODEL ||
336
 
      en_resource == IDCLS_SPECIFY_SIDDTV_ENGINE_MODEL) {
337
 
      return translate_and_build_sid_cmdline_option(en_resource);
338
 
  }
339
 
 
340
 
  return _(get_string_by_id(en_resource));
 
306
    if (en_resource == IDCLS_UNUSED) {
 
307
        return NULL;
 
308
    }
 
309
 
 
310
    if (en_resource == 0) {
 
311
        log_error(LOG_DEFAULT, "TRANSLATE ERROR: ID 0 was requested.");
 
312
        return "ID 0 translate error";
 
313
    }
 
314
 
 
315
    /* handle sid cmdline special case translations */
 
316
    if (en_resource == IDCLS_SPECIFY_SIDCART_ENGINE_MODEL ||
 
317
        en_resource == IDCLS_SPECIFY_SID_ENGINE_MODEL ||
 
318
        en_resource == IDCLS_SPECIFY_SIDDTV_ENGINE_MODEL) {
 
319
        return translate_and_build_sid_cmdline_option(en_resource);
 
320
    }
 
321
 
 
322
    return _(get_string_by_id(en_resource));
341
323
}
342
324
#endif