本文翻译自CSS Ellipsis: How to Manage Multi-Line Ellipsis in Pure CSS,文中某些部分有些许改动,并添加译者的一些感想,请各位读者谅解。...: ellipsis;则表示超出盒子的部分使用省略号表示。...CSS实现多行文本溢出的省略号显示 我们把实现的细节划分为7个步骤,在这个实现过程中最简单的就是截断文本,而最难的部分则是让一个元素处在其父包含块溢出时的右下方,并且当父元素未溢出时该元素消失不可见。...但是我们可以采用更为简单的代码来实现,即只使用相对定位。熟悉定位模型的同学应该知道,相对定位的元素仍然占据文本流,同时仍可针对元素设置偏移。...4th 削窄prop元素 目前,最左侧的prop元素的作用在于让realend元素在文本溢出时处在其正下方,在前几节的示例代码中为了直观的演示,设置prop元素的宽度为100px,那么现在为了更好的模拟实际的效果
合同中,request和require都是“要求”的意思,不过request更偏重于“请求”,翻译英到中时遇到这两个词问题不大,翻译出它们的意思就可以,但是中译英时就要注意了,这是我今天要强调的重要区别
如何避免误用本地化,可以注意以下 10 点: 1. 直接硬编码文字 将文字直接嵌入代码将极大地拖慢软件本地化的进度,翻译者不得不阅读代码以决定哪些段落需要翻译。...使用 gettext 函数完成翻译: import gettext de_DE = gettext.translation('messages', localedir='locales', languages...错误的编码和缺少 Unicode 支持 当你使用了一个错误的或无法处理 Unicode 的字符编码时,翻译工作也将失败。...编程语言经常使用系统默认的编码存储文件,当你的服务器是英文环境而你的用户以中文浏览器访问时,显示的字符可能就会出错。 总是应该使用 UTF-8 因此,另一个本地化的最佳实践就是一直用 UTF-8。...缺少上下文造成的困惑和歧义 当字符串包含变量,且被用在一个特定上下文或使用了有歧义的措辞时,你的翻译团队就不好过了。翻译者通常基于无上下文格式的文件和字符串工作。
基础方法:使用环境变量和 case 判断对于初学者,我们可以用最简单的方式实现基本的本地化。核心思路是读取系统的 LANG 或 LC_ALL 环境变量,然后根据值选择对应的语言文本。#!...进阶方法:使用 gettext 实现专业本地化对于更复杂的项目,推荐使用 GNU gettext 工具链。它支持完整的翻译流程,包括提取字符串、生成 .po 文件、编译为 .mo 文件等。...步骤简述:在脚本中用 gettext "字符串" 包裹所有需翻译的文本。使用 xgettext 提取这些字符串生成 .pot 模板文件。为每种语言创建 .po 文件并翻译。...运行脚本时自动加载对应语言的翻译。虽然 gettext 学习曲线稍陡,但它是实现 Shell 脚本国际化 的标准方案,值得深入学习。.../your_script.sh 总结通过本文,你已经了解了如何在 Linux Shell 脚本中实现参数本地化。
支持多语言的常规流程是在源代码中标记所有需要翻译的文本。文本标记后,Flask-Babel将扫描所有文件,并使用gettext工具将这些文本提取到单独的翻译文件中。...有些字符串文字并非是在发生请求时分配的,比如在应用启动时。因此在评估这些文本时,无法知道要使用哪种语言。...在每个语言存储库中创建的messages.po文件使用的格式是语言翻译的事实标准,使用的格式为gettext。...messages.po文件是一种用于翻译的源文件。当你想开始使用这些翻译后的文本时,这个文件需要被编译成一种格式,这种格式在运行时可以被应用程序使用。...es的localeselector函数,将使所有文本在使用该应用时显示为西班牙文 06 更新翻译 处理翻译时的一个常见情况是,即使翻译文件不完整,你也可能要开始使用翻译文件。
从中我们其实可以看到如何从源代码提取待翻译字符然后交付给翻译人员,最终实现整个多语言流程,这是一个可以借鉴的流程。...如果没有 .POT 文件充当一个模板,原先翻译好的 .po 文件就会被改动,新的待翻译内容和已被翻译的内容掺杂在一个文件中,如何解析拆分?...从工程层面上就会变的复杂,因此一个简单的翻译流程就是,先生成模板文件,通过模板文件产出翻译内容,程序则直接使用翻译内容,即 .po 文件,或将他们编译成二进制使用。...文件格式 .po 文件虽然是文本文件,可以使用任何文本编辑器打开,但里面的内容也是按照一定的格式来编写的,对于一些基本的语法需要了解一下。 注释 注释都是非必填的,一共有五种。...如何开始 最简单的方式就是直接新建一个 .po 的文件,然后复制黏贴下面这段字符,即可使用 poedit 进行编辑,如果没有 msgid 和 msgstr 的话,将这个文件拖拽到 poeditor 是会报错的
图形中的文本有时需要使用数学表达式,如 的2.5需要使用下标,单位 涉及到希腊字母和上标,以及一些比较复杂的大型符号,如求和符号 、积分符号 等。...下面举例说明: 语法x^2对应的实际效果是 ,输出代码是expression(x^2); pi表示圆周率,代码expression(x^2)在图形中输出的就是圆周率的符号; 一些文本需要使用特殊格式,...adj = 0.5, family = "mono") plot(1:6, type = "n", axes = F, ann = F) abline(v = 1:6, lty = 2) ## 不使用...expression()函数 text(1.5,3, "x^2") # 使用expression()函数 text(2.5,3, expression(x^2)) text(3.5,3, expression...其他 需要注意的是,以上 语法虽然由R语言的基础绘图系统工具包grDevices提供,但它属于通用语法,也可以在ggplot2绘图系统中使用。
Loco 介绍和使用 我前面介绍过,使用 poEdit 汉化 WordPress 插件和主题,今天介绍一个新的服务:Loco,让你可以在浏览器中直接翻译 WordPress 主题和插件: Loco 提供了一个和...Poedit 一样 PO 文件编辑器,并且操作非常方便,只需要将你的 PO 文件直接拖进去即可: 上传之后,Loco 就会分析 PO 文件,并准备好要翻译的文本,你翻译好之后,就可以下载 .po 或者....mo 文件,或者直接存在 Loco 服务器中: Loco 的 WordPress 插件 为了方便大家使用,Loco 还自己开发了 WordPress 插件:Loco Translate,让你直接在...WordPress 后台翻译插件或者主题: 选择可以翻译的主题或者插件,就可以进行翻译了: 当你翻译完成保存 PO 文件,Loco 会在相同的位置保存编译好的 MO 文件,这样翻译就可以直接使用了...从源代码中直接提取要翻译的字符串。 原生的 MO 文件编译器,并且无需系统支持 Gettext。 支持 PO 的特性,包括留言,引用,负数等。 支持配置 PO 文件的备份。
本地化编写翻译和本地格式化。通常由翻译者完成。相关概念消息文件:消息文件(message file)是一个纯文本文件,代表一种语言,它包含所有可用的翻译字段以及如何以给定语言表示。...惰性翻译:gettext_lazy会延迟翻译计算,直到实际渲染时才会根据当前请求语言动态加载,而 gettext 在模块加载时即固定翻译结果二、安装配置安装 gettext下载64位 share 安装包...:使用函数 gettext() 来指定翻译字符串。...:使用惰性翻译函数 gettext_lazy() 来指定翻译字符串。...序列化器的 error_messages 中直接使用 _() 函数时,Django 会在启动时立即计算翻译值(基于默认语言),而非根据请求动态切换。
gettext 函数是支持使用 %(name)s 语法占位符,这也是我们最好的解决办法。...下面是一个类似情况的占位符的例子: gettext('Hello, %(name)s', name = user.nickname) 回到我们的例子,这里是怎样标记文本翻译: {% autoescape...这个文件以一种优化的格式包含了翻译的文本,应用程序可以更高效地使用它。 翻译已经准备好被使用了。...gettext 必须在请求的内容中使用才会产生翻译信息。如果我们在请求之外的地方使用,它不会翻译只会给我们英语版本的默认文本。...幸好,Flask-Babel 提供另外一个函数 lazy_gettext,它不会像 gettext() 和 _() 一样立即翻译,相反它会推迟翻译直到字符串实际上被使用的时候才会翻译。
"文件未找到"编译翻译文件收起代码语言:TXTAI代码解释#编译.po文件为.mo文件msgfmtzh_CN.po-ozh_CN.mo使用gettext实现多语言支持gettext是一个用于国际化(i18n...)和本地化(l10n)的工具,主要用于管理软件中的文本翻译。...:在源代码中,使用`gettext`函数标记需要翻译的字符串:`src/main.c`:收起代码语言:TXTAI代码解释#include#include#include...翻译字符串:使用文本编辑器或专用的翻译工具(如Poedit)打开`.po`文件,填写每个原始字符串的翻译。...编译翻译文件:使用`msgfmt`将`.po`文件编译为机器可读的`.mo`文件。
/usr/bin/env pythonimport gettext gettext.install('lang', '..../locale是存放翻译文件的路径,第三个参数是是否使用unicode,第五行languages参数指定要使用的语言存放的子目录,这里cn表示使用....上述实现的方法用在界面编程上可以实现中英文界面的切换,需要作个配置文件选择中/英文;或者在主文件开始时先获取操作系统本地语言然后根据获取结果再设置中/英文,这样就可以实现软件语言自适应;如果想实现软件语言在线切换...的文件 2.生成模板文件后,修改这个模板文件,其中的msgid为键值,对应你程序里写的文本,如:_("New File"),而msgstr为翻译后的值。.../local/cn/LC_MESSAGES/i18ntest.mo 这样程序启动时就会读取这个资源文件,替换对应的文本,实现国际化了。 注意:如果使用utf格式保存,po文件不能有BOM头。
备忘录模式的原理与实现 备忘录模式,也叫快照(Snapshot)模式,英文翻译是 Memento Design Pattern。...翻译成中文就是:在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。 为什么存储和恢复副本会违背封装原则?...备忘录模式是如何做到不违背封装原则的? 假设有这样一道面试题,希望你编写一个小程序,可以接收命令行的输入。...用户输入文本时,程序将其追加存储在内存文本中;用户输入“:list”,程序在命令行中输出内存文本的内容;用户输入“:undo”,程序会撤销上一次输入的文本,也就是从内存文本中将上次输入的文本删除掉。...} 上面的代码并不满足这一点,主要体现在下面两方面: 第一,为了能用快照恢复 InputText 对象,我们在 InputText 类中定义了 setText() 函数,但这个函数有可能会被其他业务使用
在Python中,解决国际化(Internationalization,简称i18n)的问题通常涉及到将应用程序的文本和用户界面元素本地化为不同的语言和地区。...使用gettext库: gettext 是Python的一个标准库,用于处理国际化问题。它允许你将应用程序中的字符串标记为可本地化的,并提供翻译文件以支持不同的语言。...使用babel库: babel 是一个强大的国际化和本地化库,它支持日期、时间、数字、货币等的本地化,同时也支持翻译文本。...使用Django框架: 如果你在使用Django框架开发应用程序,Django提供了内置的国际化支持。你可以使用 gettext 来标记和翻译字符串。 4....在实际项目中,通常需要创建翻译文件,包含不同语言的翻译字符串,并使用相应的工具进行翻译和管理。 收藏 | 0点赞 | 0打赏
matches(isDisplayed())); // matches(isDisplayed()) is a ViewAssertion Espresso框架是google官方大力推荐的一套测试框架,所以无论如何都要学习一下的...ActivityTestRule(MainActivity.class); 这句话就定义了一个测试规则,可以看到构造方法的参数里指定了一个 MainActivity.class, 具体的体现就是当你运行这段测试代码时...所以当你想直接测试某个界面时,你可以把那个界面填到这个参数里,这样就直接打开你指定的界面进行测试了。...ViewMachers 查找View 使用onView方法找到view:其中参数可以是withId(通过资源id查找),withText(通过显示内容查找)有多个约束条件时,可以使用allOf 如allOf...openLinkWithText() 打开指定超链 ViewAssertions 检验结果 使用check()方法来检查View是否符合我们的期望: onView(...).check() 检查view
在本教程中,我将介绍一个简单的例子,说明如何抓取一个网站,我将从Fast Track上收集2018年百强公司的数据: Fast Track: http://www.fasttrack.co.uk/ 使用网络爬虫将此过程自动化...Python进行网页抓取的简短教程概述: 连接到网页 使用BeautifulSoup解析html 循环通过soup对象找到元素 执行一些简单的数据清理 将数据写入csv 准备开始 在开始使用任何Python...刷新页面后,它将在加载时显示请求,如果响应包含格式化结构,则使用REST客户端(如Insomnia)返回输出通常更容易。 ?...我们导入的下一个库是urllib,它连接到网页。最后,我们将输出写入csv,因此我们还需要导入csv 库。作为替代方案,可以在此处使用json库。...[5].getText() staff = data[6].getText() comments = data[7].getText() 以上只是从每个列获取文本并保存到变量。
在WordPress 中使用可翻译的数据 WordPress 的有一点强大之处就是几乎每一句语言都可以被翻译。如果你的网站语言是英语,你可能就没有这个需求;但其它语系的客户呢?...gettext这个过滤器可以让你在WordPress 中轻松玩转可翻译的数据。...好在所有的参数都是可以被翻译的,那么你就可以用下面的代码借助gettext这个过滤器操作: <?...php add_filter( 'gettext', 'gettext_example', 20, 3 ); function gettext_example( $translated_text...> 过滤编辑器中得文本内容 是否想在后台的编辑器上预填充一些内容,或者需要给你的编辑人员一些提醒?如果有这类需求,那么你可以使用the_editor_content这个过滤器。
这篇日志首先将会详细讲解应该如何修改插件和主题,使得插件和主题能够被翻译。然后将介绍一个叫做 poEdit 的翻译软件,通过它来 本地化 WordPress 插件和主题。...下面以插件为例,详细讲解 WordPress 插件和主题翻译的所有过程: 本地化的准备工作 WordPress 使用 GNU gettext 机制来实现本地化。...为了使得插件或者主题能够被翻译,每次输出文本的时候,都应该使用这两个函数。...使用 poEdit 进行翻译 WordPress Codex 已经有一个非常好的如何使用 poEdit 翻译插件或者主题的 step-by-step 教程,但是我这里将通过一个实例展示这些步骤。...如果你不准备翻译该插件,你可以保存.po 文件并把它和插件一起分发出去,让别人能够直接使用它进行翻译。 第七步:翻译插件 一旦所有需要翻译的文本都找到了,就该开始翻译插件了。
这个需求又产生了两个问题: 1)当普通文本发生变化后,如何监控一个Span起始位置发生变化? 2)如何禁止Span内部插入光标? 对于第一个问题,我在网上看到过一种思路。...有三种做法: 1)普通文本,当标签文本被破坏(删除、插入、追加文本)时,让绑定的数据失效,这就是微信的做法; 2)普通文本,把标签文本作为一个整体,不能对标签内部插入光标,杜绝数据被破坏的情况,这是微博的做法...我们的要求是删除Span文本时,能够整体删除整个Span,这就需要监听键盘删除键。...并且,当你打印EditText文本上的Span时,你找不到SelectionSpanWatcher。这说明SelectionSpanWatcher在setText()过程中被清除掉了。...setText()添加的文本没有效果。似乎我们不能通过setText()添加内容,只能使用getText()追加内容。
那我们应该如何去做呢? 如果我们自己进行翻译替换显得笨重和麻烦,那有没有一种简单的方法呢?有,Babel 可以帮助我们完成这个需求,同时它还有很多其他的功能。...同时 Babel 结合 gettext 也能够很好的实现文本的国际化翻译。...我们借助 datetime 就可以单独获取到年月日,获取到之后将其转化为 date 对象,就可以使用 babel 进行国际化的处理了。...='en')) print('中文格式的time:',format_time(tt,locale='zh')) 总结 其实关于国际化是一个比较复杂的工程,我们这里只是抛砖引玉,感兴趣的同学可以去看下使用...gettext 实现多国语言国际化翻译的例子。