不显示包含重音的字符串

时间:2018-03-31 10:04:48

标签: r utf-8 shiny multilingual

我目前正在构建一个需要翻译成不同语言的闪亮应用程序。我有整个结构,但我正在努力获得包含重音符号的“Validació”等值。

我遵循的结构如下:

  • 我有一个字典,只是一个csv,翻译在哪里 有一把钥匙,然后是每种语言。这本词典的结构如下:
key, cat, en
"selecció", "selecció", "Selection"
"Diferències","Diferències", "Differences"
"Descarregar","Descarregar", "Download"
"Diagnòstics","Diagnòstics", "Diagnoses"
  • 我有一个脚本,一旦修改了dictionary.csv,就生成一个.bin文件,稍后将在代码中加载。
  • 在strings.R中,我拥有将出现在代码中的所有字符串,并使用函数将当前语言翻译为我想要的语言。功能如下:

代码:

tr <- function(text){    
  sapply(text, function(s) translation[[s]][["cat"]], USE.NAMES=F) 
}

当我翻译某些内容时,由于我在另一个文件中,我将其分配给另一个变量,如:

str_seleccio <- tr('Selecció) 
  • 我面临的问题是,例如,如果我们翻译'Selecció'将是根据此函数tr('Selecció')并提供正确的答案,如果我在RStudio终端执行它,但当我做它在Shiny应用程序中,在我看来是NULL。如果我翻译的单词没有重音符号,例如“Hello”,tr("Hello")在Shiny应用程序中为我提供了正确的答案,我可以通过代码看到它。

所以主要是tr(word)得到正确的值但是在分配它时“丢失了值”所以我有点迷失了怎么做。

我知道您可以执行Encoding(str_seleccio) <- "UTF-8"之类的操作,但在这种情况下无效。如果它曾经做过简单的话,但是当我指出它时,得到NULL是行不通的。

有什么想法吗?有什么建议吗?我想要的是向tr function

添加内容

主要想法来自这个存储库,如果你可以看看你可以做的最简单的版本,但是他也有utf-8的问题。

https://github.com/chrislad/multilingualShinyApp

1 个答案:

答案 0 :(得分:1)

http://shiny.rstudio.com/articles/unicode.html中建议(重新)保存所有使用UTF-8编码的文件。

updateTranslation.R内进行更改:

translationContent <- read.delim("dictionary.csv", header = TRUE, sep = "\t", as.is = TRUE)

为:

translationContent <- read.delim("dictionary.csv", header = TRUE, sep = "\t", as.is = TRUE, fileEncoding = "UTF-8")

警告,当您(重新)保存ui.R时,您的&#34; c-cedilla&#34;可能会被摧毁。只要重新插入它,万一它就会发生。

复活节快乐:)