Следующий код возвращает сообщение, в котором указывается, является ли входное значение палиндромом:
(ради этого поста синтаксис не важен или написан на каком-либо конкретном языке)
function isPalindrome(
value: string,
successMessage: string = "Is palindrome",
failureMessage: string = "Is not palindrome"): string {
return value.reverse() == value ? successMessage : failureMessage;
}
Обратите внимание, что в приведенном выше коде сообщения по умолчанию написаны на английском языке, однако, поскольку они предоставляются в качестве параметров, этот метод может быть легко локализован, и поскольку метод имеет значения по умолчанию длясообщения, это не заставляет разработчика предоставлять их;например:
isPalindrome("level") // returns "Is palindrome"
Однако мы можем продемонстрировать локализацию;например, на испанском:
isPalindrome("level", "es palíndromo", "no es palíndromo") // returns "es palíndromo"
Это заставило меня задуматься, когда должен ли код быть разработан с учетом локализации?
Другой пример будет с исключениями;например:
class PalindromeException : Exception("Is not a palindrome")
function validatePalindrome(value: string): void {
if (value.reverse() != value) {
throw PalindromeException();
}
}
Обратите внимание, что в этом примере нет способа локализовать сообщение в исключении.Я знаю, что это можно легко исправить, используя те же принципы, что и в первом примере, но он был специально разработан для демонстрации отсутствия глобализации.
Поэтому, когда следует применять глобализацию к коду, чтобы он мог бытьлокализованы?Когда это имеет значение, а когда нет?