2014-12-10 3 views
1

В настоящее время я разрабатываю приложение для нескольких языков, используя пакет tap-i18n. Интересно, как я могу переводить ошибки.
Я могу захватить код, а затем отобразить пользовательское сообщение, которое я бы написал в файл перевода раньше.
Но я видел на this post, есть лучший способ сделать это с другим пакетом i18n.Интернационализация кодов ошибок с помощью tap-i18n

Кто-нибудь знает, есть ли способ сделать что-то вроде tap-i18n?


EDIT: Сейчас я делаю что-то вроде этого:

Meteor.call('createNewUser', newUser, function (error, ret) 
{ 
    if (!error) 
     displayError(TAPi18n.__('success'), TAPi18n.__('new_user_success'), TAPi18n.__('ok'), "btn-success btn-lg", "success-popup"); 
    else 
    { 
     switch (error.error) 
     { 
      case 403: 
       displayError(TAPi18n.__('danger'), TAPi18n.__('new_user_already_exist'), TAPi18n.__('ok'), "btn-danger btn-lg", "danger-popup"); 
       break; 
      default: 
       displayError(TAPi18n.__('danger'), TAPi18n.__('new_user_error'), TAPi18n.__('ok'), "btn-danger btn-lg", "danger-popup"); 
       break; 
     } 
    } 
}); 

ответ

3

Мой ответ может быть немного не по теме, но вы имеете в виду ошибки приложения? Если это так, вы не должны действительно возвращать это пользователям, поскольку это может стать недостатком безопасности, предоставляя им слишком много информации.

От OWASP: https://www.owasp.org/index.php/Error_Handling

Таким образом, вы можете обрабатывать ошибки, и дать пользователям именно то, что вы хотите, чтобы они знали.

Просто укажите сообщения об ошибках в вашем переводе и действуйте так же, как при нормальных строках для перевода.

Надеюсь, это поможет.

EDIT: Теперь я понимаю, что вы имеете в виду. Насколько я знаю, такого варианта нет, так как есть только -1818. В качестве предложения для unbloating Кодекса немного, вы могли бы использовать вспомогательную функцию, такие как:

function t(keyToTranslate){ 
    return TAPi18n.__(keyToTranslate) 
} 

И в коде:

displayError(t('danger'), t('new_user_already_exist'), t('ok'), "btn-danger btn-lg", "danger-popup"); 

Немного наивное предложение, но нет никакой функциональности, чтобы отобразить насколько я знаю, ошибок в этом пакете. То, как вы справляетесь с этим, кажется мне правильным.

+0

Hum ... мой пост может быть немного расплывчатым. Я пытаюсь выполнить учетную запись Account.createUser и получить ошибку, например, когда имя пользователя уже выполнено. Пользователь должен быть предупрежден об этой ошибке, и я увидел на другом посту, что вы можете определить перевод кода ошибки с помощью just-i18n. –

+0

Спасибо за трюк, это умный совет;) –

+0

Без проблем, рад помочь :) –