【问题标题】:How to handle strings with variables when translating an HTML website?翻译 HTML 网站时如何处理带变量的字符串?
【发布时间】:2015-01-30 10:22:43
【问题描述】:

我正在尝试制作字典来翻译网站。问题是我找不到一种方法来捕获带有变量的字符串!例如:

<div ... lang="fr">Something 52 something else</div>

其中 52 是一个变量,可以是任何数字。我希望是这样的:

"某事 * 其他":"blabla * blablabla bla"

任何想法如何使这项工作?

【问题讨论】:

  • 你的意思是:div[lang=fr]
  • 我没有用php,只有html和js!
  • 您可以使用i18next.com 使用JS 翻译您的文本。它确实管理变量。

标签: javascript json html dictionary


【解决方案1】:

您始终可以自己实现它:

function frmtStr() {
  var argCnt, out;

  argCnt = arguments.length;
  if (argCnt < 1) {
    return ""
  }
  out = arguments[0]; // your localized string.

  if (argCnt < 2) {
    return out
  }
  for(var i = 1; i < argCnt; i++) {
    // replace '*' with the arguments
    out = out.replace(/\*/, arguments[i]);
  }
  return out; 
}

frmtStr('foo *', 'bar'); // foo bar
frmtStr('foo * *', 'bar', 'lorem'); // foo bar lorem
frmtStr('* bar * * ', 'foo', 'lorem', 'ipsum'); // foo bar lorem ipsum

这并不完美,但它应该给你一个想法。我敢打赌,有大量的库提供此功能。

【讨论】:

  • 无序占位符有时是不够的,因为语言可以改变参数的顺序。添加$1, $2或类似名称,以便更改顺序。
  • 我的字典是 JSON!我不知道我可以在那里调用函数!
  • 您需要使用字典中的值更新您的 html。像这样的事情应该这样做。 document.getElementById(&lt;theId&gt;).innerHTML=frmtStr(&lt;DictionaryStringForThatId&gt;, &lt;arguments ...&gt;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多