国际化(i18n:代表“国际化”为“i”后跟18个字母,其次是“n”)是规划和实施产品和服务的过程,以便它们可以轻松地适应特定的当地语言和文化,这一过程称为本地化。国际化过程有时被称为翻译或本地化启用。
我们最近决定为我们的应用程序支持多种语言(Angular 13.x)。经过研究,我们决定使用 Angular/Localize 包,这似乎非常适合我们的需求。
我已经使用 intl 包对我的应用程序进行了国际化,它有两种不同的语言。该应用程序还有两种不同的风格。我想对每种风格的语言使用不同的翻译文件。我
@intlify/unplugin-vue-i18n 以奇怪的结构导入语言环境 json 文件
我想国际化一个简单的 vue 应用程序,我使用了 vue-i18n 和 unplugin-vue-i18n。我期望 vue 3 api 组合中的以下片段呈现单词 John: 我想国际化一个简单的 vue 应用程序,我使用了 vue-i18n 和 unplugin-vue-i18n。我希望 vue 3 api 组合中的以下片段呈现单词 John: <template> ... <h2>{{ $tm('name') }}</h2> ... <template> 但它返回奇怪的 json 字符串,如下所示: { "type": 0, "start": 0, "end": 3, "loc": { "start": { "line": 1, "column": 1, "offset": 0 }, "end": { "line": 1, "column": 4, "offset": 3 }, "source": "John" }, "body": { "type": 2, "start": 0, "end": 3, "loc": { "start": { "line": 1, "column": 1, "offset": 0 }, "end": { "line": 1, "column": 4, "offset": 3 } }, "items": [ { "type": 3, "start": 0, "end": 3, "loc": { "start": { "line": 1, "column": 1, "offset": 0 }, "end": { "line": 1, "column": 4, "offset": 3 } } } ], "static": "John" } } 以下是配置文件: 包.json: ... "dependencies": { "@headlessui/vue": "^1.7.23", "@intlify/unplugin-vue-i18n": "^5.2.0", "pinia": "^2.1.7", "vue": "^3.5.9", "vue-i18n": "^9.14.1", "vue-router": "^4.3.3" }, ... vite.config.ts: import { fileURLToPath, URL } from 'node:url' import { resolve, dirname } from "node:path"; import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite"; export default defineConfig({ server: { port: 5174 }, plugins: [ vue(), VueI18nPlugin({ // runtimeOnly: false, include: resolve(dirname(fileURLToPath(import.meta.url)), './src/locales/**'), // strictMessage: false }) ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } } }) main.ts: import './assets/main.css'; import { createApp } from 'vue'; import { createI18n } from 'vue-i18n'; import { createPinia } from 'pinia'; import App from './App.vue'; import router from './router'; import messages from '@intlify/unplugin-vue-i18n/messages'; const i18n = createI18n({ legacy: false, globalInjection: true, locale: "en", fallbackLocale: "en", availableLocales: ["en", "fi"], messages }); const app = createApp(App) app.use(i18n) app.use(createPinia()) app.use(router) app.mount('#app') 和 en.json 文件: { "name": "John" } 有人可以帮我解决这个问题吗? 更新: 我使用以下命令创建了项目(用于重现问题) npm init vue@latest test npm install vue-i18n@latest @intlify/unplugin-vue-i18n@latest 然后我设置了上面的配置。 就是这样。 我也是根据this和this文章做的。 如文档中所述,tm返回一条消息,需要使用rt解析为字符串。当消息是字符串时,这可以是可选的,但当它们在构建时编译时则不是这样 @intlify/unplugin-vue-i18n 正确的用法是: $rt($tm('name')) 尽管tm正确返回问题中列出的已编译消息对象,但rt无法识别它,这会导致此错误: Uncaught SyntaxError: Not support non-string message at createCompileError (message-compiler.esm-browser.js:116:19) at createCoreError (core-base.mjs:485:12) at compileToFunction (core-base.mjs:1008:15) at compileMessageFormat (core-base.mjs:1324:17) at translate (core-base.mjs:1168:11) at vue-i18n.mjs:559:48 at wrapWithDeps (vue-i18n.mjs:504:19) at t (vue-i18n.mjs:559:16) at Proxy.rt (vue-i18n.mjs:567:16) at Proxy._sfc_render (HelloWorld.vue:10:17) 这里的问题是版本不匹配。尽管文档中似乎没有提到这一点,并且 @intlify/unplugin-vue-i18n 和 vue-i18n 的主要版本也没有同步,但新版本发布的时间表是相似的。它应该是@intlify/unplugin-vue-i18n@5和vue-i18n@10,或者@intlify/unplugin-vue-i18n@4和vue-i18n@9,然后它就可以工作了。由于软件包的两个主要版本刚刚发布,这可能是一个错误。
我正在寻找将一个大学项目翻译成其他语言,所以我查找了一些方法,并找到了 I18n。我使用 npm install vue-i18n@10 将其安装在项目的根目录中。 我确实...
如何使用 Astro.currentLocale 避免样板代码?
这是我如何使用 Astro.currentLocale 在 Astro 中进行翻译的示例。 --- 从“astro:i18n”导入 { getRelativeLocaleUrl } // 成分 // 导入... //国际化 导入 {
我有一个包含 20 多个字段的基本表单。然后我有大约 15 个其他表单继承自该表单,传递一个名为 fields 的参数,基本表单使用该参数删除所有其他字段。最好的解释...
我想在我的 Spring Boot 应用程序上实现本地化。基于消息束的本地化工作正常。但我需要通过从数据库读取区域设置消息来实现相同的功能
我看到了更改场景生成器国际化的可能性,但我没有找到任何合适的语言包。还有其他人遇到过同样的问题吗?
使用 .NET 4.8 / 全球化的 C# 11 中的 SortedDictionary 存在问题
网站使用用户当前的文化来显示数据。来自越南的用户访问数据时出现问题。有人可以解释为什么会出现这个问题吗? 重现代码
国际化网络应用程序似乎总是一件苦差事。 无论您为可插拔语言提前计划多少,总会存在编码问题、不适合您模板的时髦措辞......
.NET:InvariantCulture 和 en-US 之间有什么区别吗?
鉴于以下两种文化: CultureInfo c1 = InvariantCulture; CultureInfo c2 = new CultureInfo("en-US"); 我要检查两种文化特有的每一条信息,例如: c1.
在 React Native 中向 i18n 字符串添加属性
我已经知道如何通过react-native-i18n生成i18n字符串了。例如, // en.js 源 { "你好": "你好,{{name}}。" } // 使用 I18n.t("你好", { name: "约翰" }) 它显示 H...
我有一个 Next.js 14.2.12 应用程序,运行良好。我一直在尝试向其中添加 i18n,以便可以用巴伦西亚语和西班牙语查看它,但似乎我最终总是遇到相同的错误: 类型错误...
我的 Spring Boot 应用程序中的 i18n 分辨率有问题。我有这样的配置: LocaleConfiguration.java 这里我将Locale.US设置为默认语言,设置消息目录...
是否可以在 RoutablePageMixin-Pages 中翻译路径(i18n、gettext_lazy)?
我使用 RoutablePageMixin 创建了一个页面并定义了一个子路径。我想使用 gettext_lazy 根据活动语言翻译这个子路径,就像它在 Django 中的 urlpatterns 中一样。我
我想为我的网站访问者设置数字 3253454 的格式。 如果我使用内置的 number_format 函数,我会得到:3,253,454,这对英国和美国来说非常有用,但大多数其他国家/地区使用 3.253.454...
有没有办法在 Nestjs 中本地化 Swagger api 端点?
我有一个简单的 Nest JS 应用程序。我有几个端点,并且我已经使用 Swagger 记录了它们。下面是一个代码片段: @得到() @ApiQuery({ name: '搜索', 必需: false, 描述: '
我尝试在我的 ts 文件中使用 $localize 时遇到一个奇怪的错误。我收到这个错误 错误:未捕获(承诺中):类型错误:angular_localize_init__WEBPACK_IMPORTED_MODULE_3_.$localize 不是
在 Angular 18 中使用 ngx-translate 时翻译管道无法正确导入
我尝试在 Angular 18 中使用 ngx-translate 库,但当我尝试使用 Translate 管道时,它在 app.component.ts 文件中给出以下错误消息。 我正在努力最终展示
Gettext 确实让我烦恼,因为它不起作用,而当它起作用时,它是巨大的文件夹层次结构并且无法简化它。 是否有一个简单的 C++ 翻译库,也许使用哈希表...