国际化文本及网页展示字符换行符在网页中未生效

700 阅读1分钟

在使用NextJS开发中,在国际化中设置换行符\n发现未生效,通过排查,整理步骤如下,以下方法使用用网页展示包含换行符的文本未生效的问题:

  1. 检查您的 Next.js next.config.js配置,以确保正确定义了 i18n 设置。确保已正确指定区域设置和默认区域设置。下面是一个示例配置:
// next.config.js
module.exports = {
  i18n: {
    locales: ['en', 'sr', 'es'],
    defaultLocale: 'en'
  }
}

 
  1. 确保已正确设置国际化路由。Next.js 提供自 v10.0.0 起对国际化路由的内置支持。有关如何配置它的更多信息,请查看有关 i18n 路由的 Next.js 文档。
  1. 如果您使用的是next-i18next用于处理国际化的库,请确保您已正确配置它。检查next-i18next.config.js文件以确保正确设置了默认区域设置和区域设置。下面是一个示例配置:
// next-i18next.config.js
module.exports = {
  i18n: {
    defaultLocale: 'en',
    locales: ['en', 'sv']
  },
  reloadOnPrerender: process.env.NODE_ENV === 'development'
}

 
  1. 如果使用存储在 JSON 文件中的翻译,请确保在翻译字符串中包含换行符。例如:
{
  "key": "Hello world\nThis sentence should appear on the second line"
}

 
  1. 要在 Next.js 组件中呈现带有换行符的翻译文本,可以使用 CSS 来处理换行符。将以下 CSS 添加到组件或全局样式中:
.text-with-line-breaks {
  white-space: pre-line;
}

 
  1. 将 CSS 类应用于包含已翻译文本的元素。例如:
<div className="text-with-line-breaks">{t('key')}</div>

 
  1. 如果以上不行,请尝试以下办法:
<p dangerouslySetInnerHTML={{ __html: t('key').replace(/\n/g, '<br />') }}></p>

这些步骤应有助于解决换行符在国际化中或网页中展示不起作用的问题。