【发布时间】:2018-12-17 21:38:42
【问题描述】:
以下代码返回一条消息,说明输入值是否为回文:
(为了这篇文章,语法并不重要,或者用任何特定的语言编写)
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();
}
}
请注意,在此示例中,无法本地化异常中的消息。我知道这可以使用第一个示例中的相同原则轻松解决,但它的设计目的是为了证明缺乏全球化。
因此,什么时候应该将全球化应用于代码,以便它可以本地化?什么时候重要,什么时候不重要?
【问题讨论】:
标签: localization language-agnostic globalization