编写供国际使用的软件的最佳实践 (i18n)

2023-11-24

我正在寻求编写过国际通用软件的专家的意见。我想了解人们在每个逻辑软件层(数据(rdbms)、业务(中间件)、用户界面)所采用的最佳实践。

谢谢你提供的所有帮助。


Data

  • 当您使用 UTF-8 时,请做好每个字符最多占用 3 个字节的准备(对于中文),这意味着 VARCHAR(20) 现在需要是 VARCHAR(60)。
  • 除非你really有充分的理由这样做,看在上帝的份上,不要将你的 UI 翻译存储在数据库中。

Business

  • 在需求上花费大量时间。首先,对应用程序中的每个屏幕进行屏幕截图,将其放入文档中,然后开始在需要 i18n 支持的内容周围绘制方框。然后将每个框映射到需要更改的代码区域。

UI

Don’t

string foo = "Page " + currentPage + " of " + totalPages;

Do

string foo = string.Format("Page {0} of {1}", currentPage, totalPages);

为什么?词序很重要。

<value>Page {0} of {1}</value>
 <value>{1}ページ中の第{0}ページ</value>

UI 中没有什么是神圣的即使是像将正数显示为绿色、将负数显示为红色这样基本的东西也是如此公平的比赛.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写供国际使用的软件的最佳实践 (i18n) 的相关文章

  • 在 Rails 中本地化嵌套虚拟属性

    怎么可能本地化嵌套虚拟属性在 Rails 中 该模型 class User lt ActiveRecord Base attr accessor company information This is used in callbacks e
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • 在 Grails 中创建一个新的资源包?

    我想创建另一个资源包来组织我的 Grails 应用程序 Grails 提供了一个 messages 资源包 我需要创建一个 myApp 资源包 如何创建新的资源包并使用 g message GSP 标记读取其属性 你必须创建一个beangr
  • 使用卡尔曼滤波器跟踪位置和速度

    我正在使用卡尔曼滤波器 恒定速度模型 来跟踪物体的位置和速度 我测量对象的 x y 并跟踪 x y vx vy 这是有效的 但是如果在传感器读数 x y vx vy 上添加 20 mm 的高斯噪声 即使该点没有移动 只是噪声也会发生波动 对
  • C++,多语言/本地化支持

    向 C 程序添加多语言支持的最佳方法是什么 如果可能 应该从包含键值对 WelcomeMessage Hello s 之类的纯文本文件中读取语言 我想到了添加一个 localizedString key 函数来返回加载的语言文件的字符串 有
  • 完整的 C++ i18n gettext()“hello world”示例

    我正在寻找完整的 i18ngettext 你好世界的例子 我已经开始了一个基于的脚本使用 GNU gettext 的本机语言支持教程 https web archive org web 20130330233819 http oriya s
  • 国际化和非 US-ASCII、Latin1 或 Win1252 的密码

    当用户输入最能以 Unicode 或其他非拉丁字符编码表示的内容时 您如何处理服务密码 具体来说 可以使用西里尔字母密码作为Oracle的密码吗 如果密码以 UTF 8 形式提供 您如何根据 Windows 身份验证机制验证用户的密码 我对
  • 使用 Nib 实现国际化。这真的是个好主意吗?

    在苹果文档中 他们说笔尖只需将笔尖翻译成多种语言即可实现国际化 我现在正在考虑一个更糟糕但现实的场景 你已经制作了一个巨大的用户界面 然后你将其翻译成 25 种语言 所以你会得到 25 个不同的笔尖 您还会在样式和定义 UI 方面获得巨大的
  • \d 只匹配0-9位数字?

    据我所知 d应该匹配非英文数字 例如 但它在 JavaScript 中不能正常工作 看这个jsFiddle http jsfiddle net xZpam http jsfiddle net xZpam 这是正常行为吗 JavaScript
  • 使用 s:select 标签在下拉菜单中使用 i18n [重复]

    这个问题在这里已经有答案了 我的 JSP 页面中有一个下拉菜单 它是通过
  • 如何忽略系统默认Locale来检索resourceBundle

    我正在使用本地化 Web 应用程序java util ResourceBundle类和属性文件 我有两个语言环境 fr FR 和 en US 并且我想使用 en US 作为默认值 所以我编写了以下文件 messages fr FR prop
  • 正则表达式匹配埃及象形文字[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想知道一个匹配埃及象形文字的正则表达式 我完全一无所知 需要你的帮助 我无法发布这些字母 因为堆栈溢出似乎无法识别它 那么谁能告诉我这些
  • 制作简单的静态网站多语言有哪些选项?

    我正在设置一个静态网站 我想以两种语言显示 我找不到不同选项的全面概述 例如服务器端加载 前端加载与使用不同文件夹 每个选项的优点是什么 例如 SEO 可维护性 可扩展性等 理想情况下 翻译将存储在单独的 json 文件中 我最关心的是翻译
  • 是否可以在编译时/运行时生成标记字符串的全局列表?

    因此 我正在努力将我的 C 应用程序翻译成多种语言 我目前正在使用的是这样的 define TR x lookupTranslatedString currentLocale x wcout lt lt TR L This phrase i
  • Web 应用程序国际化,是服务器端还是客户端?

    我们正在寻求国际化网络应用程序 最好是在服务器端 用 net 4 C 编写 或客户端 Javascript 输出翻译 我们已经开始通过创建一个 JS 文件在客户端执行此操作 该文件包含一个包含英语短语作为键的对象 以便开发人员了解每条消息在
  • XCode 4 中硬编码的本地化文件路径 - 当项目移动到新文件夹时消失

    我们最近使用 Xcode 将一个项目本地化为 15 种语言 但我注意到当我将该项目带回家时 一些本地化文件的路径都被硬编码到我工作 Mac 的完整路径 我们只本地化了两个文件 InfoPlist strings Localizable st
  • Xamarin Forms:无法添加 RESX 进行全球化

    尝试按照以下方式使用 Xamarin 上的全球化功能guide https developer xamarin com guides xamarin forms advanced localization 但是找不到Misc类别也不Reso
  • 根据用户区域设置过滤字符串列表

    当使用 AngularJS 1 6 处理 JavaScript 项目时 我有一个要过滤的字符串列表 例如 假设我的列表包含 rbol cig e a nido and tubo 当过滤西班牙语字符串时 如果我过滤 u 我会期望两者cig e
  • 本地化现有的 iOS 应用程序

    我不敢相信以前没有人问过这个问题 要么是我的编码实践太无组织性 要么是我没有使用正确的关键字 How can I localize an existing iOS app that does not use NSLocalizedStrin
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym

随机推荐

  • ListView Final Column Autosize 创建滚动条

    我正在实现一个派生自 ListView 的自定义控件 我希望最后一列填充剩余空间 这是一个很常见的任务 我已经通过重写 OnResize 方法来解决这个问题 protected override void OnResize EventArg
  • 工具栏中图标和标题之间的填充/空格(Android 24)

    使用新的Android 24 我发现图标和标题Toolbar有更宽的填充 我找不到任何方法来解决这个问题 Example MainActivity java public class MainActivity extends AppComp
  • 无法编译SSIS组件; Visual Studio 2008 中缺少程序集

    SSIS 中没有通过 HTTP 下载文件的标准控制流任务 我尝试过一些解决方法 执行进程 wget 脚本任务 HttpClientConnection 但得出的结论是 执行此任务的最可靠且可重用的方法是创建自定义组件 我尝试通过以下方式做到
  • Python正则表达式使用点或逗号作为分隔符来表示带或不带小数的数字?

    我正在学习正则表达式 现在我正在尝试匹配一个或多或少代表这一点的数字 zero or more numbers possibly a dot or comma zero or more numbers 没有点或逗号也可以 所以它应该匹配以下
  • 如何使用 JMeter 测试 WCF Web 服务?

    我有一个托管在 IIS 上的 WCF Web 服务 它公开了一个采用三个整数参数的方法 我有一个简单的基于控制台的客户端 可以调用此方法 int InsertNewOrder short quantity int custID int pr
  • ASP.NET MVC 中的替代用户管理

    我正处于新 ASP NET MVC 应用程序的规划阶段 要求之一是存储一些用户信息 这些信息不属于 ASP NET MVC 附带的 User 类中的标准集 我想这可以归结为两个问题 1 我可以编辑已经使用的类来存储我需要的信息吗 2 如果我
  • JavaScript 中的“未捕获类型错误:对象不是函数”

    我无法理解为什么这不起作用 我的表单上有两个字段 当我单击按钮时 另一个文本字段值将更改为该函数的值 我怎样才能让它发挥作用 function calculate var odometerStart parseFloat document
  • 在 VBA 中查找 Excel 工作表的底部

    我想选择工作表的底部 但不要选择在使用 存储的内容下方 我可能有 10 000 行 但肯定没有 65 536 行 我不会提前知道有多少行 在 Excel 本身中 无论如何 在最近的版本中 Excel 97 就不那么友好了 您可以按 Ctrl
  • 带有注释的漂亮打印的 haskell 源代码

    我正在尝试重新格式化 重新打印 haskell 源代码 删除 添加空格 换行符 更改缩进样式 我已经找到包裹了Haskell src exts它可以解析并漂亮地打印 haskell 源代码 使用功能parseFileWithComments
  • C++。加权 std::shuffle

    有没有一种方法可以使用标准库进行漂亮而优雅的加权洗牌 有std discrete distribution 我想要的是这样的 std vector
  • CSS 类选择器样式未应用于 React 项目

    使用 Webpack 开发 React 项目 在 style css 中添加一些样式并导入到组件中import style from style css 添加没有选择器的元素 例如body div 风格很好 但我遇到了课程问题 设置类名与
  • Spring WebClient - 如何处理错误场景

    我们正在使用org springframework web reactive function client WebClient with reactor netty http client HttpClient作为 Spring 5 1
  • 如何获取 Vue 更新钩子中的更改?

    如果我有一个像这样的 Vue 组件 有没有办法获得导致更新的更改 就像如何watch钩子接受前一个和下一个数据的参数吗 watch someProp next prev you can compare states here React 似
  • Document.getElementById() 返回名称等于指定 id 的元素

    我之前曾在this SO关于 IE6 7 以及某些版本的 Opera 的有趣行为document getElementById可以找到一个元素 其name属性已定义 但未定义id属性 使得 function f document getEl
  • Angular Universal - 排除路线

    是否可以对某些路线不使用角度通用 我想对我的静态页面使用角度通用 当我登录我的应用程序时 我不想使用它 我想用 app 排除路由 请问我该怎么做 非常感谢 这是我的 server ts These are important and nee
  • Raspberry Pi 上的 crontab 无法播放音频

    我正在尝试让我的 Raspberry Pi 当前连接到蓝牙扬声器 以便每天按计划播放音频文件 其中我的cron工作正在更新中 daily获得新的时间 这基本上是祈祷的召唤 crontab l daily home pi athan upda
  • 来电屏幕上的活动弹出窗口

    我正在尝试覆盖来电屏幕 我知道我无法更改它 所以我正在尝试在顶部弹出一个活动 我的代码工作正常 除非手机闲置了几分钟 My code AndroidManifest xml
  • 将两个或多个 Crystal Reports 合并为一个 PDF

    我有一个复选框列表 如果我选择两个或多个值 则 CheckBoxList SelectedValues 将作为参数一一传递 并且我想为每个 SelectedValue 生成 PDF 格式的 Crystal Report 并且我想将所有 Cr
  • onDestroy之后是否可以调用回调方法?

    在我的应用程序的最新版本中 一些用户遇到了我无法重现的崩溃 目前仅Samsung设备运行Lollipop遇到这个问题 但这可能只是巧合 在分析了堆栈跟踪和相关代码之后 我想我可能已经找到了罪魁祸首 为了测试我的假设 我将代码简化为下面的代码
  • 编写供国际使用的软件的最佳实践 (i18n)

    我正在寻求编写过国际通用软件的专家的意见 我想了解人们在每个逻辑软件层 数据 rdbms 业务 中间件 用户界面 所采用的最佳实践 谢谢你提供的所有帮助 Data 当您使用 UTF 8 时 请做好每个字符最多占用 3 个字节的准备 对于中文