I18N-Portable 项目教程
1. 项目介绍
I18N-Portable 是一个简单且跨平台的国际化/翻译库,专为 Xamarin 和 .NET 应用程序设计。它旨在简化应用程序的国际化过程,支持多种语言和自定义文件格式(如 JSON、XML 等)。I18N-Portable 的特点包括:
- 跨平台:适用于 Xamarin 和 .NET 应用程序。
- 简单易用:通过简单的初始化设置和直观的 API 进行国际化。
- 轻量级:无外部依赖,体积小巧。
- 支持多种文件格式:除了默认的文本文件格式,还支持 JSON、XML 等自定义格式。
2. 项目快速启动
安装
首先,通过 NuGet 包管理器安装 I18NPortable:
PM> Install-Package I18NPortable
初始化
在你的 PCL(Portable Class Library)或 Core 项目中,创建一个名为 Locales
的目录,并在其中为每种支持的语言创建一个 [languageCode].txt
文件。将这些文件的“Build Action”设置为“Embedded Resource”。
示例 en.txt
文件内容:
one = uno
two = dos
three = tres
初始化代码
在你的应用程序启动时,初始化 I18NPortable:
I18N.Current
.SetNotFoundSymbol("$") // 可选:当键未找到时,显示为 $key$
.SetFallbackLocale("en") // 可选但推荐:系统语言不支持时加载的默认语言
.SetThrowWhenKeyNotFound(true) // 可选:键未找到时抛出异常(仅调试时推荐)
.SetLogger(text => Debug.WriteLine(text)) // 可选:输出日志
.SetResourcesFolder("Locales") // 可选:资源文件所在的目录(默认为 "Locales")
.Init(GetType().GetTypeInfo().Assembly); // 初始化,指定包含语言文件的程序集
使用示例
在你的代码中使用翻译功能:
string one = "one".Translate(); // 输出: uno
string notification = "Mailbox.Notification".Translate("Diego", 3); // 输出: Hello Diego, you've got 3 emails
3. 应用案例和最佳实践
应用案例
假设你正在开发一个多语言支持的 Xamarin 应用程序。你可以使用 I18NPortable 来管理应用程序中的所有文本翻译。例如,你可以在 Locales
目录中创建多个语言文件(如 en.txt
、es.txt
等),并在代码中使用 Translate
方法来获取翻译后的文本。
最佳实践
- 使用枚举:在语言文件中定义枚举值的翻译,并在代码中使用枚举进行翻译,这样可以提高代码的可读性和可维护性。
- 动态切换语言:在运行时动态切换应用程序的语言,使用
I18N.Current.Language
或I18N.Current.Locale
属性来设置当前语言。 - 日志记录:在开发阶段启用日志记录功能,以便在键未找到时能够及时发现并修复问题。
4. 典型生态项目
I18N-Portable 是一个独立的国际化库,但它可以与其他 Xamarin 和 .NET 生态系统中的项目结合使用,以实现更复杂的功能。以下是一些典型的生态项目:
- Xamarin.Forms:用于构建跨平台的移动应用程序。
- MvvmCross:一个流行的 MVVM 框架,可以与 I18N-Portable 结合使用,实现数据绑定和国际化。
- Json.NET:用于处理 JSON 格式的数据,可以与 I18N-Portable 的自定义 JSON 读取器结合使用。
通过结合这些生态项目,你可以构建一个功能强大且易于维护的多语言应用程序。