- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
对于我们应用程序中的翻译,我们使用 Zend Translate使用 gettext 适配器。在每个模块中都有一个文件夹translations
,包含所有语言的.mo 文件;
通过addTranslation()
方法扫描添加的:
if ( is_dir( $translations_dir ) ) {
foreach ( new DirectoryIterator( $translations_dir ) as $file ) {
if ( substr( $file, -3 ) == '.mo' ) {
$ZendTranslate->addTranslation( $file->getPathname(), $file->getBasename('.mo') );
}
}
}
我的应用程序中的字符串是使用 _()
方法翻译的,将当前语言作为参数传递(它存储在我的框架的语言类中):
$ZendTranslate->_( $string, $this->language );
现在我需要为特定客户自定义荷兰语 (nl) 语言字符串。我不想修改 nl.mo
文件,因为那样会影响其他客户。所以我创建了一个名为 nl_kpn.mo
的文件(kpn 是客户名称),并将 $this->language
切换为“nl_kpn”。我希望 Zend Transate 将 nl.mo
作为基础文件,覆盖 nl_kpn.mo
中的自定义字符串。但不幸的是我经历了,作为manual states :
fr_CH will be downgraded to fr
所以所有字符串仍然来自 nl.mo
文件,即使 $this->language
被设置为 'nl_kpn'。那么我如何创建一种更具体的语言版本,覆盖通用语言的字符串呢?一定有可能吧?因为还有 en_UK 和 en_US,它们是同一语言的不同“方言”。
最佳答案
我认为答案是这是不可能的。语言环境必须是现有的语言/方言,并使用 Zend_Locale
中的列表进行验证:
'root' => true, 'aa_DJ' => true, 'aa_ER' => true, 'aa_ET' => true, 'aa' => true,
'af_NA' => true, 'af_ZA' => true, 'af' => true, 'ak_GH' => true, 'ak' => true,
'am_ET' => true, 'am' => true, 'ar_AE' => true, 'ar_BH' => true, 'ar_DZ' => true,
'ar_EG' => true, 'ar_IQ' => true, 'ar_JO' => true, 'ar_KW' => true, 'ar_LB' => true,
'ar_LY' => true, 'ar_MA' => true, 'ar_OM' => true, 'ar_QA' => true, 'ar_SA' => true,
'ar_SD' => true, 'ar_SY' => true, 'ar_TN' => true, 'ar_YE' => true, 'ar' => true,
'as_IN' => true, 'as' => true, 'az_AZ' => true, 'az' => true, 'be_BY' => true,
'be' => true, 'bg_BG' => true, 'bg' => true, 'bn_BD' => true, 'bn_IN' => true,
'bn' => true, 'bo_CN' => true, 'bo_IN' => true, 'bo' => true, 'bs_BA' => true,
'bs' => true, 'byn_ER'=> true, 'byn' => true, 'ca_ES' => true, 'ca' => true,
'cch_NG'=> true, 'cch' => true, 'cop' => true, 'cs_CZ' => true, 'cs' => true,
'cy_GB' => true, 'cy' => true, 'da_DK' => true, 'da' => true, 'de_AT' => true,
'de_BE' => true, 'de_CH' => true, 'de_DE' => true, 'de_LI' => true, 'de_LU' => true,
'de' => true, 'dv_MV' => true, 'dv' => true, 'dz_BT' => true, 'dz' => true,
'ee_GH' => true, 'ee_TG' => true, 'ee' => true, 'el_CY' => true, 'el_GR' => true,
'el' => true, 'en_AS' => true, 'en_AU' => true, 'en_BE' => true, 'en_BW' => true,
'en_BZ' => true, 'en_CA' => true, 'en_GB' => true, 'en_GU' => true, 'en_HK' => true,
'en_IE' => true, 'en_IN' => true, 'en_JM' => true, 'en_MH' => true, 'en_MP' => true,
'en_MT' => true, 'en_NA' => true, 'en_NZ' => true, 'en_PH' => true, 'en_PK' => true,
'en_SG' => true, 'en_TT' => true, 'en_UM' => true, 'en_US' => true, 'en_VI' => true,
'en_ZA' => true, 'en_ZW' => true, 'en' => true, 'eo' => true, 'es_AR' => true,
'es_BO' => true, 'es_CL' => true, 'es_CO' => true, 'es_CR' => true, 'es_DO' => true,
'es_EC' => true, 'es_ES' => true, 'es_GT' => true, 'es_HN' => true, 'es_MX' => true,
'es_NI' => true, 'es_PA' => true, 'es_PE' => true, 'es_PR' => true, 'es_PY' => true,
'es_SV' => true, 'es_US' => true, 'es_UY' => true, 'es_VE' => true, 'es' => true,
'et_EE' => true, 'et' => true, 'eu_ES' => true, 'eu' => true, 'fa_AF' => true,
'fa_IR' => true, 'fa' => true, 'fi_FI' => true, 'fi' => true, 'fil_PH'=> true,
'fil' => true, 'fo_FO' => true, 'fo' => true, 'fr_BE' => true, 'fr_CA' => true,
'fr_CH' => true, 'fr_FR' => true, 'fr_LU' => true, 'fr_MC' => true, 'fr_SN' => true,
'fr' => true, 'fur_IT'=> true, 'fur' => true, 'ga_IE' => true, 'ga' => true,
'gaa_GH'=> true, 'gaa' => true, 'gez_ER'=> true, 'gez_ET'=> true, 'gez' => true,
'gl_ES' => true, 'gl' => true, 'gsw_CH'=> true, 'gsw' => true, 'gu_IN' => true,
'gu' => true, 'gv_GB' => true, 'gv' => true, 'ha_GH' => true, 'ha_NE' => true,
'ha_NG' => true, 'ha_SD' => true, 'ha' => true, 'haw_US'=> true, 'haw' => true,
'he_IL' => true, 'he' => true, 'hi_IN' => true, 'hi' => true, 'hr_HR' => true,
'hr' => true, 'hu_HU' => true, 'hu' => true, 'hy_AM' => true, 'hy' => true,
'ia' => true, 'id_ID' => true, 'id' => true, 'ig_NG' => true, 'ig' => true,
'ii_CN' => true, 'ii' => true, 'in' => true, 'is_IS' => true, 'is' => true,
'it_CH' => true, 'it_IT' => true, 'it' => true, 'iu' => true, 'iw' => true,
'ja_JP' => true, 'ja' => true, 'ka_GE' => true, 'ka' => true, 'kaj_NG'=> true,
'kaj' => true, 'kam_KE'=> true, 'kam' => true, 'kcg_NG'=> true, 'kcg' => true,
'kfo_CI'=> true, 'kfo' => true, 'kk_KZ' => true, 'kk' => true, 'kl_GL' => true,
'kl' => true, 'km_KH' => true, 'km' => true, 'kn_IN' => true, 'kn' => true,
'ko_KR' => true, 'ko' => true, 'kok_IN'=> true, 'kok' => true, 'kpe_GN'=> true,
'kpe_LR'=> true, 'kpe' => true, 'ku_IQ' => true, 'ku_IR' => true, 'ku_SY' => true,
'ku_TR' => true, 'ku' => true, 'kw_GB' => true, 'kw' => true, 'ky_KG' => true,
'ky' => true, 'ln_CD' => true, 'ln_CG' => true, 'ln' => true, 'lo_LA' => true,
'lo' => true, 'lt_LT' => true, 'lt' => true, 'lv_LV' => true, 'lv' => true,
'mk_MK' => true, 'mk' => true, 'ml_IN' => true, 'ml' => true, 'mn_CN' => true,
'mn_MN' => true, 'mn' => true, 'mo' => true, 'mr_IN' => true, 'mr' => true,
'ms_BN' => true, 'ms_MY' => true, 'ms' => true, 'mt_MT' => true, 'mt' => true,
'my_MM' => true, 'my' => true, 'nb_NO' => true, 'nb' => true, 'nds_DE'=> true,
'nds' => true, 'ne_IN' => true, 'ne_NP' => true, 'ne' => true, 'nl_BE' => true,
'nl_NL' => true, 'nl' => true, 'nn_NO' => true, 'nn' => true, 'no' => true,
'nr_ZA' => true, 'nr' => true, 'nso_ZA'=> true, 'nso' => true, 'ny_MW' => true,
'ny' => true, 'oc_FR' => true, 'oc' => true, 'om_ET' => true, 'om_KE' => true,
'om' => true, 'or_IN' => true, 'or' => true, 'pa_IN' => true, 'pa_PK' => true,
'pa' => true, 'pl_PL' => true, 'pl' => true, 'ps_AF' => true, 'ps' => true,
'pt_BR' => true, 'pt_PT' => true, 'pt' => true, 'ro_MD' => true, 'ro_RO' => true,
'ro' => true, 'ru_RU' => true, 'ru_UA' => true, 'ru' => true, 'rw_RW' => true,
'rw' => true, 'sa_IN' => true, 'sa' => true, 'se_FI' => true, 'se_NO' => true,
'se' => true, 'sh_BA' => true, 'sh_CS' => true, 'sh_YU' => true, 'sh' => true,
'si_LK' => true, 'si' => true, 'sid_ET'=> true, 'sid' => true, 'sk_SK' => true,
'sk' => true, 'sl_SI' => true, 'sl' => true, 'so_DJ' => true, 'so_ET' => true,
'so_KE' => true, 'so_SO' => true, 'so' => true, 'sq_AL' => true, 'sq' => true,
'sr_BA' => true, 'sr_CS' => true, 'sr_ME' => true, 'sr_RS' => true, 'sr_YU' => true,
'sr' => true, 'ss_SZ' => true, 'ss_ZA' => true, 'ss' => true, 'st_LS' => true,
'st_ZA' => true, 'st' => true, 'sv_FI' => true, 'sv_SE' => true, 'sv' => true,
'sw_KE' => true, 'sw_TZ' => true, 'sw' => true, 'syr_SY'=> true, 'syr' => true,
'ta_IN' => true, 'ta' => true, 'te_IN' => true, 'te' => true, 'tg_TJ' => true,
'tg' => true, 'th_TH' => true, 'th' => true, 'ti_ER' => true, 'ti_ET' => true,
'ti' => true, 'tig_ER'=> true, 'tig' => true, 'tl' => true, 'tn_ZA' => true,
'tn' => true, 'to_TO' => true, 'to' => true, 'tr_TR' => true, 'tr' => true,
'trv_TW'=> true, 'trv' => true, 'ts_ZA' => true, 'ts' => true, 'tt_RU' => true,
'tt' => true, 'ug_CN' => true, 'ug' => true, 'uk_UA' => true, 'uk' => true,
'ur_IN' => true, 'ur_PK' => true, 'ur' => true, 'uz_AF' => true, 'uz_UZ' => true,
'uz' => true, 've_ZA' => true, 've' => true, 'vi_VN' => true, 'vi' => true,
'wal_ET'=> true, 'wal' => true, 'wo_SN' => true, 'wo' => true, 'xh_ZA' => true,
'xh' => true, 'yo_NG' => true, 'yo' => true, 'zh_CN' => true, 'zh_HK' => true,
'zh_MO' => true, 'zh_SG' => true, 'zh_TW' => true, 'zh' => true, 'zu_ZA' => true,
'zu' => true
我想我只需要设计一种不同的方法来覆盖这些文件。也许只是从 PHP 加载不同的 .po
文件。
关于php - 覆盖 gettext .mo 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253985/
我有一个 Web 应用程序,其中有几个使用 gettext 的翻译。但是现在我已经对应用程序进行了重大重写,虽然大多数字符串是相同的,但也有相当多的字符串被显着更改或删除。 我使用 xgettext
我开始尝试在 C 程序中翻译一些最常用的文本条目 使用 gettext,但在深入研究时,我得到了一点 对所有不同的文件格式有点困惑 因为功能上似乎有些重叠? 我想了解不同格式的概述 .po .pot
gettext 是否有办法警告我有关未包装在 _() 或 N_() 中的字符串? 基本上有没有一种方法可以获取所有不与 xgettext 使用的关键字匹配的字符串的列表。所以,我想要: ! xgett
我们正在使用 Gettext 翻译我们的网站,但最近我们发现我们的翻译团队存在一些问题。 我们有一些像... Hi Bob this evening you win *three* red *ball
我尝试运行 Homebrew 程序,以便在 5 月份的 mac 上安装一些 unix 工具,但开始时遇到问题。我已经删除了 fink 和 macports 并安装了 Homebrew 软件。 (我正在
是否可以使两个或多个 msgid 与一个 msgstr 匹配? 例如,('list.empty')和('list.empty') null') 返回“还没有任何对象。” 如果我在 po 文件中这样写:
所以,我一直在查看 getText() 方法,并且了解到它返回一个 CharSequence。所以你不能只这样做: TextView myTextView = (TextView) findViewB
我正在尝试 gettext 并运行 msginit --locale=en --input=messages.po这就是我所看到的: [... blah ...] Is the following y
我们目前正在国际化我们的平台。平台的代码库和基于该平台构建的产品非常庞大,并且有许多硬编码字符串(除了我们将标签等外部化的 UI)。 我需要一些关于使用 gettext 或 Java i18n 的建议
我用 gettext翻译我的用户界面。我想写符号 %作为字符串中 UI 标题的一部分,但由于它具有特殊含义,因此无法按预期工作。如何转义百分比符号? 最佳答案 使用 %%逃脱%。 关于gettext
我发现字符串 (msgid) 的翻译为空,所有 gettext 工具都会将该字符串视为未翻译。 有解决方法吗?我确实希望有一个空字符串作为此项目的翻译。 最佳答案 由于这似乎是 gettext 规范中
所以我注意到似乎有两种方法可以获取相同的数据,我不确定是否有关于何时应该使用其中任何一种的指南(除了绕过 getResources 可以节省内存,如果你实际上不想多次使用该对象)。但除此之外,我想知道
例如在下面的代码中a和b和c是相等的。 EditText editText; editText = (EditText) findViewById(R.id.edttxt); editText.set
我想从 9 X 9 网格中排列的 81 个文本字段中获取 int 形式的文本,但不想单独进行。我试图将它放在一个循环中,但问题是文本字段名称必须以 a[i][j] 形式显示。 for (i = 0;
我想使用 angular-gettext 在我的应用程序上实现 i18n,我遵循了这个 http://lostechies.com/gabrielschenker/2014/02/11/angular
我遵循了在 Windows 上安装 gettext 的指导,当我在命令提示符中键入 xgettext --version 时,它说它已安装。但是当我想运行这个命令时: python manage.py
所以我正在尝试让 phpmyadmin 在 Windows 7 上运行,我已经完成并安装了所有正确的程序/文件(apache、mySQL、php 等),我在右边有 phpmyadmin 文件夹放在我的
我正在尝试设置 phpMyAdmin,并且我正在关注此 site ,但我收到一个关于“ fatal error :在第 177 行调用 C:\Users\Jarek\mywebsite\phpMyAd
我需要解析我的 php 文件,其中使用了多个文本域。我只想解析一个特定的域(其他域已经被翻译)如何让 Poedit 做到这一点? 是否需要编译绑定(bind)到某个文本域的mo文件?如果是的话,如何在
当我尝试在 vala 中使用 gettext 时,我没有收到来自 vala 的错误或警告,但我从 c 编译器收到以下错误: /usr/include/glib-2.0/glib/gi18n-lib.h
我是一名优秀的程序员,十分优秀!