如何为Mathematica 8的DictionaryLookup设置默认语言

时间:2012-10-05 03:06:46

标签: wolfram-mathematica

Mathematica 8的DictionaryLookup函数默认使用"English"作为语言。有没有办法将默认语言设置为"BritishEnglish""Spanish"

提前致谢。

1 个答案:

答案 0 :(得分:2)

似乎没有这方面的选项,但您可以修改DictionaryLookup的定义以适合您。

我将使用的方法依赖于DownValues的自动排序,并且是为版本7编写的,因此可能需要调整。您可以查看DownValues[DictionaryLookup]以查看函数是如何编写的,因为它是顶级 Mathematica 代码。

$dictionaryLanguage = "Spanish";

Unprotect[DictionaryLookup];

DictionaryLookup[pat : Except[_List], x___] /;
  ! TrueQ[$dicLang] && ValueQ[$dictionaryLanguage] :=
 Block[{$dicLang = True},
  DictionaryLookup[{$dictionaryLanguage, pat}, x]
  ]

DownValues[DictionaryLookup] = 
  RotateRight @ DownValues[DictionaryLookup];

Protect[DictionaryLookup];

使用此定义,如果设置$dictionaryLanguage,则该值将用于该语言。您可以使用$dictionaryLanguage =.恢复默认行为。例子:

$dictionaryLanguage = "Spanish";

DictionaryLookup["*orac*", 3]
  

{“adoración”,“aminoración”,“colaboración”}

$dictionaryLanguage =.;

DictionaryLookup["*orac*", 3]
  

{“coracle”,“coracles”,“Horace”}

知道你也打电话给DictionaryLookup之外的观察。您可以为这样的语言加载字典:

DataPaclets`Dictionary`ReloadDictionary["Dutch"]

将数据放在DataPaclets`Dictionary`$Dictionary中。搜索示例:

Pick[#, # ~StringMatchQ~ "*fzand*"] ~Take~ 4 & @ DataPaclets`Dictionary`$Dictionary
  

{“afzand”,“afzandde”,“afzandden”,“afzanderij”}

等效的DictionaryLookup查询:

DictionaryLookup[{"Dutch", "*fzand*"}, 4]
  

{“afzand”,“afzandde”,“afzandden”,“afzanderij”}

如果您经常使用这些工具,则可以在上下文路径中使用:

AppendTo[$ContextPath, "DataPaclets`Dictionary`"]

然后您可以按原样使用ReloadDictionary$Dictionary,而不使用上下文名称。