我在Mac OSX上,我无法找到解析PHP代码并提取可翻译字符串的好解决方案.
我已经尝试过PoEdit,但是它失败了,并且出现了反详细的仲裁错误:
我也尝试过Virtaal,但是当浏览窗口出现之前点击"打开"事件时应用程序崩溃了.
我尝试过OmegaT,但我认为它不支持.po文件.我无法弄清楚它是如何工作的:(
我也试过xgettext.pl,它工作得很好,除了它没有检测到PHP dgettext()函数,并且似乎没有提供任何额外的选项来配置像poEdit那样的额外关键字.手册页在这里:http://www.unix.com/man-page/OSX/1/xgettext.pl/
到目前为止有解决方法
我正在用PHP构建一个网站,我用gettext处理翻译.到目前为止,一切都很完美,但网站在某些时候会向用户发送电子邮件,我无法收到要翻译的电子邮件.
我使用.mo文件翻译网站,并在会话中选择我将使用的语言:
$lang=$_SESSION['lang'];
switch ($lang){
case 'en':
setlocale(LC_ALL, 'en_US.utf8');
putenv('LC_ALL=en_US.utf8');
bindtextdomain("estribo", "locale");
bind_textdomain_codeset("estribo", 'UTF-8');
textdomain("estribo");
break;
case 'es':
putenv('LC_ALL=es_ES.utf8');
setlocale(LC_ALL, 'es_ES.utf8');
bindtextdomain("estribo", "locale");
bind_textdomain_codeset("estribo", 'UTF-8');
textdomain("estribo");
break;
}
Run Code Online (Sandbox Code Playgroud)
在locale/en_US.utf8/estribo.mo里面我已经翻译了所有的字符串,当我在页面的任何地方起诉它时它工作正常,例如:
<a href="index.php"><?echo _("Index");?></a>
Run Code Online (Sandbox Code Playgroud)
当我对变量(字符串)的内容做同样的事情时,它会完全转换为rpoblem,我稍后会通过邮件发送它而不是在屏幕上打印它.
这是我的电子邮件代码(checkout.php):
$message = _("Some text to send via email").": \n";
//a few more lines of
$message .= _("Some more text").": \n";
mail($email, $subject, $message);
Run Code Online (Sandbox Code Playgroud)
我到checkout.php的方式是通过ajax:
function () {
$.post('checkout.php', {
cart: this.cart.items,
total: this.format(this.total),
quantity: this.quantity,
shipping: $('select.shipping').val(),
tipopago: $('input.tipopago').val(),
customer: $('#checkout-form').serialize()
}, function (result) {
window.location.href …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的类中设置一些默认值,但不能使用gettext作为变量值
为什么这段代码会给我一个错误?
class Test
{
private $defaultoptions = array('HideOwnPosts' => false,
'HideClickedLinks' => false,
'AutoCommentLinks' => false,
'AutoCommentText' => gettext('exampletext'),
'AutoOpenCount' => 5);
}
Run Code Online (Sandbox Code Playgroud)
我只需要依赖用户语言的默认值我使用gettextfüri18n所以我喜欢用户也在这里.
我正在做一个项目,需要用户翻译。因此,我决定在php中使用gettext,但有时它可以正常工作。
所以我有一个名为lng的文件夹,在这个文件夹中,我有一个php文件,该文件调用我的lang文件来翻译我的页面。
这是代码:
<?php
if(isset($_GET['lang']) != '')
{
setcookie('lang',$_GET['lang'], time() + 365*24*3600, null, null, false, true);
$_SESSION['lang'] = $_GET['lang'];
$language = $_GET['lang'];
}
else if(isset($_SESSION['lang']) != '' )
{
$language = $_SESSION['lang'];
}
else if(isset($_COOKIE['lang']) != '')
{
$_SESSION['lang'] = $_COOKIE['lang'];
$language = $_SESSION['lang'];
}else{
$language = 'fr';
}
putenv("LANG=$language");
setlocale(LC_MESSAGES, $language);
$domain = 'trad';
bindtextdomain($domain, 'locale/');
textdomain($domain);
?>
Run Code Online (Sandbox Code Playgroud)
所以我可以检查我的$ _SESSION和$ _COOKIE,他给我“ en”或“ fr”没有问题,但是他不翻译我的文件,我也不知道为什么。
对于lng中的文件夹,它是:locale / en / LC_MESSAGES / trad.po(或.mo)。我尝试使用LC_ALL和LC_MESSAGES,但这不会改变结果。
我错过了一些东西或做错了什么吗?
非常感谢!
J.
我在POEdit的源关键字中设置了这个:
_
__
_e
_ex
_n
esc_attr_e
_x
_nc
Run Code Online (Sandbox Code Playgroud)
它工作但我在使用_n()
函数时只得到第一个字符串(Twenty Eleven主题):
<?php printf(_n('One Comment', '%s Comments', get_comments_number(), 'twentyeleven'), number_format_i18n(get_comments_number())); ?>
任何想法如何让它识别_n()
?这正是我遇到的问题,但没有解决方案:http://www.poedit.net/trac/ticket/307
我有一个使用php内置的Gettext/PO支持进行国际化的网站
echo _("string to be translated");
该网站处于测试阶段,肯定会有一些字符串无法翻译.为了帮助调试,有没有办法记录gettext错误,即PO没有在PO文件中找到任何匹配条目的日志字符串?
我使用Netbeans创建具有许多JTextField
元素的GUI .我想迭代遍历所有这些来调用setText
,文本将只有1,2,3 ......
private javax.swing.JTextField txt1;
private javax.swing.JTextField txt2;
private javax.swing.JTextField txt3;
private javax.swing.JTextField txt4;
private javax.swing.JTextField txt5;
private javax.swing.JTextField txt6;
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种在循环中执行此操作的方法,而不是setText
手动调用它们中的每一个.
可能是这样的:
public void getInfoJText2(){
Component[] children = jPanel1.getComponents();
for (int i = 0, j = 1; i < children.length; i++) {
if (children[i] instanceof JTextField) {
((JTextField) children[i]).setText(Integer.toString(j++));
}
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么处理这个?
我在我的应用程序中使用了角度gettext.我现在有两种语言,并希望根据用户的喜好在UI中切换语言.我有两种语言的按钮 - DE和EN.
在控制器方法中,我设置了语言:
$scope.changeLang = function (lang) {
gettextCatalog.currentLanguage = lang;
gettextCatalog.debug = true;
};
Run Code Online (Sandbox Code Playgroud)
在这样做时,UI中的语言似乎没有变化.使用angular gettext在UI中动态更改语言的正确方法是什么?
提前致谢.
使用Angular-gettext,我们从html中提取带注释的字符串,如下所示Gruntfile.js
:
grunt.initConfig({
nggettext_extract: {
pot: {
files: {
'po/template.pot': ['src/views/*.html']
}
},
},
})
Run Code Online (Sandbox Code Playgroud)
是否有可能从javascript文件中提取字符串?
我有一个案例,我正在从angularjs控制器生成字符串:
<textarea ng-model="generatedCSV"></textarea>
Run Code Online (Sandbox Code Playgroud)
CSV的标题行是:
"Full Name", "Email"
Run Code Online (Sandbox Code Playgroud)
哪些需要翻译成其他语言.
使用angular-gettext有一个很好的方法吗?
正在使用自定义对话框来接收用户输入,然后使用getter
方法将这些值传递给另一个活动.
但是当我将值传递给一个将字符串值输出到CSV
文件的方法时shipName
,analystName
等等,这些值在文件中显示为空," "
尽管我在对话框中输入了值.
我在调试菜单的表情窗口看着字符串值调试的问题,shipName
和analystName
而值表达式窗口从不更新.
我从中收集到输入传递的方法i不正确.
有谁知道为什么输出的值是空的?
这是使用的对话框类:
package ie.gmi.computing;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.renderscript.Sampler;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MyMessageDialog {
private Context context;
private EditText shipText, scientistNameText , scientistEmailText , volumeText , colourText ;
private String shipString, scientistNameString , scientistEmailString , volumeString , colourString ;
public AlertDialog displayMessage(Context context, String title, …
Run Code Online (Sandbox Code Playgroud) gettext ×10
php ×6
translation ×4
angularjs ×2
javascript ×2
po ×2
xgettext ×2
android ×1
arrays ×1
class ×1
csv ×1
getter ×1
java ×1
jquery ×1
jtextfield ×1
localization ×1
macos ×1
poedit ×1
swing ×1